仅将根URL重定向到Firebase中的其他某个文件

时间:2018-02-21 15:46:44

标签: javascript firebase firebase-hosting

我正在为我的网络应用程序使用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?

2 个答案:

答案 0 :(得分:3)

由于某些原因,firebase选择在默认情况下在根URL处为index.html提供服务而不咨询firebase.json。为了避免这种情况,我将index.html文件的名称更改为app.html,一切都按预期工作。

答案 1 :(得分:0)

要添加更多信息,因为所选答案并非100%正确。首先,弄清楚rewritesredirects之间的区别很重要。在firebase.json中指定了rewrites的情况下,Firebase实际上只会在未首先找到指定文件的情况下对您的重写规则起作用。这是文档中的相关部分:

  

Firebase主机仅在指定源上不存在文件或目录时才应用重写规则。触发规则后,浏览器将返回指定目标文件的实际内容,而不是HTTP重定向。

您在firebase.json中指定的

redirects有所不同。他们实际上将向用户的浏览器发送301或302重定向,以使浏览器在目标位置请求URL。不确定原始帖子实际上希望浏览器的URL是什么样,但这也可以:

"redirects":[ 
  {
    "source": "/",
    "destination": "/lp.html",
    "type": 301
  }
],
"rewrites": [
  {
    "source": "**",
    "destination": "/index.html"
  }
]