Apache .htaccess将子域重写为maindomain
过去几个小时我一直在学习.htaccess重写。我没能把它弄对。我读了很多关于她的帖子,但都不能解决我的问题。这就是我的情况: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] 这不管用。我仍然
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文件位于子域文件夹的顶层
我应该再次指出,这对我来说是新的,这是我从互联网上找到的例子中得出的结论。有人能告诉我怎么做才对吗
非常感谢
编辑:
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文件中添加了有关重定向和规则的更多信息