首页 > 解决方案 > firebase.json 中的正则表达式重写

问题描述

当使用带有函数的firebase时,可以使用正则表达式来匹配传入的请求,并根据匹配使用共享同一端点的特定函数?例如,我正在尝试这个:

{
    "hosting": {
        "rewrites": [
            {
                "source": "/^([0-9a-f]{2}[:-]){15}([0-9a-f]{2})$",
                "function": "getFingerprint"
            },
            {
                "source": "/*",
                "function": "callNew"
            }
        ]
    }
}

我想匹配以下网址:

http://test.firebaseapp.com/b4:e8:b4:ec:4a:36:76:4b:04:4a:83:c9:47:d4:c8:70

如果请求与定义的正则表达式匹配,则使用该函数getFingerprint,否则,在我尝试实现“catch-all”时,我正在使用/*.

目前唯一有效的模式是/*,但找不到一种方法来使这个模式起作用:

^([0-9a-f]{2}[:-]){15}([0-9a-f]{2})$

因此想知道是否可以使用firebase.json文件中的任何正则表达式来配​​置自定义重写和共享端点,例如,/在这种情况下,或者作为替代方案更好地拥有唯一资源,然后拆分 URL 路径以检索路径作为参数

标签: regexfirebasegoogle-cloud-functionsfirebase-hosting

解决方案


从有关Firebase 托管重写规则的文档中:

Asource指定全局模式

Glob 模式是正则表达式的子集,例如我不支持您使用的^$终止符表达式。


推荐阅读