【问题标题】:Multiple domains for site subsections站点子部分的多个域
【发布时间】:2011-06-11 13:14:52
【问题描述】:

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

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

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

我花了很多时间环顾四周,找不到任何适合这个的东西。我确实想使用域隐藏,因为它使用框架。常规重定向显然很容易指向正确的东西,但它们会改变地址栏中的 url。

有没有办法做到这一点?

编辑:
我已经按照 Mark 下面的建议添加了别名,但是任何人都可以阐明我如何使用 mod_rewrite 来完成这项工作吗?

【问题讨论】:

  • 您可以访问 DNS 服务器吗?
  • 我可以编辑 dns 记录,是的。
  • 对于您的额外帮助请求延迟响应,我们深表歉意。不幸的是,在不了解您的具体情况的情况下,很难给您一个完整的解决方案,但我确实编辑了我的答案给您一个提示。如果您愿意分享更多详细信息,请通过 markeirich.com/contact 与我联系。否则,您将需要在线学习一些 mod_rewrite 示例,或者请人。

标签: php apache .htaccess mod-rewrite dns


【解决方案1】:

首先,您的 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]

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

【讨论】:

  • 首先 - 感谢您的回答。很高兴知道这应该是可能的。稍微详细一点会很好。我明白你在说什么,但我需要一些细节。如果您可以提供一个示例 指令会有所帮助。从那里使用 mod_rewrite 或 php 很好,但我不确定我到底需要做什么 - 部分原因是我不确定这与 Alias 有什么关系。
  • 感谢别名位。这是我非常期待的。我最不清楚的是如何使用 mod_rewrite 将 domain2.com 的所有请求映射到 domain1.com/abc 和 domain3.com 到 domain1.com/def 而不更改地址栏中的 url。有可能我可以将这样的东西合并到我的 php 代码中,但我宁愿不这样做,因为路由已经完成了足够的情况,将其分开会使事情变得容易得多。
猜你喜欢
  • 2014-12-04
  • 1970-01-01
  • 1970-01-01
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多