.htaccess错误的HTML 500错误页面

时间:2015-07-12 22:43:43

标签: apache .htaccess error-handling server

我知道HTML 500错误是什么,我知道如何研究解决它们,

我使用apache 2运行服务器,管理控制是通过cPanel和WHM。

我正在寻找的是关于如何在我的网站上发生有用且信息丰富的HTML 500错误页面后向最终用户反馈的一些指导。

我看过:PHP: 500 Error to error pagehttps://ux.stackexchange.com/questions/15955/how-to-create-a-useful-500-internal-server-error-page

但这些似乎并非我所寻找的,例如http://www.smashingmagazine.com/2011/05/27/getting-started-with-defensive-web-design/(从上述链接之一引用)告诉我如何为500错误设计艺术作品页面但没有指示在发生错误时如何部署此页面。

我最常见的一点是,我确实有一些HTML 500错误,在.htaccess文件中有错误,对于网站来说,这个网站可能只会停机几分钟,但是每个月约50万游客,这个停机时间,即使是短暂的,也会被几十个人看到,真的应该呈现得很好,很好,信息丰富,而不是现在的标准:

内部服务器错误

  

服务器遇到内部错误或配置错误,无法完成您的请求。

     

此外,尝试使用ErrorDocument处理请求时遇到500内部服务器错误错误。

我有一个服务器错误页面,其中有500个错误已在我的服务器管理员(cPanel)中设置和创建并加载,但错误页面示例(上图)声称无法找到它,我在errorDocument中也有一个.htaccess句柄,指向同一页面。

所以我的问题是:

  • 当我收到这些错误时,我需要设置哪些流程才能部署一致且信息丰富的错误500页?

  • 特别是当我遇到.htaccess错误时

我有一种感觉,由于错误(服务器)的性质,这意味着错误页面无法在发生错误时从同一服务器部署,因此服务器无法异步工作?

  • 以上是否意味着HTML 500错误只能从多服务器情况或CDN真正部署?

1 个答案:

答案 0 :(得分:3)

  

我感觉由于错误(服务器)的性质,这意味着错误页面无法从错误发生的同一服务器部署,因此服务器无法异步工作?

     
      
  • 以上是否意味着HTML 500错误只能从多服务器情况或CDN真正部署?
  •   

我说他们只能从多服务器配置可靠部署。
数学很简单:

错误页面本身就是对服务器的请求 如果服务器由于配置错误或代码错误而无法完成请求,则无法保证错误页面不会发生相同的情况。
但最终,这取决于你的配置 例如,如果您在某个子文件夹中的.htaccess文件中出错,导致无限递归,则错误页面将加载正常,只要它不是从该目录提供的。
但是,如果您在所有网址上导致无限重定向,那么对错误文档的请求也会受到影响,这正是服务器告诉您的情况:

  

此外,尝试使用ErrorDocument处理请求时遇到500内部服务器错误错误。

这就像报告错误报告错误一样 - 根据其严重程度,这可能会也可能不会。

如果有另一台服务器具有单独的配置,它将不会受到服务器1故障的影响。
它不需要是一个物理服务器,只需启动第二个Web服务器就可以了。

  • 一个充当另一个
  • 的代理或负载均衡器
  • 该代理配置为重定向来自状态码为500
  • 的其他服务器的响应
  • 该代理本身没有错误配置

对于apache,使用mod_proxy_balancer,这样的配置可能看起来像

Host

此服务器需要在端口80上启动,并将所有传入请求传递到端口42(因此其他服务器需要侦听端口42,最好仅在127.0.0.1上)。如果在端口42上运行的服务器返回的任何响应的状态代码为500,则端口80上的服务器将在127.0.0.1上将请求重新发送到端口80,从而将请求传递给自身,但使用不同的{{1}}标题,以便它不会再次点击负载均衡器。