我正试图让一个.htaccess在我的站点上使用一个新的SSL设置/证书。它部分地起作用,但我似乎不能把我所追求的所有规则结合起来。用简单的英语来说,我要寻找的行为是:
现在我有:
RewriteEngine on
#Redirect all http MSIE 6-8
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} "MSIE [6-8]" [NC]
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#Redirect all https MSIE 6-8
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_USER_AGENT} "MSIE [6-8]" [NC]
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#Send http to http, non-www to www
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#Send https to https, non-www to www
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
除了IE6-8上的https/www请求之外,一切似乎都在正常工作。我遗漏了什么?!提前感谢!
发布于 2014-10-21 10:27:53
我从here中发现,{HTTP_USER_AGENT}字符串似乎需要括号,而不是我以前使用的引号。我还在前几条规则中引入了一些否定。也许有一个更优雅的方法来实现最终的结果,但下面的规则似乎对我有用。
RewriteEngine on
#Send http to http, non-www to www, checking that USER_AGENT isn't IE 6-8
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} !(MSIE\ [6-8]) [NC]
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#Send https to https, non-www to www, checking that USER_AGENT isn't IE 6-8
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_USER_AGENT} !(MSIE\ [6-8]) [NC]
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
#Redirect all http, MSIE 6-8, non-www to www
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_USER_AGENT} (MSIE\ [6-8]) [NC]
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#Redirect all https, MSIE 6-8, non-www to www
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_USER_AGENT} (MSIE\ [6-8]) [NC]
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
#Redirect all https MSIE 6-8, www to www
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_USER_AGENT} (MSIE\ [6-8]) [NC]
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
https://stackoverflow.com/questions/26475386
复制相似问题