站点子部分的多个域

0 php apache dns .htaccess mod-rewrite

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

示例:
www.domain.com网站顶级
www.domain2.com指向www.domain.com/abc
www.domain3.com指向www.domain.com/def
等.

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

我花了很多时间环顾四周,却找不到适合自己的东西.我希望使用域名伪装,因为它使用了框架.常规重定向显然很容易指向正确的东西,但它们会更改地址栏中的URL.

有没有办法实现这个目标?

编辑:
我已经添加了下面的马克建议的别名,但任何人都可以阐明我如何使用mod_rewrite使这项工作?

Mar*_*ich 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
Run Code Online (Sandbox Code Playgroud)

如果您已正确完成,则应在每个域中看到完全相同的内容,而不进行任何重定向.

你接下来要做的是一个架构决策.您可以使用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]
Run Code Online (Sandbox Code Playgroud)

这是一个高级概述.如果您需要有关该过程特定部分的详细信息,请评论我的答案.