404自定义页面和返回404状态码的设置解决方案

2016/7/26 9:47:34 人评论 次浏览 分类:服务器



需求:

1.页面的返回404的自定义友好页面
2.返回的404的状态码,通过站长工具查询到的状态码是404,而不是200或者302的状态码



【404设置的情况分析】
1.IIS常规型对页面不存在的返回404的状态码和404 的友好页面,这里没什么问题,主要是找不到对应的control和action,属于IIS级别的,所以就通过IIS的设置就可以。
2.伪静态型,而对于伪静态的CMS站点,可能文章的id不存在就会报错了,这种从用户使用的角度而言实际是页面不存在。所以不能返回500的状态码,而应该是404,而且对应的自定义错误页面也是404友好页面。比如,http://www.daniuxuexiao.org/info/3190.html 原来是可以打开访问,但是后面删除之后,就会报错,返回500的状态码。这种在用户使用的角度应该是页面不存在,这种要处理成返回的状态码是404,用户页面显示404友好页面。这种情况可能有部分程序会在程序里面进行判断处理,可能显示的自定义页面不是符合我们要求的自定义页面(或者说跟IIS设置的不同)。如果有保证404状态码和404友好页面的需求,一般这种需求是CMS站点的SEO需求,如果是使用DTCMS的程序,只需要在article_show的类文件中进行处理即可,对于ID不存在的返回404的StatusCode,再通结合IIS的设置就可以实现需求。
3.IIS设置无效型,在IIS中设置了404和500状态码对应的自定义页面,而且状态码也是404,但是用户打开还是报错页面(.net级别的错误信息),而没有应用IIS设置的对应的自定义页面。

Server Error in '/' Application.

The resource cannot be found.

Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly. 

Requested URL: /htsml.aspx



这里的情况是.net级别的错误,返回是.net的错误页面,无法按照IIS的设置返回按照IIS的设置的自定义页面。.net的错误页面的优先级是IIS的优先级要高的。所以应该在Application_Error中进行处理,返回自定义的友好页面。例如:



其实如果上面的情况都要处理的话,第三中的处理方式就全部涵盖第一种和第二种的情况。所以理想的404设置最终还是要通过Application_Error来实现。


【404状态码的IIS设置】


IIS7 2008 的设置方案

1.删除原来的404的设置,新增新的404设置

这里没什么要求,下面的这两种都可以。
 



设置成功之后对应正确的webconfig的示范:
        <httpErrors errorMode="DetailedLocalOnly">
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" prefixLanguageFilePath="" path="404.html" responseMode="File" />
        </httpErrors>

错误示范:
         <httpErrors errorMode="Detailed" existingResponse="PassThrough">
            <remove statusCode="404" subStatusCode="-1" />
            <error statusCode="404" path="404.html" responseMode="File" />
         </httpErrors>


注意:如果设置无效果,可以打开webcofig的设置是否正确。



其他注意:

1.IIS上配置404页面设置,错误:由于权限不足而无法写入配置文件,没有administrators的权限,只要补充这个权限即可。



相关资讯

  • 如何理解阿里云ECS的10%15%CPU性能基线

    我们经常在阿里云的优惠活动中看到一些性价比很高的云服务器 ECS,不过也经常看到有“10%基准 CPU 性能”或“15%基准 CPU 性能”之类的提示,那么到底这个 10%15%CPU 性能基线是什么意思呢?其实,只需要我们弄懂以下几个基本概念之后应该就差不多了解 10%15%CPU 性能基线是什…

    2019/8/17 16:46:50
  • 阿里云Ubuntu报sudo: unable to resolve host的错误

    Ubuntu 环境在每次执行命令的时候,会报如下错误:sudo: unable to resolve host iZbp1be5wmfo9n347gkgn8Z

    2018/2/15 14:52:01
  • VirtualBox出现UUID does not match the value和stored in the media registry的解决方案

    出现UUID does not match the value的这个错误,一般是在转移VirtualBox的磁盘时候,比如更换虚拟磁盘的目录的时候,或者是之前备份现在需要启动,又或者虚拟磁盘占用的空间比较大的时候需要转移到其他磁盘驱动器。这种情况,需要释放删除挂载的磁盘,之后再重新挂载该硬盘即可…

    2017/10/19 20:18:27
  • Centos 7 系统安装gnome可视化图形界面

    安装Graphical Administration Tools 不成功,出现“group graphical-admin-tools does not have any packages to install”和“Group graohical-admin-tools does have 1 conditional packages,which mayget installed.”的提示。

    2017/10/19 18:58:52

共有访客发表了评论 网友评论

验证码: 看不清楚?