39
产品文档
建站入门
购买问题
网站404页面返回200状态码的解决方法

看日志的时候,发现到了有大量请求到了网站其实并不存在的地址,但是返回码居然是200??

这就不正常了,于是手工访问了一下一个不存在的页面,虽然在前台给我展示了一个404页面,但是浏览器显示返回码确实是200!!

刚开始还以为网站更新后改了机制,把主题下的404.php加了一个强行的404返回码,发现没有任何效果。

最后发现,居然是自己以前把404页面静态化留下的坑!

原因很简单,当时经常有人攻击一些不存在的页面,也就是每次都是动态的404,服务器自然就容易高负载,因此做了一个静态化处理:

通过curl请求一个不存在的地址,触发404返回内容,然后保存在网站的某个目录下,比如xxxx下面:

curl -o /data/wwwroot/xxx.xx/xxxx/404.html https://xxx.xx/404/404

然后,在Nginx Vhost下新增404响应规则:

error_page 404=/xxxx/404.html;

重启Nginx之后,再访问不存在的博客页面的时候,Nginx就直接返回404.html的内容了,从而实现404页面的静态化。

但是,Nginx这里写错了,导致每次返回404.html都是200返回码!!这样其实会误导搜索引擎的判断,以为页面是存在的。。。。

正确的Nginx配置方法应该是:

error_page 404 /xxxx/404.html;

也就是不用等号,而是用空格!修改后,重启Nginx,然后访问不存在的地址发现已经是404返回码了,问题解决!


这条帮助是否解决了您的问题? 已解决 未解决

提交成功!非常感谢您的反馈,我们会继续努力做到更好! 很抱歉未能解决您的疑问。我们已收到您的反馈意见,同时会及时作出反馈处理!