IIS URL重写中+字符导致跳转规则失效返回404问题咨询
问题根因
- 正则特殊字符未转义:
+是正则表达式的量词,代表匹配前一个字符1次及以上,你当前规则中的app+doc只会匹配appdoc、apppdoc这类不含+的字符串,无法匹配目标路径中的字面app+doc,导致匹配失败触发404。 - 路径编码匹配问题:若你实际的原始路径是空格分隔的
app doc,浏览器地址栏会自动显示为app+doc,IIS重写模块拿到的解码后路径带空格,也会导致现有规则匹配失败。 - 基础环境排查:未安装IIS官方的「URL重写模块」的情况下,所有重写规则都不会生效。
修复方案
场景1:原始路径确实包含字面+号
将正则中的+转义为\+即可,调整后的规则如下:
<rule name="From portal/en_us/apps/app+doc" stopProcessing="true"> <match url="^portal/en_us/apps/app\+doc$" ignoreCase="true" /> <action type="Redirect" url="https://domain1123.com/apps/newapps" redirectType="Permanent" /> </rule>
注:新增的redirectType="Permanent"代表301永久跳转,不需要可以删除,默认是302临时跳转。
场景2:原始路径是空格分隔的app doc
直接匹配解码后的带空格路径即可,调整后的规则如下:
<rule name="From portal/en_us/apps/app doc" stopProcessing="true"> <match url="^portal/en_us/apps/app doc$" ignoreCase="true" /> <action type="Redirect" url="https://domain1123.com/apps/newapps" redirectType="Permanent" /> </rule>
生效验证
配置修改完成后,重启对应站点的应用程序池,清理浏览器缓存后再访问原URL测试即可。
内容的提问来源于stack exchange,提问作者Alpesh
相关产品推荐
相关产品推荐

