如何启用ErrorDocument 400错误?

时间:2012-12-01 01:47:07

标签: apache .htaccess httpd.conf

我在我的ubuntu机器上安装了apache2。由于我需要使用子域,我在站点中创建了一个适当的条目 - 可用,如下所示:

<VirtualHost *:80>
ServerName xxx.localhost
DocumentRoot /var/www/
</VirtualHost>

我还启用了mod_rewrite(并在我的sites-available / default文件中更改了“AllowOverride All”),但除此之外没有其他内容被更改。

我的.htaccess文件确实有效,我想处理一些错误代码。使用404这样做非常好,但由于某些原因,其他错误似乎不起作用。我最感兴趣的是处理错误400:

ErrorDocument   400 /400.php
ErrorDocument   404 /404.php

还有什么我应该看的吗?我似乎无法找到允许404的地方,而其他错误代码则没有。

2 个答案:

答案 0 :(得分:3)

如果php返回400错误,那么php应该生成错误文档。

使用类似:

if( $someError )
{
  http_response_code(400);
  include("{$_SERVER['DOCUMENT_ROOT']}/400.php");
  exit();
}

答案 1 :(得分:1)

来自Apache documentation

  

虽然可以覆盖大多数错误消息,但在某些情况下,无论ErrorDocument的设置如何,都会使用内部消息。特别是,如果检测到格式错误的请求,将立即停止正常的请求处理并返回内部错误消息。这是防止由不良请求引起的安全问题所必需的。

尝试直接在httpd.conf中添加它并重新启动Apache。