设置一个Firebase托管项目,我想将除一个请求以外的所有请求重定向到另一个域,并在重定向中保留url段。例如,example.com/page
应该重定向到www.example.com/page
,而以example.com/ignore
开头的任何内容都不应重定向。
在firebase.json中,我编写了此规则以重定向不在忽略路径中的任何请求:
"redirects": [
{
"source": "/!(ignore)",
"destination": "https://www.example.com/",
"type": 302
}
]
此重定向有效,但是我想捕获重定向中的所有url段。我正在尝试从他们的文档中获取示例,其中:post*
是我要保留的url段,但是我不知道如何在重定向规则中编写它。
"hosting": {
// ...
"redirects": [ {
"source": "/blog/:post*", // captures the entire URL segment beginning at "post"
"destination": "https://blog.myapp.com/:post", // includes the entire URL segment identified and captured by the "source" value
"type": 301
}
我还尝试了以下方法,该方法可以捕获重定向中的url段,但也可以重定向我忽略的路径。
"redirects": [
{
"source": "/:path*",
"destination": "https://www.example.com/:path",
"type": 302
}
]
我还尝试了上面的代码片段,将ignore文件夹添加到了ignore规则中,但这也不起作用。
{
"hosting": {
"public": "public",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**",
"**/ignore/**"
],
...
}
我希望能够编写一个全局模式来捕获与忽略路径不匹配的任何路径,并在重定向中使用它,例如:
"source": "/!(ignore)**path**,
"destination: "https://www.example.com/**path**",
"type": 302