Isapi Rewrite:从www到非www,同时从http到https

时间:2011-02-01 18:34:26

标签: isapi-rewrite

我已经尝试了一切!

这样:

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

每个子文件夹之后和查询!

1 个答案:

答案 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] ....否则将会进一步规则(经过),