当前位置: 首页 > 编程笔记 >

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

汪安宁
2023-03-14
本文向大家介绍一个等号引发的血案(谈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页面,而这对普通用户来说看上去无差异,然而给搜html" target="_blank">索引擎发出的信号却是致命的。切忌切忌。因为此前的服务器,我一直都是用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 proxy_pass的一个/斜杠引发的血案,包括了详解Nginx proxy_pass的一个/斜杠引发的血案的使用技巧和注意事项,需要的朋友参考一下 背景 一个nginx的server模块下需要proxy到两个server,所以就通过location的不同路径来区分转发到不同的服务器上。 一开始是这么写的 但是忘记了server1上有个服务路径是/indexNew,结

  • 本文向大家介绍Nginx中定义404页面并且返回404状态码的正确方法,包括了Nginx中定义404页面并且返回404状态码的正确方法的使用技巧和注意事项,需要的朋友参考一下 前几天,一朋友出程序出问题却怎么查都没看出问题,于是让我帮它看看。其实它是ajax请求了很多个模板,然后把模板写到页面中。关键是所有请求的页面都是200正常状态码返回,表面上看没什么问题,实际上有些请求虽然返回200状态码,

  • 本文向大家介绍Nginx tp3.2.3 404问题解决方案,包括了Nginx tp3.2.3 404问题解决方案的使用技巧和注意事项,需要的朋友参考一下 最近我把Apache给换成nginx,当我把tp项目搬过去运行的时候发现404 错误 ,原来是因为nginx不支持 pathinfo 模式,需要自己配置 下面我配置 在server配置里面 保存配置之后,重启 nginx ,配置成功 直接支持类

  • 配置如下: WebPackOptionsValidationError:无效的配置对象。Webpack是使用与API模式不匹配的配置对象初始化的。-Configuration.Module具有未知属性“Loaders”。这些属性是有效的:对象{exprContextCritical?,exprContextRecursive?,exprContextRegexp?,exprContextRegex

  • 我知道这可能会被选为副本(因为我已经看到了这张使用Dijkstra算法的负权重图,所以我认为其中没有一个答案是我想要的。我对Dijkstra算法在有一条负边的图中的解感兴趣,但Dijkstra仍然会显示正确的解。那张图会是什么样子?我无法想象,或者我不擅长enough需要了解Dijkstra如何处理负边缘。我知道有一个带负边的图,可以用Dijkstra遍历,并且仍然有正确的路径。请不要告诉我使用贝