IIS配置HTTPS下www跳转非www时https://www域名跳转失效求助
问题根因
- 规则执行顺序错误:IIS URL重写规则按从上到下的顺序执行,当前你将WWW跳转规则放在HTTP转HTTPS规则之前,且WWW跳转规则的
stopProcessing设置为false,跳转完成后仍会执行后续规则,容易引发逻辑冲突。 - 规则生效配置缺失:第一个WWW跳转规则未显式配置
enabled="true",可能导致规则未全局生效,无法匹配HTTPS场景下的WWW域名请求。 - 前置依赖检查:需先确认你的SSL证书同时覆盖
www.example.com和example.com两个域名,否则访问https://www.example.com时会先触发证书错误,还未到重写规则执行阶段就会中断请求。
修正后的配置
<rule name="HTTP to HTTPS" enabled="true" stopProcessing="false"> <match url="(.*)" ignoreCase="false" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{HTTPS}" pattern="off" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule> <rule name="WWW to Non-WWW" enabled="true" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" /> </conditions> <action type="Redirect" url="https://{C:2}{REQUEST_URI}" redirectType="Permanent" /> </rule>
配置说明
- 调整规则顺序:先执行HTTP转HTTPS逻辑,再执行WWW转非WWW逻辑,确保所有请求先统一到HTTPS协议再处理域名逻辑,避免多次跳转。
- 修正
stopProcessing配置:HTTP转HTTPS规则设置为stopProcessing="false",协议跳转完成后继续执行后续域名跳转规则;域名跳转规则设置为stopProcessing="true",跳转完成后终止规则执行,避免逻辑循环。 - 两个规则都显式添加
enabled="true",确保规则全局生效。
测试注意事项
修改配置后需要重启IIS站点,测试时建议使用浏览器无痕模式,避免本地缓存的301永久重定向规则影响测试结果。
内容的提问来源于stack exchange,提问作者Jacques kriel
相关产品推荐
相关产品推荐

