2009-12-26 70 views
2

我想设置一个系统,以便像[mydomain.com/params]这样的多个自定义域名将重定向到[myapp.com/mydomain.com/params]。我可以使用只有DNS设置吗?用DNS和/或Mod_Rewrite进行URL掩码?

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

任何建议,资源和/或解决方案将不胜感激!

回答

4

这里的解决方案:

  1. 所有虚荣域相同的IP地址(所以d1.com,d2.com,d3.com等方面都有着DNS A记录设置设置DNS地址记录例如,一个IP或FQDN)
  2. 安装程序,使用IP作为域
  3. 在那个虚拟主机的根目录下有一个虚拟主机服务器,创建的.htaccess,设置了mod_rewrite的
  4. 使用的mod_rewrite的在下面.htaccess:
 
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 
2

不,你不能只使用DNS。

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

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

+0

感谢您的快速反应。问题是这需要自动扩展 - 这意味着我的PHP代码需要能够即时创建/销毁域记录(对不起,我没有说清楚)。 我可能会做的是有两个域名:myapp.com + myapp2.com 然后可以设置每个域名#.com DNS记录无形地重定向到域名.com.myapp2.com? myapp2.com的服务器将设置为通配符子域名,然后使用Mod_Rewrite访问myapp.com/domain.com/ 声音听起来似乎合理吗? 我是新来的DNS设置,并试图学习... – 2009-12-26 04:44:06

+0

我不完全确定你打算做什么,但它听起来太复杂了,我的耳朵。你有多少台服务器?你需要多少台服务器*?将所有域映射到一台服务器是不够的,让mod_rewrite把剩下的部分整理出来? – 2009-12-26 04:48:34

+0

我同意,这似乎太复杂了。我正在使用Rackspace CloudSites托管中央应用程序(它很便宜并允许按需扩展),但不幸的是,它不允许进行任何高级配置。我正在使用Rackspace CloudServers(即时部署,非常便宜,可伸缩,根访问)来处理更高级的自定义。我之前已经设置了一个类似的配置(CloudServer上的通配符子域重定向到CloudSites上的某个站点),但DNS问题现在又添加了一层复杂性。 – 2009-12-26 04:57:40