You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS已禁用重写规则仍生效 新配置重定向不触发问题排查

异常重定向触发原因
  • 核心原因是你当前编写的URL重写规则存在多处语法错误,整个rewrite配置节点无法被IIS解析加载,节点内的<clear />指令、所有自定义规则全部不生效,IIS直接执行上层继承的旧重定向规则:
    • 所有<match>、<action>节点的url属性被错写为l
    • HTTPS跳转规则内的服务器变量{REQUEST_URI}被错写为{REQUEST_I}
    • 所有精确匹配规则的匹配值错误携带了协议和域名,IIS重写模块的匹配范围仅为域名后的请求路径,不会匹配协议、域名部分,就算属性名正确,这类规则也永远无法命中
    • 存在两条完全重复的5e路径跳转规则,属于无效冗余配置
  • 你之前配置的整站跳转规则没有保存在当前站点的web.config中,而是保存在IIS层级配置的上层位置:IIS配置采用逐层继承机制,全局配置(applicationHost.config)、父级站点/应用的web.config中配置的规则会自动被子级站点继承,当前站点配置无效时就会直接执行上层规则。
  • 301永久重定向存在强缓存特性:浏览器会长期缓存301响应结果,哪怕后端规则已经修改,本地缓存未清除时也会直接按照旧缓存跳转,干扰排查结果。
排查解决步骤
  • 首先修复重写规则的语法错误,替换成正确的配置内容,注意规则顺序:精确路径的跳转规则放在前面,通用的根路径、其余路径跳转规则放在后面,避免被通用规则提前拦截:
<rewrite>
    <rules>
        <clear />
        <!-- HTTPS跳转规则 -->
        <rule name="Redirect to https" stopProcessing="true">
            <match url=".*" />
            <conditions>
                <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
        </rule>
        <!-- 精确路径跳转规则 -->
        <rule name="5e path redirect" enabled="true" patternSyntax="ExactMatch" stopProcessing="true">
            <match url="5e/" />
            <action type="Redirect" url="https://www.b.com/products/5/" logRewrittenUrl="false" />
        </rule>
        <rule name="10e path redirect" enabled="false" patternSyntax="ExactMatch" stopProcessing="true">
            <match url="10e/" />
            <action type="Redirect" url="https://www.b.com/products/10/" logRewrittenUrl="true" />
        </rule>
        <rule name="16e path redirect" enabled="false" patternSyntax="ExactMatch" stopProcessing="true">
            <match url="16e/" />
            <action type="Redirect" url="https://www.b.com/products/16/" logRewrittenUrl="true" />
        </rule>
        <rule name="3e path redirect" enabled="false" patternSyntax="ExactMatch" stopProcessing="true">
            <match url="3e/" />
            <action type="Redirect" url="https://www.b.com/products/3/" logRewrittenUrl="true" />
        </rule>
        <!-- 根路径跳转至目标站首页 -->
        <rule name="root redirect" enabled="true" stopProcessing="true">
            <match url="^$" />
            <action type="Redirect" url="https://www.b.com/" redirectType="Permanent" />
        </rule>
        <!-- 其余子路径同路径跳转 -->
        <rule name="remaining path redirect" enabled="true" stopProcessing="true">
            <match url="(.*)" />
            <action type="Redirect" url="https://www.b.com/{R:1}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>
  • 排查上层继承的旧规则:打开IIS管理器,先选中服务器根节点,进入「URL重写」面板查看是否存在旧的整站跳转规则,存在则直接删除;再逐级选中站点所属的父级应用、目录节点检查重写规则,确认旧规则位置后清理即可。配置正确的情况下,当前站点规则内的<clear />指令会直接阻断所有上层规则的继承,不需要额外修改上层配置也能让旧规则失效。
  • 清理缓存验证结果:测试时打开Chrome开发者工具,在网络面板勾选「Disable cache」选项后再访问,避免浏览器本地301缓存影响;如果站点前接了CDN、反向代理,需要同步清理代理节点的缓存。也可以在服务器本地执行curl命令直接回源测试,绕过所有缓存环节确认IIS返回的重定向结果是否符合预期:
    curl -I -H "Host: shop.a.com" http://127.0.0.1/5e/

内容的提问来源于stack exchange,提问作者I am not Fat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 04:18:35