.htaccess将子域重写为maindomain

时间:2013-04-18 22:42:50

标签: apache .htaccess mod-rewrite

过去几个小时我一直在学习.htaccess重写。我无法做对。我在SO上读过很多帖子,但无法解决我的问题。这是我的情况:

www.example.com 

重定向到

example.example2.com

现在我想在网址中显示原始域名。我有这个:

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多站点配置。我的问题似乎可以通过herehere解释的.htaccess说明来解决。因此我在这里发布了它,而不是在SO的Drupal部分。 Drupal多站点配置的想法是将所有流量定向到分期付款,然后根据请求进行区分。

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

  3. 我没有从多站点配置开始。我会按照多站点的说明将example.exampl2.com移动到www.example2.com/sites/www.example.com。同时该网站位于example.example2.com。但这意味着我需要维护两个分期付款,这不是首选。所以我开始试图让example.example2.com看起来像www.example.com。然后至少访客永远不会注意到差异。

  4. 我现在有了这个

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

    它导致循环。

2 个答案:

答案 0 :(得分:0)

首先您的要求已被撤销。您可能希望将example.example2.com重定向到www.example.com

第二件事只有mod_proxy支持才能实现您的目标。在httpd.conf中启用mod_proxy,然后通过httpd.conf启用mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_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中的代理支持。

答案 1 :(得分:0)

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

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

现在,有一个循环重写从www.example.comexample.example2.com再返回。要打破这种无限循环,必须添加终止条件,这将停止规则。使用

添加规则前缀
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

如果一切正常,您可以将R更改为R=301

在启用301的情况下

从不测试,请参阅此答案 Tips for debugging .htaccess rewrite rules 详情。