微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在nginx中隐藏文件扩展名

来自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

hg中断链接通过proxy_pass服务于Nginx后面

将Apache .htaccess转换为Nginx

Nginx重写URL如果特定的域名和特定的url

Nginx将子域转换为无redirect的path组件

PHP / Apache的REQUEST_URI不同的行为?

Nginx重写prestashop的规则,如何设置,debugging和启用?

一个子目录下的Nginx重写规则

简单的.htaccess子域重写

Nginx的url中删除.PHP扩展名

你会使用try_files指令,如下所示:

location / { try_files $uri $uri.html =404; }

对于与位置块匹配的每个uri,这将做以下处理

检查是否有完全匹配的文件,如果是这样的服务

如果找不到完全匹配,请尝试将.html添加到请求中

如果没有发现,要么返回404

根本没有重定向,只是Nginx依次检查几个选项。

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule ^.+$ %{REQUEST_FILENAME}.html [L]

前两行基本上是1.和2.除了Nginx不需要重写url,因为try_files指令使得它足够聪明,只要找到匹配就返回请求

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐