Apache .htaccess将子域重写为maindomain

Apache .htaccess将子域重写为maindomain,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,过去几个小时我一直在学习.htaccess重写。我没能把它弄对。我读了很多关于她的帖子,但都不能解决我的问题。这就是我的情况: www.example.com 重定向到 example.example2.com 现在我想在URL中显示原始域。我有这个: RewriteCond %{HTTP_HOST} ^example\.example2\.com/$ [NC] RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301] 这不管用。我仍然

过去几个小时我一直在学习.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文件位于子域文件夹的顶层

我应该再次指出,这对我来说是新的,这是我从互联网上找到的例子中得出的结论。有人能告诉我怎么做才对吗

非常感谢

编辑:

  • 我正在尝试安装Drupal多站点配置。我的问题似乎可以通过.htaccess指令解决,如解释和所示。正因为如此,我把它贴在这里,而不是在SO的Drupal部分。Drupal多站点配置的思想是将所有通信量定向到该安装,然后根据请求进行区分

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

  • 我不是从多站点配置开始的。我将移动
    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]
    

    它会导致一个循环。

    首先,您的需求发生了逆转。您可能想将
    example.example2.com
    重定向到
    www.example.com

    第二件事您正在尝试的操作将仅通过mod_代理支持实现。在
    httpd.conf
    中启用mod_代理,然后通过
    httpd.conf
    启用mod_重写和.htaccess,然后将此代码放在
    文档根目录下的
    .htaccess
    中:

    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中的代理支持。

    您的.htaccess几乎完美无瑕。只有一个问题,
    HTTP\u HOST
    只是主机,没有尾随斜杠。应该是

    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]
    
    当一切正常时,您可以将
    R
    更改为
    R=301

    切勿在启用
    301
    的情况下进行测试,请参阅此答案
    详细信息。

    Hm,我不认为需要。是相反的,但我会详细说明一下。没有人知道example.example2.com,但我在那里安装了我的CMS;www.example.com将传达给用户。www.example.com上没有安装任何内容。这只是我拥有的一个领域。没有人需要知道example.example2.com,所以我想把它隐藏起来。所以客户的请求只针对WWW.Domain?那个么你们需要在哪里隐藏示例域呢?我将从一个URL服务几个网站。根据重定向到子文件夹的情况,需要进行重写。网站的“客户”或用户不需要知道这一点。他只会看到请求的URL。因此,如果我理解正确,您只会向客户公开一个域。但我不明白谁和如何访问示例域:
    example.example2.com
    ?没有人会直接访问example.example2.com。构建的URL只是一个技术解决方案,对访问者来说并不重要。这就是我需要重写的原因。由系统构建的URL展示了技术设计,但这不一定是向用户/访问者公开系统的方式。所以有很多关于重写URL的问题。我试过了。我知道重写正在进行,因为现在我有另一个问题。重定向现在在两个域之间跳转。FF告诉我“Firefox检测到服务器正在以一种永远不会完成的方式重定向对此地址的请求。”也许我试图实现的解决方案并不能解决我的问题。请阅读我给阿努巴瓦的评论。谢谢你的帮助。@Sigur看来,你有一个无休止的重写循环。请查看更新的答案。如果这没有帮助,请在您的问题中显示另一条规则。我已经在.htaccess文件中添加了有关重定向和规则的更多信息