There are questions remain, We'll search for the answers together. But one thing we known for sure,the future is not set!

【原创文章】nginx设置了404可是错误页面全跳转到首页的原因和解决办法

系统防护 百蔬君 6736℃ 已收录 0评论

最近遇到一个网站,是nginx环境,明明设置了404自定义页面,但是当打开这些不存在的页面时,全部跳转到首页,而不是打开这个设置的404页面。

我看网上也有很多人遇到这个问题,今天我就把这个原因说说。

有这个问题的网站nginx配置文件中都有这么几个句子

       location / {
                 try_files $uri $uri/ /?$args;                
        }

引起这个问题的原因在于这里,因为在nginx中除了rewrite有重定向功能, nginx更为推崇的是try_files来执行重定向功能,因为rewrite会把所有的文件包括静态文件都重定向然后发送给php-fpm。

try_files $uri $uri/ /?$args;

这句话的意思就是查找文件$uri是否存在,如果不存在就查找文件夹$uri/是否存在,如果不存在就执行最后一个参数/?$args,这个打开肯定就是设置的默认index文件了,这就是为何设置了404没有起作用而跳转到首页的原因。

那么解决办法也来了,就是在这里添加404判断。

        location / {
                try_files $uri =404;
                 try_files $uri $uri/ /?$args;                
        }

或者直接加到一起

        location / {
                 try_files $uri $uri/ /?$args 404;                
        }

try_files后面接参数也是可以的,如果前面的文件都不在,那么就执行404错误,也就是我们定制的404页面了。

转载请注明:百蔬君 » 【原创文章】nginx设置了404可是错误页面全跳转到首页的原因和解决办法

喜欢 (8)or分享 (0)
发表我的评论
取消评论

请证明您不是机器人(^v^):

表情