在Firebase托管配置中,如何在捕获url段时编写规则以重定向除一个源以外的所有源?

时间:2019-03-27 18:37:15

标签: firebase redirect firebase-hosting

设置一个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

0 个答案:

没有答案