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

如何在web.config中配置两类301重定向规则?

在web.config中配置两类301重定向的最优方案

要同时实现根域名定向和页面通配定向,核心是控制规则匹配顺序——根域名规则必须放在最前面,因为IIS的URL重写规则是从上到下依次匹配的,一旦匹配成功就会停止后续规则(只要设置stopProcessing="true")。

以下是完整的配置代码,直接放到web.config的<system.webServer>节点内即可:

<rewrite>
  <rules>
    <!-- 规则1:旧站点根域名定向到指定路径 -->
    <rule name="Root Redirect" stopProcessing="true">
      <match url="^$" /> <!-- 匹配空路径(根域名) -->
      <conditions>
        <add input="{HTTP_HOST}" pattern="^oldsite\.org$" /> <!-- 匹配旧域名 -->
      </conditions>
      <action type="Redirect" url="https://newsite.org/this-is-thenewsite" redirectType="Permanent" /> <!-- 301永久重定向 -->
    </rule>

    <!-- 规则2:旧站点任意页面定向到新站点同名页面 -->
    <rule name="Wildcard Page Redirect" stopProcessing="true">
      <match url="(.*)" /> <!-- 捕获所有非空路径 -->
      <conditions>
        <add input="{HTTP_HOST}" pattern="^oldsite\.org$" /> <!-- 匹配旧域名 -->
        <add input="{REQUEST_URI}" pattern="^/$" negate="true" /> <!-- 排除根路径,避免和规则1冲突 -->
      </conditions>
      <action type="Redirect" url="https://newsite.org/{R:1}" redirectType="Permanent" /> <!-- 用捕获的路径{R:1}拼接新URL -->
    </rule>
  </rules>
</rewrite>

关键细节说明

  • 规则顺序:根域名规则在前,确保用户访问oldsite.org或oldsite.org/时直接触发第一个规则,不会被通配规则误匹配。
  • stopProcessing="true":每个规则都开启该属性,匹配成功后立即停止后续规则执行,既提升效率又避免冲突。
  • 路径捕获:第二个规则用(.*)捕获旧页面的完整路径,通过{R:1}引用捕获值,实现同名页面的精准映射。
  • 根路径排除:第二个规则通过negate="true"排除根路径,双重保障不会和第一个规则重叠触发。

测试注意事项

  1. 确保IIS服务器已安装URL重写模块(未安装的话,需要在服务器管理器的角色功能中添加)。
  2. 测试前清空浏览器缓存,因为301重定向会被浏览器强缓存,旧缓存可能导致测试结果失真。
  3. 通过浏览器开发者工具的「网络」面板查看响应状态码,确认返回301 Moved Permanently。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:33:15