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

How to handle dynamic links in firebase hosting?

我使用 firebase 托管来托管我的网站。最近我实现了一个证明概念的网站,通常仅使用 index.html & style.js。

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

现在如果我刷新页面,

  1. 默认进入404页面
  2. 我在 firebase.json 中使用了以下重定向。但结果是 https://some.domain 而不是 https://some.domain/about,内容页面正确,就像按下“关于”按钮时显示的内容一样。

代码:

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

    "redirects": [ { "source": "/关于", "destination": "/", "type": 301 }]

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

我怎样才能完成它?

使用rewrites:

When a browser attempts to open a specified source URL, it will be given the contents of the file at the destination 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"
  } ]
}