我已经远远地看了解决方案,但未能找到解决我问题的解决方案。
我正在尝试实施301重定向,将用户重定向到另一个域,其子域和路径与他们请求的相同。
即。如果他们降落在sub1.domain1.com/page.php上,他们会被重定向到sub1.domain2.com/page.php。重定向应该捕获任何子域。
我已经在/ var / www / html目录中将AllowOverride设置为All并尝试了以下但没有运气:
#RewriteEngine On
#RewriteCond %{HTTP_HOST} (.*).domain1.com
#RewriteRule (.*) http://%1.domain2.com/$1 [R=301,QSA,L]
非常感谢任何帮助。提前谢谢!
答案 0 :(得分:1)
正如评论中提到的w3d,需要从每行的开头删除#
符号才能使规则生效。
另外,您应该更新:
RewriteCond %{HTTP_HOST} (.*).domain1.com
...所以它现在看起来像这样:
RewriteCond %{HTTP_HOST} ^(.+)\.domain1\.com$
^
符号表示值的开头,$
表示值的结束。
将(.*)
替换为(.+)
的原因是因为从理论上讲,当您使用.domain1.com
时,您告诉您的服务器(.*)
是有效的域名(当事实上,在第一个点之前至少应该有一次字符。)
反斜杠的原因是为了逃避RewriteCond
内的点。有关重写条件和规则的详细信息,请参阅this page。
最终你可能会得到这样的结论:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.+)\.domain1\.com$
RewriteRule ^(.*)$ http://%1.domain2.com/$1 [R=301,QSA,L]