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

为什么IIS Rewrite重定向不生效?URL重写规则配置问题排查

问题诊断&解决方法

现有配置核心错误

  • 第一版规则的enabled属性设为了false,规则处于未启用状态,完全不会触发
  • 匹配规则存在语法错误:
    • 第一版的match url值为sso /(.*),中间多了冗余空格,和实际请求路径的sso/xxx格式不匹配
    • 第二版规则指定了patternSyntax="ECMAScript"(正则语法),但写的是通配符格式* sso / *,语法不兼容,无法匹配任何请求
  • 第一版跳转目标写为http://localhost:81/{R:1},仅服务器本地测试跳转有效,外部用户访问会跳转到用户本地的localhost,无法正常访问

正确配置(分两种场景)

场景1:需要地址栏跳转(用户可见端口变化)

<rewrite>
    <globalRules>
        <rule name="跳转sso路径到81端口" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
            <match url="^sso/(.*)$" />
            <action type="Redirect" url="http://my.domain:81/{R:1}" appendQueryString="true" redirectType="Temporary" />
        </rule>
    </globalRules>
</rewrite>

测试确认正常后可以把redirectType改为Permanent启用永久重定向。

场景2:需要地址栏不变,后端代理转发(用户看不到端口)

先确认已经开启ARR的代理功能,再使用以下规则:

<rewrite>
    <globalRules>
        <rule name="代理sso路径到81端口" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
            <match url="^sso/(.*)$" />
            <action type="Rewrite" url="http://localhost:81/{R:1}" appendQueryString="true" />
        </rule>
    </globalRules>
</rewrite>

后续排查步骤

如果修改后仍然无法生效:

  • 先清理浏览器缓存,临时重定向和永久重定向都会被浏览器缓存,也可以直接用浏览器无痕模式测试
  • 确认IIS的URL Rewrite模块、ARR模块都已经正确安装,没有运行报错
  • 测试路径和匹配路径保持一致,避免出现测试用/sso/mon_app但实际需求是/sso/my_app的低级错误
  • 重新配置失败请求跟踪规则,匹配路径设为*,捕获状态码覆盖3xx/4xx/5xx全范围,再重新测试查看日志

内容的提问来源于stack exchange,提问作者user16761658

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 03:51:03