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