如何使用 Nginx 部署 Next.js 静态导出? (深层链接不起作用)

How to deploy Next.js static export with Nginx? (deep links not working)

我将 next.js 导出到 out 文件夹。

文件夹结构为:

我将 nginx 设置为提供此文件夹中的文件:

server {
    root /var/www/myproject/out;
    index index.html index.htm index.nginx-debian.html;

    server_name myproject.com;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

主页(索引)打开正常。从应用程序内导航到 url 之类的 myproject.com/privacy 工作正常。问题是如果我尝试直接打开这些链接,它将提供主页(索引)而不是实际页面,因为文件夹中不存在那些 url。直接打开隐私页面的唯一方法是在 url 中添加 html 扩展名: myproject.com/privacy.html.

当有人进入 myproject.com/privacy url 时,如何配置 nginx 来服务实际页面 myproject.com/privacy.html?

问题在 try_files

因为当前配置包括:

  • /(默认路由到 index.html 根路径)
  • index.html
  • /index.html
  • 测试/*.html

要访问不带扩展名的页面路由路径名,即 /privacy 该格式应包含在 try_files insdie location /

试试这个:

try_files $uri $uri.html /$uri /index.html