IIS 8.5中非WWW转WWW及HTTP转HTTPS重定向问题求助
实现IIS 8.5中非WWW转WWW且HTTP转HTTPS的统一重定向
我帮你完善了web.config里的URL重写规则,能完美实现你要的需求——不管用户输入http://example.com、http://www.example.com还是https://example.com,都会统一重定向到https://www.example.com,而且会保留原请求的路径部分。
完整的规则代码如下:
<rewrite> <rules> <rule name="Force WWW and SSL" enabled="true" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAny"> <!-- 匹配非WWW开头的主机名 --> <add input="{HTTP_HOST}" pattern="^www\.example\.com$" negate="true" /> <!-- 匹配HTTPS未开启的情况 --> <add input="{HTTPS}" pattern="on" negate="true" /> </conditions> <action type="Redirect" url="https://www.example.com/{R:1}" redirectType="Permanent" /> </rule> </rules> </rewrite>
关键部分解释:
stopProcessing="true":确保这个规则处理完成后,不会再执行后续的重写规则,避免不必要的冲突。match url="(.*)":匹配请求的所有URL路径(比如/about、/product/123这类),{R:1}会把匹配到的路径带到重定向后的URL里,保证用户访问的具体页面不会丢失。- 条件部分:用
MatchAny逻辑,只要满足以下任意一个条件就触发重定向:- 主机名不是
www.example.com(也就是用户输入了不带WWW的域名) - HTTPS未开启(也就是用户用HTTP协议访问)
- 主机名不是
redirectType="Permanent":返回301永久重定向,对搜索引擎SEO更友好,也能让浏览器缓存重定向规则,提升后续访问效率。
注意事项:
- 确保你的IIS 8.5已经安装了URL Rewrite模块,如果没装的话规则不会生效,可以通过IIS管理器的“模块”功能查看,或者直接在服务器上安装该模块。
- 把代码里的
example.com替换成你自己的实际域名,别忘了正则表达式里的.要转义成\.,否则会匹配任意字符导致规则出错。 - 测试的时候建议清空浏览器缓存,避免旧的重定向缓存干扰测试结果。
内容的提问来源于stack exchange,提问作者Sherif El Sherif
相关产品推荐
相关产品推荐

