我想你也想要
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]....