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

Redirect only the root URL to some other file in Firebase

我正在为我的网络应用程序使用 firebase 托管。

我想在 URL 的根目录中显示 lp.html,在其他地方显示 index.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?

由于某种原因,firebase 默认选择在根 URL 上服务 index.html,而没有咨询 firebase.json。为避免这种情况,我将 index.html 文件的名称更改为 app.html,一切都按预期进行。

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

Firebase Hosting only applies a rewrite rule if a file or directory does not exist at the specified source. When a rule is triggered, the browser returns the actual content of the specified destination file instead of an HTTP redirect.

您在 firebase.json 中指定的

redirects 是不同的。他们实际上会向用户的浏览器发送 301 或 302 重定向,使浏览器在目标位置请求 URL。不确定原来的 post 实际上希望浏览器的 URL 看起来像什么,但这也行得通:

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