如何处理 firebase 托管中的动态链接?
How to handle dynamic links in firebase hosting?
我使用 firebase 托管来托管我的网站。最近我实现了一个证明概念的网站,通常仅使用 index.html & style.js。
功能信息:
用于托管整个小型网站的单个 HTML+JS 文件。我可以通过 javascript 请求修改 html 正文内容。但问题在于浏览器中的重新加载按钮。例如,如果我点击关于菜单按钮,那么 JS 函数将从后端获取关于的数据并显示。显示 url 将是 https://some.domain/about
。
现在如果我刷新页面,
- 默认进入404页面
- 我在
firebase.json
中使用了以下重定向。但结果是 https://some.domain
而不是 https://some.domain/about
,内容页面正确,就像按下“关于”按钮时显示的内容一样。
代码:
- 通过
history.pushState(null, null,
/about);
手动更改URL
重定向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"
} ]
}
我使用 firebase 托管来托管我的网站。最近我实现了一个证明概念的网站,通常仅使用 index.html & style.js。
功能信息:
用于托管整个小型网站的单个 HTML+JS 文件。我可以通过 javascript 请求修改 html 正文内容。但问题在于浏览器中的重新加载按钮。例如,如果我点击关于菜单按钮,那么 JS 函数将从后端获取关于的数据并显示。显示 url 将是 https://some.domain/about
。
现在如果我刷新页面,
- 默认进入404页面
- 我在
firebase.json
中使用了以下重定向。但结果是https://some.domain
而不是https://some.domain/about
,内容页面正确,就像按下“关于”按钮时显示的内容一样。
代码:
- 通过
history.pushState(null, null,
/about);
手动更改URL
重定向
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"
} ]
}