我通过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; }
等等。 我已经通读了关于重写的文档,而我似乎无法综合所说的内容和我需要做的事情。 我不是从阿帕奇背景进来的; nginx是我第一次进入web服务器,所以我敢肯定我错过了一些明显的东西,因为我的HTTP背景很弱。 预先感谢您提供的任何帮助。
try_files
应该是你想要的。
像这样的东西:
try_files $uri.html $uri $uri/ =404;
根据@Khaja的评论,最好的答案是:
try_files $uri.html $uri/ =404;
这样只有一个资源副本被提供(没有.html扩展名)。 您不希望将链接强度划分为多个提供重复内容的url。 在这里find文档。