2011-01-19 94 views
0

这是交易。基本上我有多个域,我希望其中一个域指向该网站的常规基地,但其他域指向该网站的一个子网段而不是修改地址栏中的网址。这个想法是,每个额外的域名都是为他们的部分打上标签。网站子分区的多个域

例子:
www.domain.com的网站
www.domain2.com点顶层到www.domain.com/abc
www.domain3.com点www.domain.com/def

另请注意,在示例中'abc'和'def'不是文件系统上的真实目录,而是在数据库中定义的虚拟区域。

我花了相当多的时间环顾四周,找不到适合的东西。我做不是想要使用域隐形,因为它使用框架。定期的重定向显然很容易指向正确的东西,但他们改变了地址栏中的网址。

有什么办法可以做到这一点?

编辑:
我已经添加了别名马克以下建议,但任何人都可以摆脱对我怎么可能再使用mod_rewrite,使这项工作光?

+0

你有权访问DNS服务器吗? – 2011-01-19 05:42:11

+0

我可以编辑dns记录,是的。 – dev 2011-01-19 05:43:10

回答

5

首先,您的DNS记录需要指向Web服务器的IP。

其次,您必须设置Apache以从同一个VirtualHost为多个域提供服务。启用mod_alias,然后在VirtualHost定义中使用ServerAlias指令。例如:

ServerName www.domain.com 
ServerAlias domain.com www.domain2.com domain2.com www.domain3.com domain3.com 

如果你正确地做到这一点,你应该看到在每个域完全相同的内容,没有任何重定向。

接下来你做什么是一个架构决定。您可以使用mod_rewrite对基于域的URL路由规则进行硬编码,也可以使用PHP根据$ _SERVER ['HTTP_HOST']的值执行路由。

一个mod_rewrite的解决方案可能涉及添加这样的事情.htaccess文件:

RewriteEngine On 

RewriteCond %{HTTP_HOST} domain2\.com$ 
RewriteRule ^(.*)$ /abc/$1 [L] 

RewriteCond %{HTTP_HOST} domain3\.com$ 
RewriteRule ^(.*)$ /def/$1 [L] 

这是一个高层次的概述。如果您需要详细说明流程的某个部分,请评论我的答案。