You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置全局重定向与API函数重定向的问题排查

解决Firebase Hosting自定义域名下API重写规则失效的问题

我来帮你排查这个问题!你遇到的情况是自定义域名能正常指向index.html,但/api路径的重写规则没生效,而Firebase原生URL能正常调用API,这大概率是部署、缓存或者域名配置的小问题,咱们一步步来解决:

首先确认配置部署是否到位

你的firebase.json配置本身逻辑是没问题的——重写规则是按顺序匹配的,/api/**排在**前面,理论上会优先匹配API请求。但首先要确保这个配置已经真正部署到Firebase了:

  • 运行命令重新部署Hosting部分:firebase deploy --only hosting
  • 打开Firebase控制台的Hosting页面,进入「重写规则」板块,确认/api/** → api函数的规则已经显示在列表里

清除缓存,排除旧规则干扰

浏览器或者Firebase的CDN可能缓存了旧的重写规则,导致新规则不生效:

  • 用浏览器的无痕模式测试domain.com/api/somelink,避免本地缓存影响
  • 如果还是不行,手动清除浏览器缓存(快捷键Ctrl+Shift+Delete),选择清除「缓存的图片和文件」
  • 等待5-10分钟,让Firebase的全球CDN刷新缓存,或者在Firebase控制台Hosting的「设置」里找到「缓存」选项,手动触发缓存刷新

检查自定义域名的状态

自定义域名的SSL证书或DNS配置可能有问题,导致重写规则无法正确执行:

  • 打开Firebase控制台的Hosting域名列表,确认你的自定义域名旁边显示「已部署」,并且有绿色的SSL标识(说明证书已经生效)
  • 检查你的域名DNS设置,确保只添加了Firebase提供的CNAME或A记录,没有其他冲突的重定向或记录

验证API函数的路由处理

如果前面的步骤都没问题,那可能是你的Cloud Function(名为api的那个)路由设置有问题:

  • 比如你用Express框架的话,要注意Firebase会把/api/somelink的请求转发给函数的/somelink路径,所以函数里的路由不要重复加/api前缀,示例如下:
    const app = express();
    app.get('/somelink', (req, res) => { /* 你的业务处理逻辑 */ });
    // 导出云函数
    exports.api = functions.https.onRequest(app);
    

测试小技巧

如果还是不确定问题在哪,可以尝试:

  • 直接访问https://<你的项目ID>.web.app/api/somelink,确认API能正常返回结果(你说原生URL可以,这一步应该没问题)
  • 打开浏览器开发者工具(F12)的「网络」面板,查看自定义域名下请求的状态码和响应内容:如果返回的是index.html的内容,说明重写规则没匹配上,回到部署和缓存步骤检查;如果返回的是函数的错误,那就是函数本身的逻辑问题

内容的提问来源于stack exchange,提问作者Oliver Dixon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:34:04