我目前正在使用:
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !=subdomain.domain.com
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
似乎可以通过https加载我的主页面,通过http加载我的子域名,但仅限IE浏览器。它在chrome或firefox中不起作用。
当我进行此设置时:
RewriteCond %{HTTPS} = off
RewriteCond %{HTTP_HOST} !=subdomain.domain.com
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
它拒绝加载我的子域名。
有人可以向我解释一下https = off和https!= on之间的区别是什么?我做错了什么阻止它在firefox和chrome中工作?
答案 0 :(得分:0)
有人可以向我解释一下https = off和https!= on之间的区别是什么?我做错了什么阻止它在firefox和chrome中工作?
%{HTTPS} = off
错误。 Mod-rewrite在解析其规则方面并不是非常聪明,所以当它看到=
和off
之间的空格时,它会认为off
是重写条件标志,它会抛出一个错误,因为它不是有效标志。您并不真正需要=
或!=
内容:
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^subdomain\.domain\.com$ [NC]
足够好了,你的第一条规则也没问题。
RewriteCond %{HTTPS} !=on
和
RewriteCond %{HTTPS} !on
和
RewriteCond %{HTTPS} =off
和
RewriteCond %{HTTPS} off
都是一样的。
此处的问题不在于您的重写规则,而是您的服务器配置了SSL或某些浏览器设置(或者您需要清除缓存)。