我有一个动态路由器job/[jobId]
,但它不工作后托管。我不知道怎么在firebase.json
中写出rewrites
。这是我的重写。
当前firebase抛出404如果我访问一个页面,如job/2
页
├── job
│ └── [jobId]
│ └── index.html
页面结构.
├── _app.js
├── _document.js
├── careers
│ └── index.js
├── index.js
├── job
│ └── [jobId].js
└── privacy.js
重写
"rewrites": [
{
"source": "job/**",
"destination": "job/[jobId]/index.html"
}
"rewrites": [
{
"source": "/job/**",
"destination": "/job/[jobId]/index.html"
}
启动/
缺失
在面对同样的问题时,我在这里遇到了一个非常有助于理解Firebase和Next.js如何交互的讨论,因此我需要使用什么解决方案。
https://github.com/firebase/firebase-js-sdk/discussions/4980
帮助我的总结可以在那个链接上找到,但为了完整性,我将在这里包括它。
- 添加
trailingSlash: true,
到next.js.config- 这允许所有静态路由工作(即没有" slugg "的路由)
- 添加动态/"到firebase.json 的rewrites部分的路由
相关摘录自firebase.json:
{
"hosting": {
"target": "my-app",
"public": "frontend/out",
"rewrites": [
{
"destination": "/job/[jobId]/index.html",
"regex": "^/job/([^/]+?)(?:/)?$"
},
]
},
}
下面是一个实用程序脚本的要点,它可以从.next文件夹中获取所有动态鼻涕虫路由,并将它们放在firebase中。(主要用于CI相关用例)。 https://gist.github.com/jeff-r-koyaltech/6195f546764443d0cc7c5efe48fbe896