海天无影Blog

不用wordpress404设置,开启nginx的404设置

/ 4025阅 / 0评 / 0

先说明一下背景情况,之前海天为了提高博客的速度,将google analytics的统计转移到nginx服务器层面。使用一段时间发现google analytics会将一些明显应该是404的访问也统计进去,比如恶意的猜解数据库备份文件、wordpress漏洞文件等,当时以为是wordpress的404页面设置有问题,但是通过检测,发现head返回的代码的确是404错误而不是200。

而且nginx后台设置的将访问信息转发到google analytics也的确将404排除掉了,后来查看网站日志的时候发现,在访问没有的页面和文件时,日志竟然没有记录为404错误,而是正常200。

看来wordpress在处理没有的页面和文件时,在wordpress这个层面上使用index.php输出了404错误。但并没有传到nginx服务器,对服务器来说index.php是可以正常访问的。

所以如果要使nginx传输给google analytics数据是排除掉404的,必须使用服务器404错误。

海天使用的是lnmp一键脚本安装的环境,找到网站的conf文件,本以为直接将 #error_page 404  /404.html 前面的#号去掉,就可以了,但是发现博客还是使用的wordpress设置的404页面。

解决error_page 404 无效

nginx如果想要 error_page 404 /404.html生效,必须设置 fastcgi_intercept_errors on;

如果没有这个设置就,算设置了error_page 也没用,所以只需要在网站的配置conf文件中加上 fastcgi_intercept_errors on;

nginx设置的404页面就生效啦!

ps:这里要注意error_page 404 /404.html中404页面的路径是相对于网站的路径,不要将在服务器的绝对路径写上去。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注