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

IIS URL Rewrite配置:如何排除指定站点不执行重定向

解决多站点共用web.config时的定向排除问题

这问题在多站点共用配置文件的场景里很常见,核心思路就是给你的重定向规则加上域名匹配条件,只让站点1和站点2触发重定向逻辑,站点3直接跳过规则,保持原有运行状态。

修改方案:给重写规则添加域名过滤条件

你只需要在现有的重定向规则里,新增一组conditions,精确匹配站点1和站点2的域名,这样站点3的请求会因为不满足条件而跳过这条规则。具体代码如下:

<rewrite>
  <!-- 你已定义的RewriteMap规则保持不变 -->
  <rewriteMaps>
    <rewriteMap name="RedirectRules">
      <add key="/old-page1.html" value="https://site4.com/new-page1.html" />
      <add key="/old-page2.html" value="https://site4.com/new-page2.html" />
      <!-- 其他已有的映射规则 -->
    </rewriteMap>
  </rewriteMaps>

  <rules>
    <!-- 修改后的重定向规则,新增域名过滤条件 -->
    <rule name="RedirectSite1And2ToSite4" stopProcessing="true">
      <!-- 条件组:只要匹配站点1或站点2的域名,就触发规则 -->
      <conditions logicalGrouping="MatchAny">
        <!-- 精确匹配站点1的域名,注意转义点号 -->
        <add input="{HTTP_HOST}" pattern="^site1\.com$" />
        <!-- 精确匹配站点2的域名 -->
        <add input="{HTTP_HOST}" pattern="^site2\.com$" />
        <!-- 如果需要支持www前缀,添加下面两行 -->
        <!-- <add input="{HTTP_HOST}" pattern="^www\.site1\.com$" /> -->
        <!-- <add input="{HTTP_HOST}" pattern="^www\.site2\.com$" /> -->
      </conditions>

      <!-- 匹配所有请求路径,查找RewriteMap中的规则 -->
      <match url=".*" />

      <!-- 优先使用RewriteMap中的映射规则 -->
      <action type="Redirect" url="{RedirectRules:{REQUEST_URI}}" redirectType="Permanent" />
      <!-- 当映射中没有匹配项时,重定向到站点4的首页 -->
      <action type="Redirect" url="https://site4.com" redirectType="Permanent" appendQueryString="false" />
    </rule>
  </rules>
</rewrite>

关键细节说明

  1. 条件逻辑:
    使用logicalGrouping="MatchAny"表示只要请求的域名是站点1或站点2,就会触发这条重定向规则;站点3的域名不满足任何条件,规则会直接跳过,站点3保持原有运行状态。

  2. 精确域名匹配:
    正则表达式里的^site1\.com$是精确匹配域名,注意把域名里的点号用反斜杠转义(\.),因为正则中点号是通配符,不转义会匹配任意字符。如果你的站点有www前缀或者其他子域名,记得补充对应的匹配规则。

  3. 规则终止:
    设置stopProcessing="true"可以确保当请求匹配这条规则后,不再执行后续的重写规则,避免出现冲突或意外的重定向。

  4. 默认重定向:
    当请求的路径不在你的RewriteMap中时,会触发默认的重定向到站点4首页,你可以根据需求调整这个默认目标地址。

测试建议

你可以用IIS管理器中的URL Rewrite模块的「测试规则」功能,分别输入站点1、站点2、站点3的请求URL,验证规则是否正确触发重定向或跳过。比如:

  • 输入http://site1.com/old-page1.html,应该跳转到https://site4.com/new-page1.html
  • 输入http://site3.com/any-page.html,应该直接返回站点3的内容,不会被重定向

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:00:04