来自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的重写function是不同的,但是一个可能的解决scheme在于此 ,Nginx维基build议,如果可能的话避免ifs是最好的解决scheme,并讨论使用( try_files )来代替。 我想知道是否有人有最好的方式来实现这样的事情:
try_files $uri $uri.html =404;
在某些情况下工作,你会得到大规模的redirect问题等有没有办法避免ifs在这种情况下?
如何从地址中删除index.PHP,同时通过fastcgi将请求redirect到index.PHP?
将Apache .htaccess转换为Nginx
Nginx重写URL如果特定的域名和特定的url
Nginx将子域转换为无redirect的path组件
PHP / Apache的REQUEST_URI不同的行为?
Nginx重写prestashop的规则,如何设置,debugging和启用?
简单的.htaccess子域重写
你会使用try_files指令,如下所示:
location / { try_files $uri $uri.html =404; }
对于与位置块匹配的每个uri,这将做以下处理
检查是否有完全匹配的文件,如果是这样的服务
如果找不到完全匹配,请尝试将.html添加到请求中
如果没有发现,要么返回404
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^.+$ %{REQUEST_FILENAME}.html [L]
前两行基本上是1.和2.除了Nginx不需要重写url,因为try_files指令使得它足够聪明,只要找到匹配就返回请求
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。