zoukankan      html  css  js  c++  java
  • 网站设置404错误页的经历

      设置404错误页的意义我就不说了。主要想记录一下这次设置错误页遇到的问题和解决方法。

    第一版:本地测试能跳转到自定义的404页面,上线之后却没能跳转。

      因为之前的项目有跳转404页面的例子,所以直接拷贝了一份到现在的项目,代码如下:

    HomeController

    public ActionResult Index()
    {
      Response.StatusCode = 404;
      Response.Charset = "utf-8";
      return View("404");
    }

    Web.config

        <customErrors defaultRedirect = "home/error" mode="On">
          <error statusCode="404" redirect="/home/error"/>
        </customErrors>

    按照上面的代码书写,本地测试跳转到了自定义的404页,上线之后却是默认的404页。就这样,第一个版本失败了。

    第二版:上线之后可以正常跳转至404页面,状态码却返回302。

      开发中"本地环境可以,生产环境却不行"的情况屡见不鲜。后来干脆在阿里云租了一台服务器,这里有个小插曲,我发布了一个测试版本不能正常运行,

    原因是这个"HTTP 错误 404.0 - Not-Found"。

      测试版本跑通之后,发现线上没有跳转自定义404页的原因是没有设置IIS。设置步骤如下图:

    1.找到IIS的404错误页选项(IIS里还有ASP.NET的.NET错误页,这里最好选IIS的错误页,下面有写原因)

    2.打开错误页后,编辑自定义错误页,这里以相当路径设置错误页url(IIS的版本不一样,编辑自定义错误页的窗口也不一样)

      设置OK之后,本以为大功告成,却发现根本错误,返回状态码是302,"Response.StatusCode = 404"也没强撸过来。

      至此,第二个版本还是失败了。

    第三版:利用httpErrors设置网站404页跳转(正确版本)

      之后了解到customErrors会以302重定向跳转至自定义错误页,虽然跳转到了自定义错误页,但状态码却不对,并且url都会带参数aspxerrorpath。

    httpErrors只需要配置一下Web.config即可,配置好之后会自动映射到IIS:

    Web.config

        <httpErrors errorMode="Custom" existingResponse="Replace">
          <clear />
          <error statusCode="404" path="Error404.html" />
          <error statusCode="500" path="Error500.html" />
        </httpErrors>

    映射之后的IIS

      到这自定义404页才算设置正确,用户请求的错误的url会跳转至自定义404页,状态码返回404,并且保持原url。

    分析:ASP.NET下的.NET错误页和IIS下的错误页有什么区别?

      在Web.config中,分别配置<customErrors>和<httpErrors>节点即可完成两者错误页的设置。主要有以下不同点:

    1.从定义上,<customErrors>设置ASP.NET应用程序的错误;<httpErrors>是IIS7.0新增的特性,设置IIS对http请求的错误处理;

    2.Visual Studio提供了一个脱离IIS但能执行ASP.NET的环境。想必<customErrors>就是为其准备的;

    3.<httpErrors>优先级要高于<customErrors>。这也是"在本地可以,一上线就不行了"的一个原因。

  • 相关阅读:
    nohup: failed to run command `java': No such file or directory
    HDU4845(SummerTrainingDay02-C 状态压缩bfs)
    Codeforces731C(SummerTrainingDay06-M 并查集)
    Codeforces485D(SummerTrainingDay01-K)
    POJ2227(优先队列)
    Codeforces833A
    HDU3534(SummerTrainingDay13-C tree dp)
    Codeforces687C(SummerTrainingDay03-D DP)
    POJ1811(SummerTrainingDay04-G miller-rabin判断素性 && pollard-rho分解质因数)
    HDU6113
  • 原文地址:https://www.cnblogs.com/paulhe/p/4786712.html
Copyright © 2011-2022 走看看