据说在第三次科技革命之前,互联网的形态就是一个大型的中央数据库,这个数据库就设置在404房间里面。那时候所有的请求都是由人工手动完成的,如果在数据库中没有找到请求者所需要的文件,或者由于请求者写错了文件编号,用户就会得到一个返回信息:room 404 : file not found。后来互联网兴起后,人们也就习惯了用404作为服务器未找到文件的错误代码了。当然实际考证传说中的room 404是不存在的。
一、404 Not Found是什么意思?
404页面就是当用户访问某网站时,点击了错误的链接时,所返回的页面。最常见的出错提示:404 Not Found。其目的就是告诉浏览者其所请求的页面不存在或链接错误,同时引导用户使用网站其他页面而不是关闭窗口离开。错误页面的文字可以自定义,有些网站没有设置404错误页面,或者是直接采取的跳转到首页,这样一般都说对搜索引擎不是很友好。
HTTP 404或Not Found错误信息是HTTP的其中一种“标准回应信息”(HTTP状态码),此信息代表客户端在浏览网页时,服务器无法正常提供信息,或是服务器无法回应且不知原因。404错误信息可能与“server not found”(无法找到服务器)或其他类似信息产生混淆。
二、404错误页面对网站的影响
404页面是网站必备的一个页面,它承载着用户体验与SEO优化的重任。404页面通常为用户访问了网站上不存在或已删除的页面,服务器返回的404错误。如果站长没有设置404页面,会出现死链接,蜘蛛爬行这类网址时,不利于搜索引擎收录。
可以说,404错误页面是增强用户体验的很好的做法,但马海祥发现很多站长在应用过程中往往并未注意到对搜索引擎的影响,譬如:错误的服务器端配置导致返回“404”状态码或自定义404错误页面使用Meta Refresh导致返回“302”状态码。
正确设置的自定义404错误页面,不仅应当能够正确地显示,同时,应该返回“404”错误代码,而不是“200”或“302”。虽然对访问的用户而言,HTTP状态码究竟是“404”还是“200”来说并没有什么区别,但对搜索引擎这则是相当重要的。对这点大家可以查看马海祥博客的《你真的懂404页面设置吗》,文章中有具体详细的介绍。
总的来说,搜索引擎蜘蛛在请求某个URL时得到“404”状态回应时,即知道该URL已经失效,便不再索引该网页,并向数据中心反馈将该URL表示的网页从索引数据库中删除,当然,删除过程有可能需要很长时间;而当搜索引擎得到“200”状态码时,则会认为该url是有效的,便会去索引,并会将其收录到索引数据库,这样的结果便是这两个不同的url具有完全相同的内容:自定义404错误页面的内容,这会导致出现复制网页问题。轻则被搜索引擎降权,重则会K掉网站。
三、导致404 Not Found错误页面的原因
HTTP 404错误意味着链接指向的网页不存在,即原始网页的URL失效,这种情况经常会发生,很难避免,当Web服务器接到类似请求时,会返回一个404 状态码,告诉浏览器要请求的资源并不存在。其导致这个错误的原因一般来说有几种情况:
1、无法在所请求的端口上访问Web站点。
2、Web服务扩展锁定策略阻止本请求。
3、MIME映射策略阻止本请求。
4、网站更新改版,但某些局部板块沿用原来的模块,而原有的模块调用的文件已经被删除或转移了路径。
5、跟踪访问的各类脚码或CSS文件无效但调用代码依然存在。
6、某个目录直接删除(导致一段时间该目录的文件在被爬行时全部报404 Not Found错误)
7、网页URL生成规则改变、网页文件更名或移动位置、导入链接拼写错误等,导致原来的URL地址无法访问
四、404页面的使用误区
虽然404错误页面是为了用户体验而显示的一个错误页面引导的作用,并不参与网站的排名。但是错误的使用404页面,也会导致网站的被降权,比如以下2种情况:
1、错误的服务器端配置导致404错误页面返回“200”状态码
当搜索引擎蜘蛛在请求某个URL时得到“404”状态回应时,即知道该URL已经失效,便不再索引该网页,并向数据中心反馈将该URL表示的网页从索引数据库中删除,当然,删除过程有可能需要很长时间;而当搜索引擎得到“200”状态回应时,则会认为该url是有效的,便会去索引,并会将其收录到索引数据库,这样的结果便是这两个不同的url具有完全相同的内容:自定义404错误页面的内容,这会导致出现复制网页问题。对搜索引擎而言,特别是Google,不但很难获得信任指数TrustRank,也会大大降低搜索引擎对网站质量的评定。
2、自定义404错误页面使用Meta Refresh导致返回“302”状态码
常常看到许多网站的自定义404错误页面采取类似这样的形式:首先显示一段错误信息,然后通过Meta Refresh将页面跳转到网站首页、网页地图或其他类似页。根据具体实现方式不同,这类404页面可能返回“200”状态码,也可能返回“302”,但不论哪种,从SEO技术角度看,均是一种错误的选择。
对“200”状态的情况我们上面已经谈过,那么,当404页面返回“302”时,搜索引擎会怎么对待呢?从理论上说,对“302”错误,搜索引擎认为该网页是存在的,只不过临时改变了地址,仍然会索引收录该页,这样,同样会出现类似于“200”状态码时的重复文本问题;其次,以google为代表的主流搜索引擎对302重定向的适用范围要求越来越严格,这类不当使用302重定向的情况存在很大的风险。
五、解决404 not found错误的方法
1、对于存在的网页内容由于路径改变而导致访问不了时,可在IIS 中定义404错误指向一个动态页面,在页面里面使用301永久重定向跳转到新的地址,此时服务器返回301状态码。
2、设置404指向一个设计好的html 文件,此时页面返回的404状态码。 现在的idc提供商基本都提供404设置的功能,直接上传文件设置即可。在IIs中设置方法:打开IIS管理器-->点击要设置自定义404的网站的属性-->点击自定义错误选项-->选中404页-->选中并打开编辑属性-->设置成 URL --> URL 里填写“/err404.html”-->按确定退出再把做好的err404.html 页面上传到网站根目录下。此处在“消息类型”中一定要选择“文件”或“默认值”,而不要选择“URL”,不然,将导致返回“200”状态码。
3、把404指向一个动态页面,比如error.asp,如果不在页面里面进行设置,仅仅是返回提示的HTML 代码,将导致页面返回200 状态码,这是不正确的,我们可以在显示完提示内容后,增加语句:Response.Status="404 Not Found" ,这样就保证页面返回404状态码。
4、Apache下设置404错误页面。为Apache Server设置404错误页面的方法很简单,只需在.htaccess 文件中加入如下内容即可,ErrorDocument 404 /notfound.php。
六、如何制作404页面
对于404页面的制作,常规来说分以下两种情况:
1、Apache
为Apache Server设置404错误页面的方法很简单,只需:
(1)、在.htaccess文件中加入如下内容:ErrorDocument 404 /notfound.php,将.htaccess文件上传到网站根目录。
(2)、制作一个404页面,随便您设计,命名为notfound.php,同样上传到网站根目录。
马海祥博客提醒大家一定要注意以下2点:
(1)、切记不要将404错误转向到网站主页,否则可能会出现主页在搜索引擎中消失的情况。
(2)、切记不要使用绝对URL,如果使用绝对URL会返回302+200的状态码。
2、IIS/.net
首先,修改应用程序根目录的设置,打开web.config文件编辑,在其中加入如下内容:
马海祥博客提醒大家要注意一点:上文例中error.asp为系统默认的404页面,notfound.asp为自定义的404页面,使用时请修改相应文件名。
然后,在自定义的404页面notfound.asp中加入以下为引用的内容:
<% Response.Status = 404 Not Found %>
这样,便可以保证IIS能够正确地返回404状态码。如何大家觉的这个404页面太过于简单的话,可以查看马海祥博客上的《如何正确设置多样性的404页面》一文中的相关介绍来重新自定义网站的404页面。
七、制作404页面的注意事项
1、不要使用绝对URL
如果使用绝对URL,会导致返回的状态码是302+200。
2、不要把404页面设置成自动跳转
404页面不要自动跳转,让用户来决定去向。这涉及到404页面的制作,提供用户体验很重要。
3、不使用专业术语
“404错误”这个词的使用一直非常规范,但这并不是你使用专业术语吓跑访客的理由。“找不到网页”这个说法相比来说更准确也更易于接受。
4、不要责备访客
你的访客很有可能是从其他网站链接或者是你网站上一个旧链接而来。看到这个错误页面并不是他们的错,所以要善待他们。撰写的措辞要充满歉意并尽量提供有益的帮助,而不是一些让访客们感到糟糕的文字。
5、提示访客检查拼写
还有一个可能:访客看到404错误页面是由于他们自己在输入URL网址时出现了拼写错误。提示访客检查他们的拼写,但不要失礼。就像我们在上面提到的,你的措辞不要让访客们感到你是在责备他们。
6、让页面返回404
每个网页都有一个服务器响应代码。代码200是指页面一切正常,404则是指页面无法被找到。如果你已经指定了自定义的404错误页面,则需要确保页面的标题是返回正确的响应代码。有几种不同的方法可以做到这一点,最简单的就是用你的htaccess文件来指定错误页面。更多关于服务器返回代码的介绍,可查看马海祥博客的《解读IIS日志中搜索引擎蜘蛛名称代码及爬寻返回代码》相关介绍。
7、明确表明404错误
清楚地向访客声明他们正在搜寻的页面无法找到,且不要让错误页面看起来与正常的内容页(如:加入过多的文本和链接)太过相似。你是想要表明这是一个错误页面,所以就不要羞于向访客们声明这一点。
8、帮助访客找到页面
404错误页面已经呈现在访客面前,表明这个页面并不是他们正在搜寻的。所以你应该设法帮助他们找到原来的页面。确保你的错误页中包含一个选项来协助用户寻找他们想要的页面,甚至可以包括有过更改的页面的链接。
9、放置网站主页链接
不要让访客无处可去或是无法找到你的网站信息。至少应该有一个链接链回你的网站主页。这样一来,从其他网站链接而来的访客就可以了解你以及你的网站,甚至他们可能在你的网站中找到一些他们喜欢的内容。
10、让访客方便反馈信息
如果访问者点击了你网站上的一个错误链接,你会想了解这个链接故障。如果通过404页面给他们提供一个反馈信息的便捷方式,让他们可以报告这个故障以便你去解决。这只需要一个非常简短的形式来提示访客告诉你他们来自哪个页面及哪个链接。通过这个方法,你可以获取到所有你需要的信息。
访客们可能依然因为无法找到他们想要的页面而感到困惑和烦恼,因此给他们一个发泄不满的地方,同时也给你一个做出回应并提供帮助的机会。这很可能会为你挽回一个潜在客户。
11、保持品牌风格
我们都看过非常酷的404页面设计。但千万不要使这个页面的设计与你网站的其他页面相差太大,否则会看起来这个页面不像你网站的设计,会让访客产生疑惑,误以为自己已经被带到了一个外部网站。
12、注意404页面的语言版本
如果你的网站是多语种的,404错www.qipeiying.com误页面将从你所有语言版本的网站中获取错误信息。无论你想要显示任何信息,都需要将其翻译成各个语言版本,使每个人都能理解。同时还需提供一个链接返回到访客所对应的语言版本的网站。
13、让访客搜索想要的
如果访客正在访问的页面已被移动,你可能想给他们一个途径来搜索页面被移动到了何处,可以考虑在页面增加一个搜索框。
14、修复你的无效链接
如果你得到的数据显示有大量的访客访问您的404页面(检查你的网站的分析数据来确定数量),这表明你的网站上有很多无效链接。你完全可以通过修复这些链接来阻止访客进入404页面。利用一些网站测试工具可以帮助检查是否有无效链接,使你能够迅速找到并修复他们而不必等待别人来告诉你。
15、不要把404页面重定向到主页
不要将404错误页面直接重定向转到www.qipeiying.com网站主页,否则可能会导致主页在搜索引擎中消失。一些404错误页面会立刻重定向到网站主页,这样做非常不好。你的访客不知道他们已经链接到了错误的页面,而且他们会感到困惑因为被无缘无故地链回到了网站主页。
16、检查404页面设置效果及返回状态
404页面设置完成,一定要检查是否正确。但http头信息返回的一定要是404状态。这主要是对搜索引擎有关系,因为如果你网站产生较多页面时候但搜索引擎看到的是很多一样的正常页面,有可能会误被认为作弊。
马海祥博客点评: