Firebase 托管 URL 需要 .html 来显示页面

Posted

技术标签:

【中文标题】Firebase 托管 URL 需要 .html 来显示页面【英文标题】:Firebase hosting URL needs .html to display a page 【发布时间】:2017-10-25 16:25:48 【问题描述】:

我正在尝试在 Google Firebase 上托管一个网站。 index.html 显示为 (e.x.)app.firebase.com,但是当我想访问像 login.html 这样的页面时,我需要输入 app.firebase.com/login.html,只是 app.fire-base.com/login 不起作用。 我如何为目录(公共)中的每个.html 文件实现这一点,我是否需要配置firebase.json?我阅读了文档,但找不到任何信息。

这是我的 .json

 
      "hosting": 
        "public": "public",
        "signin": "/signin.html"

      
    

【问题讨论】:

我没有足够的信心给出完整的答案,但我知道当我使用 emberjs 在 Firebase 中部署应用程序时,路由(即 /login 之类的 URL)全部由 ember 处理。所以我认为你找不到任何东西的原因是因为这是你的前端框架的责任。 我没有使用任何特定的框架,我从一开始就按照说明进行操作,并通过 nodejs 进行部署 所以这可能是 nodejs 的事情? 【参考方案1】:

省略所有资源路径的.html,例如/login.html -> /login

"cleanUrls": true 添加到您的.json

如果用户输入 /login.html,firebase 会使用 301 代码自动重定向。

"hosting": 
  // ...

  // Add the "cleanUrls" attribute within "hosting"
  "cleanUrls": true

阅读Control .html extensions了解更多信息。


具体路由: 您可以在.json 中创建重定向/重写部分,如下所述,

Configure redirects Configure rewrites

【讨论】:

能否提供 login.html 的示例,我需要为每个页面手动执行此操作吗? 其实这样可能更好。您想删除所有网址的 html 吗?要为所有路径执行此操作,您可以将 "cleanUrls": true 添加到您的 json firebase.google.com/docs/hosting/full-config#cleanurls 这将删除所有 url 的 .html 并自动重定向例如 /login.html 到 /login

以上是关于Firebase 托管 URL 需要 .html 来显示页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 firebase 托管的 webapp 中获取 firebase 函数 URL?

重写 firebase.json 的规则以配置 firebase 托管

如何使用 Firebase 托管为 React SPA 提供 404 页面?

vuejs vue-router 不适用于 Firebase 托管

Firebase 托管重定向网站没有所有页面

如何使用 Firebase 托管来托管图像?