【ASP.NET 问题】ASP.NET 网站404页面返回200,或者302的解决办法

做网站在优化网站时遇到了跳转404页面却返回 200、302状态的问题,这样的话搜索引擎会认为这个页面是一个正常的页面,但是这个页面实际是个错误页面,虽然对访问的用户而言,HTTP状态码是“404”还是“200”并没有什么区别,一样是提高了用户体验,但对搜索引擎而言,这则是相当重要的,甚至是致命的。

当搜索引擎蜘蛛在请求某个错误URL地址得到“404”状态回应时,即知道该URL地址已经失效,便不再索引该网页,并向数据中心反馈将该URL地址表示的网页从索引数据库中删除,而当搜索引擎对于这个404页面得到的是“200”状态回应时,则会认为该url地址是有效的,便会去索引,并会将其收录到索引数据库,这样你的所有错误页面对于搜索引擎来说都是不同url地址内容相同的页面,这会导致出现大量重复页面,会大大降低网站质量的评分,甚至直接降权。

所以正确设置的自定义404错误页面,不仅应当能够正确地显示,同时,应该返回“404”错误代码,而不是200或其他的。不仅要告诉用户该页面不存在,也要正确的让搜索引擎知道这是404错误页面而不是一个正常的页面。

简单的排查了下,自定义的404页面没有添加状态代码:

 Response.StatusCode = 404;

但是问题依然存在,这个主要是配置了自定义错误页面,程序在访问错误页面是进行了302跳转造成。

所以另外需要在全局文件 Global.asax 写入相关方法:

protected void Application_Error(object sender, EventArgs e)
{
 HttpException erroy = Server.GetLastError() as HttpException;
 if (erroy != null && erroy.GetHttpCode() == 404)
  {
    Server.ClearError();
    string path = "~/404.aspx";
    Server.Transfer(path);
    Response.End();
    return;
  }
}

这样问题就解决了。

参考文档:

asp.net网站404页面返回200,或者302的解决办法

你眼中的404页面未必返回404状态码 404页面如何正确设置

 

posted @ 2018-07-30 18:24  叶超Luka  阅读(981)  评论(1编辑  收藏  举报