我想将所有内容重定向到以 https://www
或 https://subdomain
开头的网址 . 如果它是没有子域的URL,那么我希望它始终重定向到 https://www
版本 . 如果有一个非www子域,那么我希望它始终重定向到 https://subdomain
版本 .
我拥有的第一件事就是将所有内容重定向到 https://www
. 这是:
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
我认为唯一的问题是它会将非www子域重定向到多级 https://www.subdomain
. 那么我在第二条规则中添加了第二个条件:
RewriteCond %{HTTPS} off
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
这似乎适用于我想要的一切问题 . 如果有一个子域和域之后的东西就像一个目录那么它将无法工作 . 例如:
sub.site.com
将正确重定向到:
https://sub.site.com
但是这个:
sub.site.com/test/
不会重定向到:
https://sub.site.com/test/
那么为什么在像/ test /目录这样的域之后有什么东西不能重写这个最后的URL?