一个等号引发的血案(谈Nginx正确的404配置)

 更新时间:2014年08月26日 10:34:29   投稿:junjie  
这篇文章主要介绍了Nginx正确的404配置方法,本文根据实际案例总结而来,可以说是一个等号引发的血案!需要的朋友可以参考下

这是一个血淋淋的教训,这么说一点也不过分。因为最近发生了一个重大问题,网站流量大幅下跌,跌了近80%了。由于事件发生之前做过一些工作,加了大量友链,而且外站权重都相当高,在那天还发生了一次挂马事件,当然也即时解决了。还做了其它一些关键字内、外链优化等等。这样使得查找问题的原因就变的难上加难。偶然的原因发现,百度收录的链接开始出现错误,由于网站URL方式采用的目录式结构,最后一个字符都是/,然而百度收录的页面却无缘无故把这个线去掉了,而这种访问方式,我并没有做兼容。当时也查看了网站页面上的重写结果,没有发现哪里页面的链接出现过这种错误,那么百度里收录的这些页面从何而来?真的不得而知了。可能是外链里有些地址把那个目录后的斜线去掉了?不管它怎么收录的了,尽快做了一下兼容性工作,因为那种错误链接会被转到404页面上去。刚刚又查了一下,发现了一点蹊跷。

以下摘自百度百科:

复制代码 代码如下:

404对seo的影响

自定义404错误页面是增强用户体验的很好的做法,但在应用过程中往往并未注意到对搜索引擎的影响,譬如:错误的服务器端配置导致返回“200”状态码或自定义404错误页面使用Meta Refresh导致返回“302”状态码。正确设置的自定义404错误页面,不仅应当能够正确地显示,同时,应该返回“404”错误代码,而不是 “200”或“302”。虽然对访问的用户而言,HTTP状态码究竟是“404”还是“200”来说并没有什么区别,但对搜索引擎这则是相当重要的。


搜索引擎蜘蛛在请求某个URL时得到“404”状态回应时,即知道该URL已经失效,便不再索引该网页,并向数据中心反馈将该URL表示的网页从索引数据库中删除,当然,删除过程有可能需要很长时间;而当搜索引擎得到“200”状态码时,则会认为该url是有效的,便会去索引,并会将其收录到索引数据库,这样的结果便是这两个不同的url具有完全相同的内容:自定义404错误页面的内容,这会导致出现复制网页问题。轻则被搜索引擎降权,重则会K掉网站。

而恰恰我发现这里服务器上nginx里404的配置就有这样一个问题,访问到无效地址的时候,跳转到的404页面返回状态码是200,汗了。怎么会这样?

一个等号引发的血案

最后发现问题的原因是配置里多余的一个“=”导致的这个状态码错误。

现在网上大多数nginx的404配置写法还是error_page 404 = /404.html; 注意这是个错误的写法,正确的写法是没有这个等号的,就是由于这个等号的指引让nginx将404的的错误进入链接都以200正常状态码显示了自定义的404页面,而这对普通用户来说看上去无差异,然而给搜索引擎发出的信号却是致命的。切忌切忌。因为此前的服务器,我一直都是用apache来做的,也是第一次遇到这个问题。改完后用工具检查一下,已经正常了。

其实这个错误如果更好的利用起来的话,还可以将错就错,也是跟业内人交流得知的,当然这就是一个偏门左道的事了,不在这里教坏大家。当然如果外链流量小,或者没有大流量的错误链接流入的话,这个也就不成立了。

最后可以通过这个工具进行检测:

http://www.seochat.com/seo-tools/check-server-headers/

输入一个你网站下的错误的路径,检测出有“HTTP/1.1 404 Not Found”就可以了。

或者使用下面的方法检查更方便,在命令行下输入:

复制代码 代码如下:

# curl -I http://www.yourdomain.com/testurl.html
HTTP/1.1 404 Not Found
Server: nginx/1.4.4
Date: Fri, 10 Jan 2014 02:36:39 GMT
Content-Type: text/html
Content-Length: 1782
Connection: keep-alive
Vary: Accept-Encoding
ETag: “5018ffe4-6f6″

相关文章

  • nginx信号集案例详解

    nginx信号集案例详解

    本篇内容给大家详细分析一下nginx信号集相关知识以及实例中的问题分析,一起学习参考下。
    2017-11-11
  • Nginx+Tomcat实现负载均衡、动静分离的原理解析

    Nginx+Tomcat实现负载均衡、动静分离的原理解析

    这篇文章主要介绍了Nginx+Tomcat实现负载均衡、动静分离的原理解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • nginx lua集成kafka的实现方法

    nginx lua集成kafka的实现方法

    这篇文章主要介绍了nginx lua集成kafka的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • nginx+tomcat 通过域名访问项目的实例

    nginx+tomcat 通过域名访问项目的实例

    这篇文章主要介绍了nginx+tomcat 通过域名访问项目的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • Nginx could not build the server_names_hash 错误的解决办法

    Nginx could not build the server_names_hash 错误的解决办法

    这篇文章主要介绍了Nginx could not build the server_names_hash 错误的解决办法,需要的朋友可以参考下
    2014-03-03
  • nginx配置location方法总结

    nginx配置location方法总结

    这篇文章主要介绍了nginx配置location方法总结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01
  • nginx禁止某个IP访问站点的设置方法

    nginx禁止某个IP访问站点的设置方法

    近期发现博客遭到某些人的恶意灌水,频繁地利用发帖机器人发表评论,给博客的管理带来诸多不便,搜索了一下资料,可以利用nginx的ngx_http_access_module 模块设置允许/禁止哪些ip或ip段访问站点。
    2010-12-12
  • nginx上传文件大小报错500的解决办法

    nginx上传文件大小报错500的解决办法

    这篇文章主要介绍了nginx上传文件大小报错解决办法的相关资料,小文件可以提交,大文件会报500内部错误,这里提供解决办法,需要的朋友可以参考下
    2017-08-08
  • Nginx配置Https安全认证的实现

    Nginx配置Https安全认证的实现

    为了保障应用的安全性,我们在架构网络层的时候需要采用HTTPS协议。本文介绍了Nginx配置Https安全认证的实现,分享给大家,感兴趣的可以了解一下
    2021-05-05
  • nginx日志模块及日志定时切割的方法

    nginx日志模块及日志定时切割的方法

    本篇文章主要介绍了nginx日志模块及日志定时切割的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05

最新评论