如何处理Firebase托管中的动态链接?

时间:2020-01-26 14:50:10

标签: javascript firebase firebase-hosting firebase-dynamic-links

我使用Firebase托管来托管我的网站。最近,我实现了一个证明概念网站,该网站通常仅使用index.html和style.js进行操作。

功能信息: 一个HTML + JS文件,用于托管整个小型网站。我能够使用javascript请求修改html正文内容。但是问题在于浏览器中的重新加载按钮。例如,如果我单击“关于”菜单按钮,那么JS函数将从后端获取并显示有关的数据。显示网址为https://some.domain/about

现在,如果我刷新页面,

  1. 默认情况下它将转到404页。
  2. 我在firebase.json中使用了以下重定向。但是结果是https://some.domain而不是https://some.domain/about的内容页面正确,例如按下“关于”按钮时显示的内容。

代码:

  1. 通过history.pushState(null, null, /大约);手动更改URL
  2. 重定向firebase.json

    “重定向”:[{ “ source”:“ / about”, “目的地”:“ /”, “类型”:301 }]

我想同时保留动态功能,我想在地址栏中保留特定的URL以及该特定URL的内容。

如何完成?

1 个答案:

答案 0 :(得分:2)

使用rewrites

当浏览器尝试打开指定的源URL时,将在目标URL处提供文件的内容。

"hosting": {
  // ...

  // Add the "rewrites" attribute within "hosting"
  "rewrites": [ {
    // Serves index.html for requests to files or directories that do not exist
    "source": "**",
    "destination": "/index.html"
  }, {
    // Serves index.html for requests to both "/foo" and "/foo/**"
    // Using "/foo/**" only matches paths like "/foo/xyz", but not "/foo"
    "source": "/foo{,/**}",
    "destination": "/index.html"
  }, {
    // Excludes specified pathways from rewrites
    "source": "!/@(js|css)/**",
    "destination": "/index.html"
  } ]
}