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

Azure WebApp部署两个Vite React应用遇/admin路由问题求助

解决Azure Windows WebApp多React应用子路由404问题

核心问题分析

Azure Windows WebApp默认的IIS配置会将所有路由请求转发到根目录的web.config,导致/admin下的子路由被错误解析到客户应用的路由规则中,触发404。需要为每个虚拟应用单独配置web.config,确保各自的路由请求被正确处理。

具体解决步骤

1. 为/admin_portal目录添加独立的web.config

在admin_portal部署目录下创建或修改web.config,配置IIS URL重写规则,让所有/admin开头的子路由都指向admin应用的入口文件:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="React Routes Admin" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/admin/.*" />
          </conditions>
          <action type="Rewrite" url="/admin/index.html" />
        </rule>
      </rules>
    </rewrite>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
      <mimeMap fileExtension=".js" mimeType="application/javascript" />
      <mimeMap fileExtension=".css" mimeType="text/css" />
    </staticContent>
  </system.webServer>
</configuration>

2. 根目录(customer_portal)的web.config调整

确保根目录的web.config规则只处理非/admin开头的请求,避免覆盖admin应用的路由:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="React Routes Customer" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_URI}" pattern="^/admin/.*" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.html" />
        </rule>
      </rules>
    </rewrite>
    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
      <mimeMap fileExtension=".js" mimeType="application/javascript" />
      <mimeMap fileExtension=".css" mimeType="text/css" />
    </staticContent>
  </system.webServer>
</configuration>

3. 验证Vite配置的正确性

确认两个应用的vite.config.js配置无误:

  • 客户应用:
export default defineConfig({
  base: '/',
  // 其他配置项...
})
  • 管理应用:
export default defineConfig({
  base: '/admin/',
  // 其他配置项...
})

注意管理应用的base末尾要加斜杠,避免资源路径解析错误。

4. Azure虚拟应用配置检查

确保Azure门户的虚拟应用与目录配置正确:

  • 虚拟路径:/,物理路径:site\wwwroot\customer_portal
  • 虚拟路径:/admin,物理路径:site\wwwroot\admin_portal
    并且勾选每个虚拟应用的应用选项(标记为独立Web应用)。

验证部署

重新部署两个应用后,访问/admin/login等子路由,应该会正确加载管理应用的路由,而非跳转到客户应用的404页面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 09:05:06