我想将所有内容重定向到以https://www
或https://subdomain
开头的网址。如果它是没有子域名的网址,那么我希望它始终重定向到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会被重写?