如何在Firebase主机中处理动态URL路由

o8x7eapl  于 2023-05-18  发布在  其他
关注(0)|答案(2)|浏览(112)

假设在Firebase的公共文件夹中有一个index.html和一个salon.html
现在对于像xyz.com/salon/43这样的url,我想加载salon.html,并在javascript中从实时数据库中获取salon 43。
现在我可以有像xyz.com/salon?id=43这样的URL。我想知道是否有可能在Firebase托管中做前者,如果是的话,如何做。

jrcvhitl

jrcvhitl1#

您正在寻找Firebase Hosting * 重写 *。来自文档:
当您想为多个URL显示相同内容时,请使用重写。重写对于模式匹配特别有用,因为您可以接受任何与模式匹配的URL,并让客户端代码决定显示什么。重写规则可用于支持使用HTML5 pushState进行导航的应用程序。当浏览器试图打开指定的源URL时,它将被给予目标URL中的文件内容。
URL重写可以通过在firebase.json文件中定义托管内的rewrites部分来指定:

"hosting": {
  // Add the "rewrites" section within "hosting"
  "rewrites": [ {
    "source": "**",
    "destination": "/index.html"
  } ]
}
6l7fqoea

6l7fqoea2#

Next.js 2023更新

添加cleanUrls:true到“firebase.json”文件如下

{
  "hosting": {
    "public": "out",
    "ignore": ["firebase.json","**/.*","**/node_modules/**"],
    "cleanUrls": true,
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

相关问题