nginx之如何在Nginx中隐藏文件扩展名
zhengyun_ustc
阅读:20
2024-10-24 08:47:37
评论:0
来自Apache背景,过去我使用一对重写规则隐藏了.html文件扩展名:
RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /.+\.html\ HTTP
RewriteRule ^(.+)\.html$ http://%{HTTP_HOST}/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^.+$ %{REQUEST_FILENAME}.html [L]
nginx的重写功能不同,可能的解决方案是 here,但是,nginx Wiki建议尽可能避免ifs是最佳解决方案,并讨论使用(
try_files
)代替。我想知道是否有人拥有实现这样的最佳方法,而同时:
try_files $uri $uri.html =404;
在某些情况下有效,您会遇到大量的重定向问题等。在这种情况下,有什么方法可以避免ifs?
请您参考如下方法:
您将使用try_files指令,如下所示:
location / {
try_files $uri $uri.html =404;
}
这对与位置块匹配的每个uri执行以下操作
根本没有重定向,只是nginx依次检查了几个选项。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^.+$ %{REQUEST_FILENAME}.html [L]
前2行基本上是1.和2。不同之处在于nginx不需要重写url,因为try_files指令使其足够聪明,可以在找到匹配项时返回请求
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。