Next.js配置的redirects规则部署到Netlify后不生效该如何解决?
原因说明
Netlify平台部署Next.js项目时,默认不会直接读取next.config.js中的重定向配置,需要依赖官方适配插件转换规则,或直接使用Netlify原生的重定向配置,常见失效原因如下:
- 未安装或安装的
@netlify/plugin-nextjs插件版本和当前Next.js版本不兼容,无法正确转换Next.js内置的重定向规则 - 项目根目录存在
_redirects、netlify.toml配置文件,其中的重定向规则优先级高于Next.js内置配置,导致配置被覆盖 - 项目开启了静态导出配置
output: 'export',这种场景下Next.js所有服务端配置包括redirects都不会生效 - 构建缓存未清理,旧的部署产物没有加载最新的配置
解决办法
方案1:使用Netlify Next.js适配插件(推荐)
该方案可以复用你已经写在next.config.js里的所有配置,不需要额外重写规则:
- 安装和你当前Next.js版本匹配的适配插件
npm install @netlify/plugin-nextjs --save-dev
- 在项目根目录新建
netlify.toml文件,添加如下内容指定启用插件:
[[plugins]] package = "@netlify/plugin-nextjs"
- 部署时选择「Clear cache and deploy site」清理缓存后重新部署即可生效。
方案2:直接使用Netlify原生重定向配置(快速生效)
如果你不想额外安装依赖,可以直接用Netlify支持的配置方式写重定向规则,两种方式二选一即可:
方式A:使用_redirects文件
在项目根目录新建_redirects文件,添加如下内容:
/ /coming-soon 302
其中302对应你permanent: false的临时重定向配置,如果需要永久重定向改成301即可。
方式B:使用netlify.toml配置
在项目根目录的netlify.toml中添加如下规则:
[[redirects]] from = "/" to = "/coming-soon" status = 302 force = false
额外注意事项
如果你的项目配置了output: 'export'静态导出,只能选择方案2配置重定向,Next.js内置的服务端配置在纯静态导出场景下不会生效。
内容的提问来源于stack exchange,提问作者Jimmy Soussan
相关产品推荐
相关产品推荐

