我正在为我的网络应用程序使用firebase托管。
我想在我的网址和index.html的其他地方显示lp.html。为实现这一目标,我已将firebase.json配置为:
{
"hosting": {
"public": "build/es6-bundled",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "/",
"destination": "/lp.html"
},
{
"source": "**",
"destination": "/index.html"
}
]
}
}
但是,当我使用firebase服务并打开http://localhost:5000/时,我会看到index.html中的内容。如何让根URL指向lp.html?
答案 0 :(得分:3)
由于某些原因,firebase选择在默认情况下在根URL处为index.html提供服务而不咨询firebase.json。为了避免这种情况,我将index.html文件的名称更改为app.html,一切都按预期工作。
答案 1 :(得分:0)
要添加更多信息,因为所选答案并非100%正确。首先,弄清楚rewrites
与redirects
之间的区别很重要。在firebase.json中指定了rewrites
的情况下,Firebase实际上只会在未首先找到指定文件的情况下对您的重写规则起作用。这是文档中的相关部分:
您在firebase.json中指定的Firebase主机仅在指定源上不存在文件或目录时才应用重写规则。触发规则后,浏览器将返回指定目标文件的实际内容,而不是HTTP重定向。
redirects
有所不同。他们实际上将向用户的浏览器发送301或302重定向,以使浏览器在目标位置请求URL。不确定原始帖子实际上希望浏览器的URL是什么样,但这也可以:
"redirects":[
{
"source": "/",
"destination": "/lp.html",
"type": 301
}
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
]