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

IIS 10中URL Rewrite规则不生效求助(Angular 16部署场景)

IIS URL Rewrite规则不生效排查方案

针对你遇到的请求/folderA/folderB未被重写为/folderA/folderC,反而直接访问folderA的问题,可按以下步骤排查:

  • 修正正则匹配规则
    原正则folderA/folderB未做路径锚定,可能导致匹配范围不准确。建议修改为锚定完整路径的正则:^folderA/folderB$(站点使用相对路径匹配场景)或^/folderA/folderB$(绝对路径匹配场景)。同时确认规则的“匹配URL”选项中选择的是正则表达式,而非通配符或精确匹配。

  • 调整规则优先级,避免Angular SPA路由干扰
    Angular 16作为单页应用,部署到IIS时通常会配置SPA路由规则(将所有非文件/目录请求导向index.html),这条规则优先级可能高于你的自定义规则。需将自定义重写规则放在SPA规则之前,并设置stopProcessing="true",确保匹配后停止后续规则执行。示例web.config片段:

    <rewrite>
      <rules>
        <!-- 自定义重写规则:优先执行 -->
        <rule name="Rewrite folderB to folderC" stopProcessing="true">
          <match url="^folderA/folderB$" />
          <action type="Rewrite" url="folderA/folderC" />
        </rule>
        <!-- Angular SPA 默认路由规则 -->
        <rule name="Angular Routes" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
    
  • 确认规则作用域
    如果规则配置在folderA子目录的web.config中,匹配的URL是相对于folderA的路径,此时正则应改为^folderB$,而非folderA/folderB。建议将自定义规则配置在站点根目录的web.config中,确保作用域覆盖整个站点请求。

  • 重新配置Failed Request Tracing
    之前未捕获到重写日志,可能是跟踪条件设置不当:

    1. 在IIS管理器中,针对目标站点启用Failed Request Tracing后,新建跟踪规则,勾选“URL重写”提供程序;
    2. 设置跟踪条件为请求路径等于/folderA/folderB,并包含所有HTTP状态码;
    3. 重新发起请求后,查看生成的XML日志,检查URL Rewrite模块是否触发了你的规则,以及是否执行了重写动作。
  • 验证URL Rewrite模块状态
    确认IIS已安装并启用URL Rewrite模块(版本2.0及以上),可在IIS管理器的“模块”功能中查看是否存在UrlRewriteModule,若未安装需先完成模块安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:03:29