Firebase静态托管网站显示‘Site Not Found’问题排查与解决求助
Firebase Hosting 站点异常及重定向配置问题解答
问题1:部署后出现「Site Not Found」的原因及修复方案
错误原因
你在rewrites配置中错误使用了type: "302"字段。Firebase Hosting的rewrites用于内部重写(不对外发送跳转响应),仅支持dynamic/static等类型;而302是HTTP临时重定向的状态码,属于redirects配置的专属字段。无效的配置会导致Firebase无法正确解析部署规则,最终触发「Site Not Found」。
修复方案
将rewrites中的302重定向规则迁移到redirects数组中,删除原rewrites里的错误配置,同时简化重复的headers规则,修正后的firebase.json示例:
{ "hosting": { "site": "mysite_id", "public": "public", "ignore": [ "firebase.json", "**/.*", "**/node_modules/**" ], "redirects": [ { "source": "/report/doc_view/**", "destination": "https://mynewsite.com/report/doc_view/**", "type": 302 } ], "headers": [ { "source": "**", "headers": [ { "key": "Access-Control-Allow-Origin", "value": "*" } ] } ] } }
额外检查:确保public目录存在且包含至少一个可访问文件(如index.html),空的public目录也会导致站点无法正常加载。
问题2:重写/重定向配置是否会导致「Site Not Found」及生产环境建议
配置问题判断
你修改后的配置中,rewrites数组仍保留了错误的type: "302"字段,这依旧会导致配置解析失败,触发「Site Not Found」。而redirects里的/cgi-bin/login.cgi规则是正确的,本身不会引发异常。
生产环境部署建议
- 严格区分
rewrites与redirects:rewrites:用于内部路径映射(如SPA路由 fallback 到index.html),不改变浏览器URL,无需设置type为HTTP状态码。redirects:用于对外发送跳转响应(301永久/302临时),必须在redirects数组中配置,并指定正确的type数值(注意是数字,如301而非字符串"301")。
- 本地预验证:部署前用
firebase serve命令本地预览,测试所有重定向/重写规则是否生效,提前排查配置错误。 - 简化重复配置:避免重复的headers规则,
source: "**"可覆盖所有路径,无需保留source: "*"。 - 查看部署日志:部署后登录Firebase控制台,进入Hosting模块查看部署日志,若有配置错误会直接提示具体问题。
内容的提问来源于stack exchange,提问作者Jeyaprakash
相关产品推荐
相关产品推荐

