如何始终重定向到https:// www和https://子域?

时间:2016-03-11 21:14:08

标签: .htaccess redirect https

我想将所有内容重定向到以https://wwwhttps://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会被重写?

0 个答案:

没有答案