![Nginx:try_fiiles 指令与路径变量](https://linux22.com/image/780958/Nginx%EF%BC%9Atry_fiiles%20%E6%8C%87%E4%BB%A4%E4%B8%8E%E8%B7%AF%E5%BE%84%E5%8F%98%E9%87%8F.png)
我已经设置了一个如下所示的服务器块:
root /var/www/platform
location / {
index index.html;
}
location /contact {
try_files $uri /contact.html;
}
这很好用。我可以转到x.com/contact
并contact.html
加载页面。
现在我想添加一个products
包含诸如 等文件的子目录product1.html
。当用户访问时,x.com/products/product1
我想加载 html 文件。
因为products
子目录在platform
目录中,所以x.com/products/product1.html
与当前 ^ 设置配合得很好。我只是想摆脱.html
末尾的需要。
所以我尝试添加位置块
location /products/(product) {
root /products;
try_files /$1.html $1.html /index.html;
}
但显然这不起作用。任何帮助都将不胜感激。
如果有其他更好的(但仍然简单)的方法,我也很想知道。
答案1
Richard 基本上在评论中回答了这个问题(我写这篇文章是为了从未回答的问题列表中删除这个问题)。有效的解决方案是添加此位置块:
location /products/ {
try_files $uri $uri.html /index.html
}