IIS站点根页强制跳转到HTTP,如何排除根页实现其余页面HTTPS重定向
可用配置规则
<rule name="Redirect to HTTPS except root" enabled="true" stopProcessing="true"> <match url="(.*)" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTPS}" pattern="^OFF$" /> <!-- 排除根路径(仅匹配空或单斜杠的情况) --> <add input="{REQUEST_URI}" pattern="^/?$" negate="true" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Found" /> </rule>
规则逻辑说明
- 核心通过
negate="true"实现排除逻辑:当请求路径是根路径(REQUEST_URI为空或者仅为/)时,条件不满足,不会触发HTTPS跳转,避开首页硬编码跳转导致的死循环 - 其余所有非根路径的HTTP请求,都会被强制重定向到对应的HTTPS地址
redirectType="Found"对应302临时重定向,测试确认规则生效无异常后,可以改为Permanent(301永久重定向)减少后续请求开销- 如果需要同时排除带查询参数的根路径请求(例如
http://example.com?from=wechat),可以将条件的pattern修改为^/?(\?.*)?$即可
之前配置失效原因
IIS重写模块的{URL}变量仅返回请求的路径部分(不含域名),你之前的规则中加入了域名example.com的匹配逻辑,所以永远无法命中,规则不会生效。
内容的提问来源于stack exchange,提问作者Gryu
相关产品推荐
相关产品推荐

