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

Azure中托管的Angular路由回退页面无法正常工作

在Azure IIS上配置Angular单页应用路由回退

我最近刚搞定Azure上IIS部署Angular项目的路由配置,全程跟着Angular官方文档和Stack Overflow的建议来做,特意没碰哈希路由——毕竟官方明确说了除非绝对必要,不然尽量避开这个策略。部署步骤是参照一篇Azure Angular部署的博客来的,核心就是把回退页面设为index.html,确保单页应用的路由能正常工作。

我已经确认index.html的base href配置没问题(比如根目录部署的话就是<base href="/">),然后给项目加了完整的web.config配置,用来处理路由重写:

<system.webServer>
  <rewrite>
    <rules>
      <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>
</system.webServer>

这里几个关键配置得说清楚:

  • stopProcessing="true":匹配到这条规则后就停止处理后续规则,防止其他重写规则干扰Angular的路由逻辑
  • <match url=".*" />:捕获所有进来的请求URL
  • 条件判断部分:专门排除了真实存在的文件和目录,这样像JS、CSS、图片这些静态资源能正常返回,不会被强制重写到index.html
  • 重写动作:把所有不符合上面条件的请求(也就是Angular路由定义的路径)转发到index.html,让Angular自己的路由系统来处理页面跳转

部署完之后记得测试一下:直接访问某个路由路径(比如/user/profile),看看是不是能正常加载页面而不是跳404;同时检查静态资源是否能正常加载,确保没有因为重写规则影响到这些资源的访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:56:47