.htaccess - 将子域和路径重定向到另一个域上的相同子域和路径

时间:2015-03-21 21:00:14

标签: apache .htaccess mod-rewrite redirect

我已经远远地看了解决方案,但未能找到解决我问题的解决方案。

我正在尝试实施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]

非常感谢任何帮助。提前谢谢!

1 个答案:

答案 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]