我正在通过 nginx 提供一个静态网站,我的目标是替换如下 URL:
和
关键是不要使用尾部斜杠。我目前正在使用位置别名做类似的事情,但这很繁琐,因为它需要每个文件都有一个位置块,而且它还会附加一个尾部斜杠,因为 nginx 将别名视为目录:
location / {
root /srv/www/foo/public_html;
index index.html;
}
location /bar1 {
alias /srv/www/foo/public_html/;
index bar1.html;
}
location /bar2 {
alias /srv/www/foo/public_html/;
index bar2.html;
}
等等。我已阅读了有关重写的文档,但似乎无法综合其中所说的内容以及我需要它做什么。我不是 Apache 的从业者;nginx 是我第一次接触 Web 服务器,所以我肯定我错过了一些显而易见的东西,因为我的 HTTP 背景很弱。提前感谢您提供的任何帮助。
答案1
try_files
应该是你想要的。
像这样:
try_files $uri.html $uri $uri/ =404;
答案2
根据@Khaja 的评论,最好的答案是:
try_files $uri.html $uri/ =404;
这样就只提供一份资源副本(没有 .html 扩展名)。您不想将链接强度分散到提供重复内容的多个 URL 上。查找文档这里。