首页 > 解决方案 > Nginx、nuxt.js 静态生成模式和尾部斜杠重定向

问题描述

我目前在为 nuxt.js 生成的站点正确配置我的 Nginx 时遇到问题。我想要实现的是以下

/magazin -> /magazin/index.html
/magazin/ -> 301 /magazin

/magazin/artikel/titel-goes-here -> /magazin/artikel/titel-goes-here/index.html
/magazin/artikel/titel-goes-here/ -> 301 /magazin/artikel/titel-goes-here

目前这是相反的方式。

如果我是正确的,我不应该使用代理传递到例如带有 express 的 pm2 实例等,因为它破坏了静态站点生成的感觉。

但是我怎样才能让这个页面结构正常工作,因为出于 SEO 的原因,我需要与我们的旧服务相同的 url,它使用了 Angular Universal SSR

我当前的配置是:

location ^~ /magazin {
   root /path/to/dist;
   index index.html ;
}

如果我添加类似

rewrite ^(.+)/+$ $1 permanent; 

我得到一个无限的 301 循环

谢谢您的帮助

标签: nginxnuxt.jsserver-side-rendering

解决方案


您不能使用内置index指令,因为它以相反的方式工作(如您所见)。

您可以使用try_files来测试index.html文件是否存在。使用命名location来处理重定向。

例如:

location ^~ /magazin {
    root /path/to/dist;
    try_files $uri $uri/index.html @rewrite;
}
location @rewrite {
    rewrite ^(.+)/$ $1 permanent;
}

有关详细信息,请参阅此文档


推荐阅读