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

IIS URL重定向:多正则匹配规则优先级异常问题

解决IIS 7.5 URL重定向规则优先级问题

这问题很典型——核心原因是IIS URL重写规则的执行顺序不对!

IIS的URL重写模块是按照规则在web.config里的顺序从上到下匹配的,只要某条规则匹配成功,而且设置了stopProcessing="true",就会立刻执行这条规则,直接跳过后面所有规则。

你的Rule3(^sales/(.*))是个范围很宽的规则,所有以sales/开头的请求都会被它匹配,包括sales/fieldmarketing/和sales/naspo/。如果这条规则排在Rule1和Rule2前面,那请求进来时肯定先触发它,后面的具体规则根本没机会跑,这就是为什么访问/sales/naspo会被跳到销售根站点。

怎么解决?

  • 调整规则顺序:把更具体的规则(Rule1和Rule2)挪到最前面,宽泛的Rule3放在最后。这样当请求是/sales/fieldmarketing/或/sales/naspo/时,会先命中对应的具体规则,执行重定向后就停止处理;只有当请求是sales/下的其他路径时,才会触发Rule3。
  • 别改stopProcessing="true",这个配置是对的,它就是用来确保匹配当前规则后不再走后续规则的。

修改后的完整规则代码:

<!-- 具体规则优先 -->
<rule name="Sales Field Marketing to SPO" enabled="true" stopProcessing="true">
  <match url="^sales/fieldmarketing/(.*)" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
  <action type="Redirect" url="https://newsite.com/sites/SalesFieldMarketing" appendQueryString="false" />
</rule>
<rule name="Sales NASPO to SPO" enabled="true" stopProcessing="true">
  <match url="^sales/naspo/(.*)" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
  <action type="Redirect" url="https://newsite.com/sites/NASPO" appendQueryString="false" />
</rule>
<!-- 兜底的宽泛规则放在最后 -->
<rule name="Sales Root to SPO" enabled="true" stopProcessing="true">
  <match url="^sales/(.*)" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
  <action type="Redirect" url="https://newsite.com/sites/sales/" appendQueryString="false" />
</rule>

测试小贴士:

改完web.config后,记得清一下浏览器缓存再测试,不然可能会因为旧的重定向缓存导致测试结果不准。如果还是有问题,检查下是不是把规则写到了正确的web.config里(要确保是站点根目录下的那个文件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:04:04