部署在Firebase App Hosting的NextJS应用(GoDaddy域名)实现HTTP转HTTPS重定向
解决Firebase App Hosting部署的NextJS应用HTTP转HTTPS重定向问题
针对GoDaddy自定义域名、部署在Firebase App Hosting公开预览版的NextJS应用,HTTP无法自动跳转HTTPS的问题,按以下步骤排查解决:
1. 开启Firebase控制台强制HTTPS设置
登录Firebase控制台进入目标项目:
- 进入App Hosting模块,选中已绑定的自定义域名
- 打开域名的设置页面,找到“强制HTTPS”选项,确保处于开启状态
- 保存后等待5-15分钟,让Firebase同步配置
2. 检查GoDaddy DNS配置
登录GoDaddy域名管理后台:
- 确认DNS记录(A/CNAME)完全匹配Firebase提供的目标地址,无自定义HTTP转发规则
- 清理冲突的DNS记录(比如同时存在A和CNAME指向不同地址的情况)
- 等待DNS缓存刷新(最长24小时,可通过DNS查询工具验证生效状态)
3. 修复NextJS中间件不生效问题(若控制台设置无效)
若上述步骤仍未解决,调整NextJS中间件实现:
- 确保中间件文件路径正确:必须放在项目根目录
middleware.ts(或.js),或src/middleware.ts - 修改中间件逻辑,兼容Firebase请求头:
import { NextResponse } from 'next/server' import type { NextRequest } from 'next/server' export function middleware(request: NextRequest) { const proto = request.headers.get('x-forwarded-proto') const host = request.headers.get('host') if (proto !== 'https' && host) { return NextResponse.redirect( new URL(`https://${host}${request.nextUrl.pathname}${request.nextUrl.search}`, request.url), { status: 301 } ) } return NextResponse.next() } // 匹配所有路径生效 export const config = { matcher: ['/:path*'], }
- 确保使用NextJS 13+版本(兼容Firebase App Hosting最新要求)
- 重新部署:执行
firebase deploy
4. 验证重定向效果
用curl命令测试:
curl -I http://your-domain.com
返回301状态码且Location指向HTTPS地址,即为配置生效。
内容的提问来源于stack exchange,提问作者WJA
相关产品推荐
相关产品推荐

