我在 Netlify 上使用 Nuxt 3 生成并部署了一个静态站点。为了保持一些旧路由处于活动状态,我在
netlify.toml
文件中添加了一些重定向规则,如下所示:
[[redirects]]
from = "/tags/"
to = "/posts/topics/"
status = 301
站点生成命令为
nuxt generate
和 ssr: true
文件中的 nuxt.config.ts
。 Netlify 已成功发现重定向规则,如其生产部署日志中所示。
重定向在生产中不起作用。例如,
site.com/tags/
应该重定向到site.com/posts/topics/
,但我猜Nuxt正在捕获路线并显示404页面而不是重定向。
我已经找到并解决了这个问题,我认为它应该作为答案来分享。
在Netlify配置文件
netlify.toml
中,在其他重定向规则之前有一个针对404
状态代码的重定向规则,如下所示:
[[redirects]]
from = "/*"
status = 404
to = "/404.html"
[[redirects]]
from = "/other"
to = "/new/other"
删除
404
的规则并将其放置在所有重定向规则的末尾解决了问题。显然,问题不在于 Nuxt.js,而在于 Netlify 中重定向规则的顺序。
新的重定向规则:
[[redirects]]
from = "/other"
to = "/new/other"
[[redirects]]
from = "/*"
status = 404
to = "/404.html