IIS默认网站下应用未加尾部斜杠时重定向至根目录问题求解
IIS子应用省略尾部斜杠跳转根站点排查方案
1 排查根站点规则冲突
- 打开IIS管理器,进入「Default Web Site」的「URL重写」模块,检查所有已配置规则:优先级最高的规则如果未排除子应用路径,会优先触发根站点逻辑导致跳转错误
- 检查根站点的
httpRedirect配置,如果exactDestination属性设为false,会自动将子路径请求重定向到根目标地址
2 修复无扩展URL重定向偏移
这是IIS和ASP.NET配合的常见问题,IIS处理无后缀路径时默认使用内部绑定地址生成重定向目标,未正确拼接子应用路径,在对应子应用的web.config的appSettings节点下添加以下配置即可:
<appSettings> <add key="aspnet:UseHostHeaderForRequestUrl" value="true" /> </appSettings>
3 配置强制尾部斜杠规则
如果上述配置无异常,可以直接在根站点或子应用的web.config中添加URL重写规则,主动匹配不带斜杠的子应用路径,重定向到带斜杠的地址:
<system.webServer> <rewrite> <rules> <!-- 单个应用专属规则 --> <rule name="Add trailing slash for App1" stopProcessing="true"> <match url="^App1$" /> <action type="Redirect" url="App1/" redirectType="Permanent" /> </rule> <!-- 多个子应用可使用下方正则批量匹配,匹配所有不带点、不带斜杠的一级路径 <rule name="Add trailing slash for all apps" stopProcessing="true"> <match url="^([^/.]+)$" /> <action type="Redirect" url="{R:1}/" redirectType="Permanent" /> </rule> --> </rules> </rewrite> </system.webServer>
4 反向代理场景特殊配置
如果站点使用了ARR反向代理,需要进入IIS的「应用程序请求路由缓存」设置,开启「反向代理-在响应头中重写主机」选项,避免代理转发过程中重定向地址被改写为根站点地址。
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

