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

Next.js静态导出部署CDN后路由刷新异常问题求助

解决Next.js静态导出后CDN刷新子页面显示首页的问题

问题根源

你遇到的问题是CDN路由规则未正确匹配静态导出的页面路径:刷新子页面时,浏览器请求当前URL路径(如/about),但CDN找不到对应资源,直接返回根目录的index.html,客户端路由接管前就会显示首页内容。

解决方案:配置CDN路由规则

不同CDN平台配置界面有差异,但核心逻辑一致,需设置以下规则:

1. 优先返回存在的静态文件

  • 规则:若请求路径对应CDN上已存在的文件(如/about.html、/static/js/main.js、/images/logo.png等),直接返回该文件。
  • 作用:确保所有静态资源(JS、CSS、图片、预生成的页面HTML)正常访问。

2. 路径重写:映射干净路径到对应HTML文件

根据你out文件夹的页面结构选择对应规则:

  • 若页面是about.html格式:将/([^/.]+)重写为/$1.html,比如把/about映射到/about.html;
  • 若页面是about/index.html格式:将/([^/.]+)重写为/$1/index.html,比如把/about映射到/about/index.html;
  • 嵌套路由(如/blog/posts/123)需调整正则匹配多级路径,比如用/(.+)重写为/$1.html或/$1/index.html。

3. 兜底规则(可选)

若存在未提前生成静态文件的动态路由,可设置兜底规则:将所有未匹配的路径重写为/index.html,让Next.js客户端路由接管,但仅适用于纯客户端路由场景。

额外检查项

  • 确认out文件夹结构:执行next build && next export后,检查out目录下是否存在对应子页面的HTML文件(如about.html),若缺失,说明页面配置有问题(比如动态路由未配置getStaticPaths);
  • ISR缓存配置:若需ISR页面增量更新,需给CDN设置Cache-Control: stale-while-revalidate规则,确保更新内容能被用户获取,但此规则不影响当前刷新显示首页的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 19:03:18