使用 nginx 重写“隐藏”.html 文件扩展名

使用 nginx 重写“隐藏”.html 文件扩展名

我正在通过 nginx 提供一个静态网站,我的目标是替换如下 URL:

http://foo.com/bar.html

http://foo.com/bar

关键是不要使用尾部斜杠。我目前正在使用位置别名做类似的事情,但这很繁琐,因为它需要每个文件都有一个位置块,而且它还会附加一个尾部斜杠,因为 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 上。查找文档这里

相关内容