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


16

我正在通过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背景很薄弱。在此先感谢您提供的任何帮助。

Answers:



5

根据@Khaja的评论,最佳答案是:

try_files $uri.html $uri/ =404;

这样就只提供一份资源副本(没有.html扩展名)。您不想将链接强度分配给提供重复内容的多个URL。在此处找到文档。


我试过了 try_files $ uri.html $ uri / = 404; 它在不指定myurl / index的情况下中断了主页的加载,也破坏了.css,.js等的加载
aspiringGuru
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.