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

部署Angular应用到Azure Web App后,如何修复“Failed to load resource 404”错误?

解决Angular部署到Azure App Service的404与路由加载问题

咱先理清你的问题:用ng build --prod生成dist文件夹,压缩上传到Azure后,网站只加载部分内容还一堆404,尤其是books路由相关的问题。这种情况在SPA部署到IIS环境(Azure App Service用的就是IIS)时特别常见,主要是客户端路由和服务器静态文件规则不匹配导致的,给你一步步排查解决:

1. 必须添加Web.config配置文件(核心解决路由404)

Azure的IIS服务器默认会根据URL去寻找对应物理文件,但Angular是单页应用,所有路由都是客户端层面的——比如你直接访问https://tes42.azurewebsites.net/books,IIS会去找books文件夹或文件,找不到就返回404。这时候需要配置URL重写,让所有非文件/非目录的请求都转发到index.html,交给Angular路由器处理。

你需要在dist文件夹的根目录新建一个Web.config文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <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>
    <staticContent>
      <!-- 确保静态资源的MIME类型正确,避免加载失败 -->
      <mimeMap fileExtension=".json" mimeType="application/json" />
      <mimeMap fileExtension=".woff" mimeType="application/font-woff" />
      <mimeMap fileExtension=".woff2" mimeType="application/font-woff2" />
    </staticContent>
  </system.webServer>
</configuration>

添加完这个文件后,重新打包或者直接把包含Web.config的dist内容上传到Azure,覆盖原来的部署文件。

2. 检查Angular的base href配置

打开dist文件夹里的index.html,确认<base href="/">标签存在且正确。如果你的应用部署在网站根路径(比如你的https://tes42.azurewebsites.net/),这个配置是对的;如果之前打包时没指定,也可以重新用命令打包:

ng build --prod --base-href="/"

这个配置确保Angular加载静态资源(js、css、图片)时用正确的根路径,避免静态资源404。

3. 确认部署文件的目录结构

手动压缩上传时容易犯一个错误:把dist文件夹本身上传到Azure的site/wwwroot目录,导致实际路径变成wwwroot/dist/...,而不是把dist里的所有文件直接放到wwwroot下。你可以登录Azure Portal,进入你的App Service,打开“高级工具”→“Kudu”→“调试控制台”→“CMD”,查看site/wwwroot下的文件,应该直接能看到index.html、Web.config以及各种js/css文件夹,而不是被嵌套在dist文件夹里。

4. 验证Angular路由配置

最后确认你的books路由配置是否正确:

  • 检查AppRoutingModule里是否正确定义了path: 'books'的路由,并且关联了对应的组件
  • 确保路由没有拼写错误,比如大小写(Azure的URL是区分大小写的,所以Angular路由的path要和访问的URL一致)
  • 如果控制台里的404是针对静态资源(比如某块js/css文件),那大概率是base href或者部署目录的问题;如果是路由路径的404,那就是Web.config没配置好。

按照上面的步骤调整后,应该就能解决大部分问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:00:08