将Apache 500状态转发到404

简短的版本 :我们希望Apache在获得500状态时捕获并返回类似404的东西。 有没有办法做到这一点?

更长的版本 :这些服务器运行的应用程序不是我们的,而且最近他们没有通过PCI符合性扫描,因为如果您弄糟了主机,可能会出现500个状态错误。 从长远来看,我们将把它们移动到不同的networking,因此它们不需要符合PCI规范,但是从短期来看,我们希望能够快速修复,而不是显示应用程序返回的500状态。 这两个应用程序都通过Apache接受他们的请求。

我希望/假设这将是一个mod_rewrite规则,但不知道根据状态码使mod_rewrite更改。

如果我理解正确的话,您想要在日志中捕捉到500错误状态,同时向客户和扫描器呈现一个定期错误的页面。

一些networking商店这样做是为了“把”网站上更严重的错误“隐藏起来”。 生成500错误状态的页面在DOS攻击中可能是一个好的目标。 扫描该站点以查找生成500服务器错误的页面,在这些页面上敲击,一遍又一遍地触发错误代码,等待数据库在下面融化。

您可以使用ErrorDocument 500 yourerrorpage.html来显示自定义错误页面

http://httpd.apache.org/docs/2.2/custom-error.html

由于500错误导致PCI扫描失败? 这有点奇怪 无论如何…

设置一个默认的VirtualHost (你应该已经有一个),它不提供任何服务; 任何对它的请求应该导致404。

 <VirtualHost *:80> ServerName * DocumentRoot /var/empty </VirtualHost> 

使用输出filter比重写规则更好。

一个mod_rewrite规则将不得不在一边做一个子请求,然后根据返回的内容决定要使用哪个URL。 如果子请求成功,则内容仍将被丢弃,并且您将不得不重复作为主要请求的事务。

另一方面,输出filter可以拦截500响应并将其转换为404。