1

最近几个小时我一直在学习 .htaccess 重写。我一直没能把它弄好。我已经阅读了很多关于她的帖子,但无法解决我的问题。这是我的情况:

www.example.com 

重定向到

example.example2.com

现在我想在 URL 中显示原始域。我有这个:

RewriteCond %{HTTP_HOST} ^example\.example2\.com/$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

这行不通。我仍然看到 example.example2.com 而不是 www.example.com

.htaccess 文件位于子域文件夹的顶层。

我应该再次指出,这对我来说是新的,这是我从网上找到的例子中得出的。有人能告诉我如何做到这一点吗?

非常感谢

编辑:

  1. 我正在尝试安装 Drupal 多站点配置。我的问题似乎可以通过 .htaccess 指令解决,如此此处所述。因此,我将其发布在这里,而不是 SO 的 Drupal 部分。Drupal 多站点配置的想法是将所有流量引导到分期付款,然后根据发出的请求进行区分。

  2. 我无法直接控制从 www.example.com 到 example.example2.com 的重定向。我的托管公司提供直接重定向或通过框架。我可以在表格中检查任何一个。我不知道他们在做什么。通过直接重定向,URL 将从 更改www.example.comexample.example2.com。(现在是 Drupal 安装的位置)如果我选择框架,则 URL 保持不变(当然),但将鼠标悬停在链接上仍会显示 example.example2.com 身份。

  3. 我没有从多站点配置开始。我将example.exampl2.com按照www.example2.com/sites/www.example.com多站点的说明进行移动。与此同时,该网站位于example.example2.com. 但这意味着我有两期要维护,这不是首选。所以我开始尝试example.example2.com看起来像www.example.com。那么至少游客永远不会注意到差异。

我现在有这个

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]
RewriteCond %{HTTP_HOST} ^example\.example2\.nl$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R]

它会导致一个循环。

4

2 回答 2

0

首先,您的要求颠倒了。您可能希望重定向example.example2.comwww.example.com.

您尝试做的第二件事只有在 mod_proxy 支持下才能实现。启用 mod_proxy,httpd.conf然后启用 mod_rewrite 和 .htaccess httpd.conf,然后将此代码放在您.htaccessDOCUMENT_ROOT目录下:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} ^example\.example2\.com$ [NC]
RewriteRule ^ http://www.example.com%{REQUEST_URI} [L,P]

请注意,P此处的标志用于 mod_rewrite 中的代理支持。

于 2013-04-18T22:54:34.620 回答
0

您的 .htaccess 几乎是完美的。只有一个问题,HTTP_HOST只有主机,没有尾部斜杠/RewriteCond应该是

RewriteCond %{HTTP_HOST} ^example\.example2\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R]

现在,有一个循环重写www.example.com来回example.example2.com。要打破这个无限循环,您必须添加一个终止条件,以停止规则。在规则前面加上

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

当一切按预期工作时,您可以更改RR=301.

永远不要在启用的情况下进行测试,有关详细信息301,请参阅此答案 提示调试 .htaccess 重写规则

于 2013-04-18T23:24:21.867 回答