来自 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 的重写能力是不同的,一个可能的解决方案在这里,但是,nginx wiki 建议尽可能避免 ifs 是最好的解决方案,并讨论使用 ( try_files
) 代替。我想知道是否有人有最好的方法来实现这样的东西,同时:
try_files $uri $uri.html =404;
在某些情况下有效,您会遇到大量重定向问题等。在这种情况下有什么方法可以避免 ifs 吗?