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

.Net Framework WebForms用URL重写模块拦截外部重定向配置问题

IIS 拦截外部开放重定向的URL重写规则配置

你当前编写的入站规则存在逻辑偏差:入站规则仅能处理客户端发起的请求,无法拦截应用程序返回给客户端的3xx重定向响应,要实现外部重定向拦截必须使用出站重写规则,直接匹配响应头中存储重定向目标的Location字段,再做域名合法性校验。

核心配置逻辑

  • 仅匹配http:///https://开头的绝对路径重定向,自动放行站内常用的相对路径重定向(如/account/login这类无域名的跳转,本身属于站内合法操作)
  • 从绝对路径重定向地址中提取域名部分,和当前请求的服务端变量{HTTP_HOST}做比对,域名不一致则判定为外部重定向,执行拦截动作
  • 拦截动作可按需选择重定向回本站首页,或直接返回403禁止状态

完整可用配置

将以下规则添加到Web.config的<system.webServer><rewrite><outboundRules>节点下即可:

<rule name="Block External Redirects" stopProcessing="true">
    <!-- 匹配响应头中的Location重定向目标字段 -->
    <match serverVariable="RESPONSE_Location" pattern="^https?://([^/]+)/?(.*)" />
    <conditions>
        <!-- 判断提取到的重定向目标域名 和 当前站点域名不一致 -->
        <add input="{R:1}" pattern="{HTTP_HOST}" negate="true" />
    </conditions>
    <!-- 命中规则后动作:重定向回本站首页,可按需替换为返回403 -->
    <action type="Redirect" url="https://{HTTP_HOST}/" appendQueryString="false" redirectType="Temporary" />
</rule>

配置注意事项

  • 需提前在IIS中安装官方URL Rewrite模块,否则规则不会生效
  • 如果站点绑定了多个合法域名(如同时存在example.com和www.example.com的跳转需求),可调整条件部分的匹配规则,把所有合法域名加入白名单即可,避免合法跨域名跳转被误拦截
  • 不建议使用301永久重定向作为拦截动作,测试阶段用302临时重定向,确认规则逻辑无误后再调整状态码,避免浏览器缓存导致的访问异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:54:17