使用DNS和/或Mod_Rewrite进行URL屏蔽?

时间:2009-12-26 04:18:43

标签: mod-rewrite redirect dns

我想设置一个系统,以便[mydomain.com/params]等多个自定义域重定向到[myapp.com/mydomain.com/params]。我可以使用仅DNS设置吗?

我猜这是不可能的,所以将mydomain1.com,mydomain2.com,mydomain3.com等指向一个IP地址然后使用Mod_Rewrite将每个请求(无形地)指向myapp.com/mydomain#.com/params?每个重定向的URL都会导致从集中托管的CMS加载的内容。

非常感谢任何建议,资源和/或解决方案!

2 个答案:

答案 0 :(得分:4)

以下是解决方案:

  1. 将所有虚荣域的DNS地址记录设置为相同的IP地址(因此d1.com,d2.com,d3.com等都将DNS A记录设置为一个IP或FQDN)
  2. 使用IP作为域
  3. ,使用一个VirtualHost设置服务器
  4. 在VirtualHost的根目录中,创建一个设置mod_rewrite的.htaccess
  5. 对.htaccess:
  6. 中的mod_rewrite使用以下内容
    Options +FollowSymLinks
    
    RewriteEngine On
    
    RewriteCond %{HTTP_HOST} (.*) [NC]
    RewriteRule (.*) http://myapp.com/%1/$1 [P,R=301,L]
    
    

    %1 =请求的域名,www.d1.com或d1.com
    $ 1 =虚荣URL后面的其余网址(d1.com/everyting/else

    此配置无形地重定向所有请求。

    示例:

    d1.com => returns content from => myapp.com/d1.com/
    
    www.d1.com => returns content from => myapp.com/www.d1.com/
    
    d1.com/blog/post/1 => returns content from => myapp.com/d1.com/post/1
    

答案 1 :(得分:2)

不,你不能只使用DNS。

如果每个域都可以独立运行(www.domain.com),这将是一个简单的多站点设置,不需要mod_rewrite,只需要指向每个站点的一堆<virtualHost>指令。

如果您完全需要您描述的设置(http://www.hostname.com/www.2ndhostname.com/directoryname),则需要一个<VirtualHost>将所有域作为别名,并使用基于mod_rewrite的重定向将传入请求指向正确的目录。