最近这段时间一直忙于整理网站的错误页面,期间整理了很多关于404 Not Found错误页面的知识,加之最近也在帮团队新来的人员培训seo优化知识,所以在此借助马海祥博客的平台就拿出来跟大家一起分享一下。

据说在第三次科技革命之前,互联网的形态就是一个大型的中央数据库,这个数据库就设置在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文件编辑,在其中加入如下内容:

<configuration>
  <system.web>
  <customErrors mode=On defaultRedirect=error.asp>
  <error statusCode=404″ redirect=notfound.asp />
  </customErrors>
  </system.web>
  </configuration>

马海祥博客提醒大家要注意一点:上文例中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错误页面将从你所有语言版本的网站中获取错误信息。无论你想要显示任何信息,都需要将其翻译成各个语言版本,使每个人都能理解。同时还需提供一个链接返回到访客所对应的语言版本的网站。

13、让访客搜索想要的

如果访客正在访问的页面已被移动,你可能想给他们一个途径来搜索页面被移动到了何处,可以考虑在页面增加一个搜索框。

14、修复你的无效链接

如果你得到的数据显示有大量的访客访问您的404页面(检查你的网站的分析数据来确定数量),这表明你的网站上有很多无效链接。你完全可以通过修复这些链接来阻止访客进入404页面。利用一些网站测试工具可以帮助检查是否有无效链接,使你能够迅速找到并修复他们而不必等待别人来告诉你。

15、不要把404页面重定向到主页

不要将404错误页面直接重定向转到网站主页,否则可能会导致主页在搜索引擎中消失。一些404错误页面会立刻重定向到网站主页,这样做非常不好。你的访客不知道他们已经链接到了错误的页面,而且他们会感到困惑因为被无缘无故地链回到了网站主页。

16、检查404页面设置效果及返回状态

404页面设置完成,一定要检查是否正确。但http头信息返回的一定要是404状态。这主要是对搜索引擎有关系,因为如果你网站产生较多页面时候但搜索引擎看到的是很多一样的正常页面,有可能会误被认为作弊。

马海祥博客点评:

尽管404页面被用户看到的概率相对全站的其他页面要小很多,但随着网站的长期积累,页面难免会出错(如马海祥博客,虽然现在页面不是很多,但最近也曾出现过错误的链接)。无论是用户的误操作还是服务器的原因,这是一个极少数才会出现的错误情况,作为网页的设计者或者开发者,有时候我们无法控制错误页面的出现,但我们可以通过使用一个定制的404错误页面将损害降到最低。好的用户体验是我们不能放过任何一个小的细节,一我们需要在这个页面很好的把信息传达给用户,二引导用户下一步的操作,引导用户留在我们的网站而不是沮丧的关闭窗口。

本文为马海祥博客原创文章,如想转载,请注明原文网址摘自于http://www.mahaixiang.cn/seoyjy/404.html,注明出处;否则,禁止转载;谢谢配合!

404 Not Found错误页面的解决方法和注意事项的更多相关文章

  1. coreseek常见错误原因及解决方法

    coreseek常见错误原因及解决方法 Coreseek 中文全文检索引擎 Coreseek 是一款中文全文检索/搜索软件,以GPLv2许可协议开源发布,基于Sphinx研发并独立发布,专攻中文搜索和 ...

  2. android 真机调试出现错误 INSTALL_FAILED_INSUFFICIENT_STORAGE 的解决方法。

    关于这个神奇的 内存不够错误的通常解决方法,网上大把,建议大家在尝试过了网上的方法后再来尝试下我的这种方法. 编译工具: android studio 测试真机:米 2 调试的时候出现:INSTALL ...

  3. 无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问。)” (Microsoft SQL Server,错误: 5120)的解决方法

    无法打开物理文件xxx.mdf操作系统错误 5:“5(拒绝访问.)” (Microsoft SQL Server,错误: 5120)的解决方法   问题描述: 在附加数据库到sql server时,附 ...

  4. 错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法

    错误:Unsupported major.minor version 51.0(jdk版本错误)的解决方法 java.lang.UnsupportedClassVersionError: org/ap ...

  5. 批处理命令篇--配置免安装mysql 5.6.22, 以及1067错误的一个解决方法

    mysql 服务启动出现1067错误的一个解决方法: 当服务启动出现1067错误时,可查看“windows 事件查看器”,发现类似错误提示 Can't find messagefile 'F:\    ...

  6. IIS发布网站浏览之后看到的是文件目录 & Internal Server Error 处理程序“ExtensionlessUrlHandler-ISAPI-4.0_64bit”在其模块列表中有一个错误模块“IsapiModule” 解决方法 & App_global.asax.pduxejp_.dll”--“拒绝访问。 ”

    Q:IIS发布网站浏览之后看到的是文件目录 A:它出现了一个说到.NET4.0 更高框架什么的错误,所以我将 .NTE CRL版本由4.0改为2.0了,改为2.0后就出现了只能浏览文件目录了.改为4. ...

  7. ORA-04091错误原因与解决方法

    最近工作中写了一触发器报错:ORA-04091:table XX  is mutating, trigger/function may not see it. 下面通过官方文档及网友提供资料分析一下错 ...

  8. Chrome Inspect调试微信出现空白页面的解决方法

    首先,需要打开手机的USB调试和微信的TBS 调试开关. 如果不打开TBS开关,Inspect时会检测不到任何微信的H5页面 使用微信扫码下方二维码,打开TBS调试开关: 普通网页: 小程序: 微信扫 ...

  9. DirectX SDK (June 2010)安装错误S1023,解决方法

    转自:http://hi.baidu.com/rootcat/item/6730f15f85e2c1958c12ed81 DirectX SDK (June 2010)安装错误S1023,解决方法 导 ...

随机推荐

  1. Django 源码小剖: 应用程序入口 WSGIHandler

    WSGI 有三个部分, 分别为服务器(server), 应用程序(application) 和中间件(middleware). 已经知道, 服务器方面会调用应用程序来处理请求, 在应用程序中有真正的处 ...

  2. BW:如何加载和生成自定义的层次结构,在不使用平面文件的SAP业务信息仓库

    介绍 通常情况下,报告需要在一个类似树的结构来显示数据.通过启用此特性在SAP BW层次结构.高级数据显示的层次结构的顶层节点.更详细的数据可以向下钻取到的层次结构中的下级节点的可视化. 考虑一个例子 ...

  3. Difference between Satisfiable, Valid, Unsatisfiable & Invalid

    A formula is satisfiable if it is possible to find an interpretation (model) that makes the formula  ...

  4. android 打包流程

    .使用Android SDK提供的aapt.exe生成R.java类文件 .使用Android SDK提供的aidl.exe把.aidl转成.java文件(如果没有aidl,则跳过这一步) .使用JD ...

  5. ios辅助功能之voiceover实战

      一个元素朗读的内容可分为以下4个部分(4部分按先后顺序朗读) 1. Label:元素的标题 2. Value:元素的值(可选) 3. Traits:元素的特征,即类型,包含: 按钮/链接/搜索框/ ...

  6. RESTFUL接口

    原文地址:http://kb.cnblogs.com/page/512047/ 1. 什么是REST REST全称是Representational State Transfer,中文意思是表述(编者 ...

  7. string-->wstring-->string

    std::string src("三毛三毛三毛三毛三三三三流浪记"); size_t size = mbstowcs(NULL,src.c_str(),0); std::wstri ...

  8. 【经验谈】XmlSerializer的坑

    XmlSerializer我想现在用的人可能不多了,大家都在用Json.我现在所在的公司依然在用,所以发现了这个坑.当然这个坑存在很久了只是没用过所以才发现. 事情是这样的,测试那边说系统偶尔会报找不 ...

  9. Mvc 拼接Html 导出 Excel(服务器不用安装呦!支持2007以上版本)

    新公司,新接触,老方法,更实用. 之前接触过Webform,winfrom 的导出Excel方法 ,优点:省事.缺点:服务器必须安装Office 这几天做项目 和 大牛学习了一下 新的方法,自己加以总 ...

  10. CLR via C#深解笔记一 - CLR & C# 基础概念

    写在前言   .Net Framework并不是Win 32 API 和COM上的一个抽象层.   某种程度上,它是自己的操作系统,有自己的内存管理器,自己的安全系统,自己的文件加载器,自己的错误处理 ...