为何自定义域名下Next.js站点用SSR,Vercel默认域名用客户端渲染?
问题原因排查与解决方案
先从最常见的可能性逐一排查:
1. 检查<Link>组件的href写法
确保你用的是相对路径,比如:
<Link href="/en/another-page">跳转</Link>
如果写成带完整域名的绝对路径(比如https://www.boonwegig.com/en/another-page),Next.js会判定为外部链接,直接触发页面重载,不会走客户端路由逻辑。这是最容易踩的坑,优先检查这个。
2. 自定义域名的Vercel配置与DNS解析
- 确认Vercel项目的「Domains」页面已正确添加
www.boonwegig.com,状态显示「Active」,且SSL证书生效(域名前有安全锁标)。Vercel会自动配置Let's Encrypt证书,若证书未生效,可能导致客户端路由逻辑异常。 - 检查DNS解析记录:
www.boonwegig.com需设置CNAME记录指向cname.vercel-dns.com;如果是根域名,要设置A记录指向Vercel的IP(76.76.21.21)。解析错误会导致流量未正确路由到Vercel边缘节点,客户端路由无法正常工作。 - 可以用
nslookup www.boonwegig.com命令验证解析结果,确认指向Vercel服务器。
3. 缓存与资源加载问题
自定义域名可能存在旧缓存,导致Next.js客户端路由脚本(如_next/static/chunks下的文件)未正确加载:
- 打开Chrome开发者工具「Network」面板,刷新页面后检查所有
_next开头的资源是否返回200状态,且来源为Vercel服务器。 - 强制清除浏览器缓存(Ctrl+Shift+R),或在Vercel部署页面触发重新部署,确保最新客户端代码分发到自定义域名。
4. Next.js路由配置与部署模式
Next.js 14默认使用App Router,确认你的路由结构符合规范(页面组件放在app/目录下),未混合使用Page Router配置。另外,若项目的next.config.js设置了basePath或assetPrefix,要确保这些配置在自定义域名下生效。
5. 浏览器扩展干扰
部分广告拦截、隐私类浏览器扩展可能阻止Next.js客户端路由脚本运行,导致页面重载。可以在Chrome隐身模式下测试,若隐身模式下正常,说明是扩展问题,需排查禁用相关插件。
内容的提问来源于stack exchange,提问作者utpamas
相关产品推荐
相关产品推荐

