我需要从像 mydomain.com 或 www.mydomain.com 这样的主域重定向到 sub.mydomain.com - 这需要适用于所有请求,所以 mydomain.com/whatever 转到 sub.mydomain.com/whatever。
我试过这个,它只适用于主域的非 www:
RewriteCond %{HTTP_HOST} ^mydomain.com [NC]
RewriteRule ^(.*)$ http://sub.mydomain.com/$1 [L,R=301]
最佳答案
您也可以将它们压缩为一个规则:
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^ http://sub.example.com%{REQUEST_URI} [R=301,L]
马克关于
/
的观点是一个重要的考虑因素。由于您在 .htaccess
中定义规则但是,输入(以及通过关联捕获的反向引用)不会以前导斜杠开头,因此在这种情况下您实际上确实需要一个明确的斜杠(就像您曾经的那样)。因为无论如何我们只想要整个路径,所以使用
%{REQUEST_URI}
在这个意义上更可靠,因为它总是有一个前导斜杠,无论我们在什么上下文中使用规则。
关于.htaccess - 301 从主域(www 和非 www)重定向到子域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3534258/