我已经尝试了一切!
这样:
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^.*$ https://%1/$1 [R=301,L]
只有在我没有将http放在开始
的情况下才有效如何使它工作: 如果有http重定向到https 如果有www重定向到非www 同时也是当然的
http://www.domain.com -> https://domain.com
www.domain.com --> https://domain.com
http://domain.com --> https://domain.com
每个子文件夹之后和查询!
答案 0 :(得分:2)
我假设你也想要
https://www.domain.com -> https://domain.com
你有没有得到这个工作?我无法让测试https网站仔细检查这个。
与此同时,我确实看到了一些事情,所以请尝试这个(这假设是isapi_rewrite v3,看起来你正在使用):
RewriteCond %{HTTP_HOST} ^www\.(.*)
RewriteRule ^(.*)$ https://%1$1 [NC,R=301]
这会在RewriteRule中添加括号以捕获$ 1的url。
然后不需要%1 $ 1之间的斜线,因为在$ 1捕获开始时有一个斜杠。
我喜欢使用NC不区分大小写,而R规则是最终规则,因此您不需要最后一个L。
修改强>
我重新回答了这个问题,在上面的原始答案中更新/澄清了几个次要问题。这些不会改变上面的主要解决方案,即添加括号来进行捕获。
原件:
然后不需要%1 $ 1之间的斜线,因为在$ 1捕获开始时有一个斜杠。
这实际上取决于规则的位置,以及是否有RewriteBase
语句。常见的共享主机配置在规则中没有前导斜杠,因此需要使用斜杠。如果您不确定,可以尝试使用和不使用。
原件:
我喜欢使用NC不区分大小写,而R规则是最终规则,因此您不需要最后一个L。
事实证明,将L与R表示为[NC,R=301,L]
是有用的。在问题出现前一年,我实际上曾在Helicon Tech问过这个问题,但却忘了它:
http://www.helicontech.com/forum/14826-Does_Redirect_need_Last.html
从他们的答复:
...我们在301重定向规则中使用[L]的原因是重定向不是这样 立即。即使规则匹配,除非你有[L] ....否则将会进一步规则(经过),