首页 > 解决方案 > Firebase 使用正则表达式重定向

问题描述

我的目标是将任何不以特定符号(“#”)开头的 URL 重定向到不同的网站。我正在使用 Firebase 托管,并且已经在重定向中尝试了 Regex 函数来实现这一点。我遵循了这个关于重定向的 firebase文档,但是因为我不熟悉正则表达式,所以我认为我的错误可能是我的正则表达式代码。

我的目标:

我的代码:

{
  "hosting": {
    ...
    "redirects": [
      {
        "regex": "/^[^#]:params*",
        "destination": "otherdomain.com/:params",
        "type": 301
      }
    ],
    ...
  }
}

标签: regexfirebaseredirectfirebase-hosting

解决方案


您可以使用

"regex": "/(?P<params>[^/#].*)"

关键是您需要一个捕获组,该组将匹配并捕获您要在destination. 所以,在这种情况下

  • /- 火柴/
  • (?P<params>[^/#].*)- 命名捕获组(您可以从usingparams中引用该组): destination:params
    • [^/#]/-和以外的任何字符#
    • .*- 除换行符以外的任何零个或多个字符,尽可能多

为避免将文件与 匹配.js,您可以使用

/(?P<params>[^/#].*(?:[^.].{2}$|.[^j].$|.{2}[^s]$))$

请参阅此 RE2 正则表达式演示

在 Regex 中查看有关如何否定模式的更多信息:匹配除特定模式之外的所有内容。


推荐阅读