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

React项目部署Firebase后路由跳转404,如何修改firebase.json配置?

问题原因

这是单页应用(SPA)部署在静态托管服务的典型问题。React使用客户端路由,所有页面逻辑都在入口index.html中处理,Firebase默认会根据请求路径找对应的静态文件,服务器上不存在/menu、/add这类实际的静态文件,所以返回404。

现有配置的问题
  • 当前配置的rewrite规则只匹配/Menu/*路径,大小写敏感,和你路由中定义的小写/menu不匹配
  • 仅覆盖了Menu路径,其他路由比如/add、/projekt等都没有匹配规则
  • 目标地址配置错误,不应该指向路由路径,应该指向React应用的入口文件
正确配置方案

直接替换你的firebase.json中hosting的rewrites字段即可,修改后的完整firebase.json如下:

{
  "firestore": {
    "rules": "firestore.rules",
    "indexes": "firestore.indexes.json"
  },
  "hosting": {
    "public": "build",
    "rewrites": [ {
      "source": "**",
      "destination": "/index.html"
    }],  
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ]
  },
  "storage": {
    "rules": "storage.rules"
  }
}
配置项说明
  • hosting.public:指定Firebase托管的静态资源根目录,React打包后的产物默认输出在build文件夹,这个配置不需要改动
  • hosting.rewrites:URL重写规则,"source": "**"表示匹配所有请求路径,全部指向站点根目录的/index.html,交由React Router处理客户端路由,不需要为每个路由单独写规则
部署生效步骤
  1. 保存修改后的firebase.json文件
  2. 在项目根目录执行firebase deploy重新部署即可
注意事项
  • 建议统一路由路径的大小写,你当前路由配置中存在/Contact、/add-Evaluation这类大小写混合的路径,统一改为全小写可以避免不同环境大小写敏感导致的访问异常
  • 如果使用HashRouter而不是BrowserRouter的话也可以避免这个问题,但URL会带#号,使用BrowserRouter的话用上面的重写规则即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:12:04