You need to enable JavaScript to run this app. Vue.js应用部署至Azure Web APP后刷新非默认页面报404错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js应用部署至Azure Web APP后刷新非默认页面报404错误如何解决

问题根源

当前web.config存在规则冲突,是触发404的核心原因:

  • 你配置了两个功能高度重叠的URL重写规则,且第一个规则设置了stopProcessing="true",匹配成功后会直接中断后续所有规则的执行,第二个冗余规则根本不会被触发
  • 两个规则的匹配逻辑交叉、重写目标不统一,会干扰IIS URL重写模块的正常判定,最终非首页的刷新请求无法被正确转发到入口文件index.html,直接返回404错误。

Windows/IIS 环境修复方案

删除冗余的重复规则,将web.config替换为仅保留单条SPA重写逻辑的版本,完整内容如下:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Vue History Mode Rewrite" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <!-- 跳过真实存在的静态文件、目录请求,避免静态资源被错误重写 -->
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <!-- 所有不匹配真实资源的请求,统一重写到入口文件index.html,保留请求参数 -->
          <action type="Rewrite" url="/index.html" appendQueryString="true" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

替换完成后,确认web.config文件放置在站点根目录wwwroot下,无需手动重启站点,后续请求即可正常生效。

Linux 环境 Azure App Service 配置方案

如果使用的是Linux版本的Azure App Service,无需编辑web.config,直接通过Azure Portal操作即可完成配置:

  • 进入对应App Service的「配置」-「应用程序设置」板块
  • 找到「启动命令」配置项,填入启动命令:pm2 serve /home/site/wwwroot --no-daemon --spa
  • 保存配置等待服务自动重启,该启动命令会通过pm2静态服务模块自动处理SPA路由的重定向逻辑,所有history模式路由的刷新请求都会被正确转发到index.html,不会再触发404。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 03:54:04