这是交易。基本上我有多个域名,我希望其中一个域名指向网站的常规基础,但其他域名指向网站的子部分没有修改网址地址栏。我们的想法是,每个额外的域都为其部分打上了品牌。
例:
www.domain.com网站顶级
www.domain2.com指向www.domain.com/abc
www.domain3.com指向www.domain.com/def
等
另请注意,在示例中,'abc'和'def'不是文件系统上的真实目录,而是数据库中定义的虚拟区域。
我花了很多时间环顾四周,却找不到适合自己的东西。我不想要使用域名伪装,因为它使用了框架。常规重定向显然很容易指向正确的东西,但它们会更改地址栏中的URL。
有没有办法实现这个目标?
修改
我已经添加了下面标记为Mark的别名,但是有人能说明我如何使用mod_rewrite来实现这个功能吗?
答案 0 :(得分: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]
这是一个高级概述。如果您需要有关该过程特定部分的详细信息,请评论我的答案。