【问题标题】:Mod rewriting www.domain.com/branch to www.website.com/ and the oppositeMod将www.domain.com/branch重写为www.website.com/,反之亦然
【发布时间】:2013-03-20 09:50:52
【问题描述】:

我有一个特殊的需求,我想对使用 .htaccess mod_rewriting 的正确解决方案有一些见解。

基本上我需要将一个域映射到另一个域的子文件夹。所有对 www.website.com 的请求都应重定向到 www.domain.com/branch 上的内容,同时将 www.website.com 保留在浏览器的地址栏中。对 www.website.com/subpage 的请求也应重定向到 www.domain.com/branch/subpage,因此 www.website.com/subpage 的 URL 被保留。

对 www.domain.com/branch 的请求应重写为 www.website.com,对 www.domain.com/branch/subfolder 的请求应重写为 www.website.com/subfolder。

我正在使用表达式引擎模板系统,但这应该不是问题。 正确的 mod_rewriting 是什么?

稍后我将不得不“嗅探”网址,以便为相同的内容提供不同的徽标和颜色,但我想我可以使用 javascript 来制作它吗?

到目前为止,我一直在用这样的说明来探索这个问题:

RewriteCond %{HTTP_HOST} ^(www\.)?website.com\.com [NC]
RewriteRule ^/(.*) /branch/$1 [L]

但整个事情似乎要复杂得多…… 专家能否正确地指出我使用 mod_rewrite 获得所需的一切?

【问题讨论】:

  • website.com 和 domain.com 是否托管在同一台服务器上?如果是,它们是否在同一个虚拟主机中(它们是否都指向服务器上的同一个文件夹)?
  • 是的,它们都在同一台服务器上,并且都指向同一个文件夹。由于表达式引擎使用动态路径,例如 domain.com/branch,我不能只将请求指向 www.website.com 指向 www.domain.com/branch ......使用 vhost,它会引发服务器错误

标签: apache url mod-rewrite


【解决方案1】:
RewriteEngine On
RewriteBase /

#internally redirect request for website.com to the /branch folder
RewriteCond %{HTTP_HOST} ^(www\.)?website\.com [NC]
RewriteCond %{REQUEST_URI} !^/branch
RewriteRule ^(.*) /branch/$1 [L]

# redirect direct request for /branch to the website.com
RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com [NC]
RewriteRule ^branch/(.*) http://www.website.com/$1 [R=302,L]

我假设您将这些规则放入 htaccess,否则您需要在 RewriteRules 中使用前导斜杠

【讨论】:

  • 不幸的是,它引发了服务器错误……但它必须与我的 .htaccess 规则有关,这些规则显然是从表达式引擎配置中删除 index.php 所必需的……如果您不介意看看,.htaccess 文件在这里:dl.dropbox.com/u/2899749/htaccess.txt
  • 你把规则放在哪里了?您需要将它们放在其他重写规则的前面。
  • 无论我把它们放在哪里......我在页面顶部尝试过,但仍然出现错误。谢谢。
猜你喜欢
  • 2013-12-27
  • 2017-01-26
  • 2020-12-29
  • 2013-09-21
  • 1970-01-01
  • 2022-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多