IIS下自定义404页面返回200状态码的解决方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

IIS下自定义404页面返回200状态码的严重性及解决方法

今天给大家分享自己在制作404页面时遇到的细节问题,分享给大家目的是让大家不要忽视任何一个可能给自己网站收录及排名有影响的细节,往往细节决定成败,处理不好可能导致网站收录减少,甚至被K。

在了解404页面前,先给大家了解一下几个常见的HTTP状态码。

* 404 : 请求的网页不存在(不排除日后该链接有效的可能性);

* 410 : 请求的网页不存在(永久);

* 200 : 服务器成功返回网页

* 302 : 网址临时重定向(跳转)

* 301 : 网址永久重定向

* 403 : 拒绝访问

* 500 : 内部错误

当访问一个不存在的页面时会返回404状态码,告诉搜索引擎这个页面不存在或者已经删除。

默认情况下没做自定义404页面时,访问一个不存在的页面会如下图所示

出现这样的页面无论是对用户还是对搜索引擎都是非常不友好的。

下面我们就来制作自定义的错误页面,效果如下图所示:

这样的404页面,有几个好处:

一、可以提示访客所访问的页面不存在,而不是让访客看到一个错误的提示

二、可以引导访客浏览其它页面,减少跳出率

现在你是不是为上面的效果感到很激动?

且慢,做好404页面后还要检测一下404页面的状态码,是不是真的是返回404,还是200?

可以在这个地址/getheader.htm里检测状态码,输入你网站上一个不存在的页面,看他返回的状态码是什么?

如,下面我就检测一下硕研科技网站上的404状态码,结果如下图:

可以看到我们访问/fdsfsdf这个不存在的页面时返回的状态码是404.这就达到了我们的目的。

要是你做了自定义错误页后,用上面的工具检测到你的错误页返回的是200状态码的话,一定要联系空间商进行修改,不然后果非常严重。

要是你的虚拟主机是IIS,在IIS中设置404为相应的错误信息页有两种方式:

1、如果“消息类型”你选择的是“文件”,则只能使用.html或htm结尾的文件,IIS执行后会自动输出404状态。

消息类型选择文件,然后文件那里点击浏览,选择你自定义的错误页面即可。如下图所示:

自定义错误页设置

2、如果你“消息类型”选择了“URL”,则必须用asp文件(因为只有在asp文件中才能设置404状态),否则访问错误页时会返回200状态码。

这个你叫空间商设置一下即可。

如果网站的自定义404错误页面在url无效时不返回“404”状态码而代之以“200”,会发生什么情况呢?很明显,搜索引擎会认为这个“根本不存在的”网页在网站内是存在的,这会导致很多问题,影响网站的最终SEO效果。

自定义404页面返回不当状态码如“200”等给网站最终SEO效果带来的不利影响,因此,确保自定义的404错误页面能够返回“404”状态码是极为重要的,也是网站优化与SEO的基本要求。

这一点如何保证呢?如何才能为网站设置能够正常工作的404错误页面?下面针对不同情况详细介绍。

定制404错误页面的基本原则

首先应明确的是,404错误应工作在服务器级而不是网页级。对定制使用动态页面如PHP 脚本类型的404页时,必须确保在PHP执行前服务器已经顺利地送出“404”状态码,不然,一旦执行到了ISAPI级别,返回的状态码便只能是“200”或其他如“302”之类的重定向状态码了。

其次,无效链接有可能指向网站内的任何位置,因此,在定制网站的404错误页面时,对其中的链接应使用绝对路径而不是相对路径。这点相信很容易理解,考虑一下“[url]/a/a.html[/url]”与“[url]http: ///a.html[/url]” 这样两个位于不同目录深度的无效链接,当404错误页中链接使用相对路径时便会彻底乱套。Apache下设置404错误页面

为Apache Server设置404错误页面的方法很简单,只需在.htaccess 文件中加入如下内容即可:

ErrorDocument 404 /notfound.php

当然,把”/notfound.php” 改为自定义404错误页面的地址和名称。

尤其需要注意的是,不要采取如下的方式:

ErrorDocument 404 [url]/notfound.php[/url]

这样设置则是错误的:其将返回“200”状态码而不是“404”。

另外,需要注意的是,如果您的.htaccess存在类似这样的内容:

ErrorDocument 404 /index.php

切记要将其删除:这种将404错误转向到网站主页的作法存在极大的风险,严重时会导致主页在搜索引擎中消失。

IIS/下设置404错误页面

IIS/一直是404页面不能正确返回“404”状态码的重灾区,尤其对动态网页而言,很多网站在使用IIS管理器设置404自定义错误页面后发现其返回码却是“302” + “200”。

在IIS/下设置404动态页面

首先,修改应用程序根目录的设置,打开“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”状态码。

注:为显示方便,上文代码中使用的是全角的“<”与“>”,应用时应将其改为半角字符。

在IIS/下设置404静态页面

设置静态404错误页面的方法则比较简单,在IIS管理器中右键单击要管理的网站,打开“属性”中的“自定义错误信息”页,为“404”设定相应的错误信息页即可。不过,此处在“消息类型”中一定要选择“文件”或“默认值”,而不要选择“URL”,不然,将导致返回“200”状态码。

当然,在设置完成后,最好用Server Header检查工具检查一下设定是否正确。

相关文档
最新文档