zoukankan      html  css  js  c++  java
  • 【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页面如何正确设置

  • 相关阅读:
    shell流程控制
    shell编程变量介绍与表达式详解
    shell编程简介
    反向代理与负载均衡
    存储库之mongodb,redis,mysql
    请求库之requests,selenium
    解析库之re、beautifulsoup、pyquery
    爬虫基本原理
    Django 函数和方法的区别
    Django 知识补漏单例模式
  • 原文地址:https://www.cnblogs.com/yc-755909659/p/9391329.html
Copyright © 2011-2022 走看看