首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.htaccess - https&http、www&non和IE 6-8中的三个子句

.htaccess - https&http、www&non和IE 6-8中的三个子句
EN

Stack Overflow用户
提问于 2014-10-20 21:38:30
回答 1查看 151关注 0票数 0

我正试图让一个.htaccess在我的站点上使用一个新的SSL设置/证书。它部分地起作用,但我似乎不能把我所追求的所有规则结合起来。用简单的英语来说,我要寻找的行为是:

  1. 如果浏览器是IE6-8,将用户发送到http.这包括将所有https请求发送到http。另外,将所有非www发送到www。基本上,如果是IE6-8,将其发送到http/www。
  2. 如果浏览器是其他任何内容,并且请求http,则发送到http。再一次,把所有的非www发送到www。基本上-任何http请求= http/www服务
  3. 如果浏览器是其他任何内容,并且请求https,则发送到https。再一次,把所有的非www发送到www。基本上,请求的任何https = https/www服务

现在我有:

代码语言:javascript
运行
复制
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请求之外,一切似乎都在正常工作。我遗漏了什么?!提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-21 10:27:53

我从here中发现,{HTTP_USER_AGENT}字符串似乎需要括号,而不是我以前使用的引号。我还在前几条规则中引入了一些否定。也许有一个更优雅的方法来实现最终的结果,但下面的规则似乎对我有用。

代码语言:javascript
运行
复制
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]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26475386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档