我需要从mydomain.com或www.mydomain.com等主域重定向到sub.mydomain.com - 这需要适用于所有请求,所以mydomain.com/whatever转到sub.mydomain.com /不管。
我试过这个,只适用于主域的非www:
RewriteCond %{HTTP_HOST} ^mydomain.com [NC]
RewriteRule ^(.*)$ http://sub.mydomain.com/$1 [L,R=301]
答案 0 :(得分:3)
您也可以将它们压缩为一个规则:
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^ http://sub.example.com%{REQUEST_URI} [R=301,L]
马克关于/
的观点是一个重要的考虑因素。由于您在.htaccess
中定义规则,输入(以及通过关联捕获的反向引用)不会以前导斜杠开头,因此在这种情况下您实际上需要一个明确的(就像您所拥有的那样)。
因为我们只想要整个路径,所以在这种意义上使用%{REQUEST_URI}
更可靠,因为它总是会有一个前导斜杠,无论我们使用规则的上下文如何。
答案 1 :(得分:2)
另外添加:
RewriteCond %{HTTP_HOST} ^www\.mydomain.com\.com$ [NC]
RewriteRule ^(.*)$ http://sub.mydomain.com$1 [R=301,L]
还有一点需要注意的是,您可能不希望/
中的最后RewriteRule
,因为它会向重定向的网址添加两个斜杠(例如http://mydomain.com/foo.html
变为{ {1}})。