假设在Firebase的公共文件夹中有一个index.html和一个salon.html。现在对于像xyz.com/salon/43这样的url,我想加载salon.html,并在javascript中从实时数据库中获取salon 43。现在我可以有像xyz.com/salon?id=43这样的URL。我想知道是否有可能在Firebase托管中做前者,如果是的话,如何做。
index.html
salon.html
xyz.com/salon/43
xyz.com/salon?id=43
jrcvhitl1#
您正在寻找Firebase Hosting * 重写 *。来自文档:当您想为多个URL显示相同内容时,请使用重写。重写对于模式匹配特别有用,因为您可以接受任何与模式匹配的URL,并让客户端代码决定显示什么。重写规则可用于支持使用HTML5 pushState进行导航的应用程序。当浏览器试图打开指定的源URL时,它将被给予目标URL中的文件内容。URL重写可以通过在firebase.json文件中定义托管内的rewrites部分来指定:
firebase.json
rewrites
"hosting": { // Add the "rewrites" section within "hosting" "rewrites": [ { "source": "**", "destination": "/index.html" } ] }
6l7fqoea2#
Next.js 2023更新
添加cleanUrls:true到“firebase.json”文件如下
{ "hosting": { "public": "out", "ignore": ["firebase.json","**/.*","**/node_modules/**"], "cleanUrls": true, "rewrites": [ { "source": "**", "destination": "/index.html" } ] } }
2条答案
按热度按时间jrcvhitl1#
您正在寻找Firebase Hosting * 重写 *。来自文档:
当您想为多个URL显示相同内容时,请使用重写。重写对于模式匹配特别有用,因为您可以接受任何与模式匹配的URL,并让客户端代码决定显示什么。重写规则可用于支持使用HTML5 pushState进行导航的应用程序。当浏览器试图打开指定的源URL时,它将被给予目标URL中的文件内容。
URL重写可以通过在
firebase.json
文件中定义托管内的rewrites
部分来指定:6l7fqoea2#
Next.js 2023更新
添加cleanUrls:true到“firebase.json”文件如下