如何使用 Nginx 部署 Next.js 静态导出? (深层链接不起作用)
How to deploy Next.js static export with Nginx? (deep links not working)
我将 next.js 导出到 out
文件夹。
文件夹结构为:
- 出来
- index.html
- terms.html
- privacy.html
我将 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
我将 next.js 导出到 out
文件夹。
文件夹结构为:
- 出来
- index.html
- terms.html
- privacy.html
我将 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