Firebase Hosting路由重写异常求助:无扩展名路径失效
Firebase Hosting路由规则修正方案
针对你遇到的三个路由问题,逐一修正并说明原因:
问题1:第一条规则(/access-token/somefolder/else.html)不生效
原规则用source精确匹配,但测试请求带双斜杠(//access-token/...),和source定义的单斜杠路径不匹配,导致触发最后一条兜底规则。
修正:将source改为regex,兼容单/双斜杠开头的路径:
{ "regex": "^//?access-token/somefolder/else.html$", "destination": "/access-token/2.json" }
//?表示匹配0个或1个斜杠,同时覆盖单斜杠和双斜杠的请求场景。
问题2:无扩展名的数字路径(/access-token/12)返回404
原正则^/access-token/[\\d]+$存在两个潜在问题:
- 部分环境对
\d的转义处理可能有差异; - 未覆盖路径末尾带斜杠的情况(比如
/access-token/12/)。
修正:改用[0-9]+替代[\d]+,并添加/?兼容末尾斜杠:
{ "regex": "^/access-token/[0-9]+/?$", "destination": "/access-token/2.json" }
/?表示允许路径末尾有0个或1个斜杠,覆盖更多请求场景。
完整修正后的规则集
"rewrites": [ { "regex": "^//?access-token/somefolder/else.html$", "destination": "/access-token/2.json" }, { "regex": "^/access-token/[0-9]+/?$", "destination": "/access-token/2.json" }, { "regex": "^/access-token/[0-9]+\\.json$", "destination": "/access-token/1.json" }, { "source": "**", "destination": "/index.html" } ]
额外注意事项
- 规则顺序不可调整:Firebase会按顺序匹配第一条符合条件的规则,特定规则必须放在兜底规则(
**)之前; - 静态文件优先级:如果
access-token目录下存在与规则匹配的文件/目录(比如access-token/12),Firebase会优先返回静态资源,而非执行rewrite。若要强制走规则,需确保该路径下无对应静态资源。
内容的提问来源于stack exchange,提问作者LeftBrain
相关产品推荐
相关产品推荐

