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

Next.js动态路由在Firebase生产环境刷新后无法正常工作

解决Next.js动态路由在Firebase Hosting无法正常访问的问题

核心问题分析

你当前的firebase.json重写规则将所有请求直接指向/index.html,这会导致动态路由的刷新/直接访问请求被直接返回首页,而没有经过Next.js的SSR函数处理——这是本地模拟器正常但部署后失效的关键原因。

具体解决步骤

1. 修正firebase.json的重写配置

将hosting部分的重写规则从指向静态index.html改为指向SSR函数:

"hosting": {
  "source": ".",
  "ignore": ["firebase.json", "**/.*", "**/node_modules/**"],
  "rewrites": [
    {
      "source": "**",
      "function": "ssr"
    }
  ]
}

备注:如果你的SSR函数名称不是默认的ssr,请替换为实际函数名(部署Next.js到Firebase时会自动生成该函数)。

2. 确保同时部署Functions和Hosting

执行部署命令时,必须同时包含函数和托管资源,否则SSR函数不会上线:

firebase deploy --only functions,hosting

3. 检查路由路径一致性

注意到你描述的路由是/rooms/{roomId},但截图中的URL是/room/IRLdCgdaOOTrIJunCDuv/(缺少s)。如果你的pages目录结构是pages/rooms/[roomId].js,这种路径不匹配会导致路由失效跳转到首页,请确保访问的URL与pages目录结构完全一致。

4. 调整Next.js的斜杠配置(可选)

如果你的URL带有末尾斜杠,在next.config.js中开启trailingSlash确保路由匹配:

module.exports = {
  trailingSlash: true,
}

5. 清除Firebase Hosting缓存

部署后可能存在缓存残留,导致旧规则依然生效。可以通过Firebase控制台的Hosting页面手动清除缓存,或执行命令:

firebase hosting:channel:deploy clear-cache

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:20:35