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

这篇文章主要介绍了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″

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

一:确定你的系统是UTF编码 [root@Tserver ~]# env|grep LANG LANG=en_US.UTF-8 二:NGINX配置文件里默认编码设置为utf-8 server { listen 80; server_name .inginx.com ; index index.html index.htm index.php; root /usr/local/nginx/html/inginx.com; ch
很多网站需要采用伪静态来访问动态网页。所以像phpcms这样的系统,都提供了一个.htaccess文件,供写伪静态规则。但这个规则是针对Apache的。在nginx服务器上并不起作用。 nginx 可以直接将伪静态规则写在配置文件中,但这个需要有服务器管理权限,普通站长不
在网站建设中需要网页重定向的情况很多:如网页目录结构变动,网页重命名、网页的扩展名改变、网站域名改变等。如果不做重定向,用户的收藏和搜索引 擎数据库中的旧地址只能让访客得到一个404错误信息页面,访问流量白白丧失。不仅如此,之前该页面的一切积
利用nginx泛域名解析配置二级域名和多域名 网站的目录结构为 html ├── bbs └── www html为nginx的安装目录下默认的存放源代码的路径。 bbs为论坛程序源代码路径 www为主页程序源代码路径 把相应程序放入上面的路径通过 http://www.youdomain.com 访问
一:安装nginx nginx在windows下进行完整配置,需要下载windows的nginx,下载完成后,将下载的nginx解压到你要安装配置的路径,假设我这里是D:\nginx-1.11.4\nginx-1.11.4\,打开nginx的文件夹,找到里面的conf目录的nginx.conf,修改以下内容: 打开错误日
一直在Linux平台上部署web服务,但是最近的一个项目,必须要用windows,不得已再次研究了nginx在windows下的表现,因为Apache httpd在Windows下表现其实也不算太好,而我更喜欢nginx。 惊奇地发现nginx在Windows下已经趋于稳定,于是我决定使用nginx作为web