Apache ErrorDocument指令不起作用

我无法获得一个自定义的错误文档来处理400个错误的请求。 这是一个CentOS LAMP服务器。

ErrorDocument 400 /badrdoc.html 

我已经尝试使用上面的:

  1. Apache http.conf
  2. Apache httpd-vhosts.conf(在每个虚拟主机中)
  3. .htaccess在网站的根htdocs中

他们都没有工作。 Apache正在服务其默认的400错误请求页面。

任何人都可以解释这一点吗?

编辑:忘了提及,我已经重新启动Apache后的变化。

我得到一个自定义的400错误文档工作相当麻烦。 我把这个添加到了我的Apache conf的顶层:

 ErrorDocument 404 /404.html ErrorDocument 400 /400.html 

并在DocumentRoot创build了两个错误文档。 首先,我testing了404:

 echo -en "GET /foo HTTP/1.0\n\n" | nc 127.0.0.1 80 

这返回我的自定义404。

然后400(注意,主要斜线缺失):

 echo -en "GET foo HTTP/1.0\n\n" | nc 127.0.0.1 80 

答复是默认的Apache 400。

我确实设法通过将HTTPS虚拟主机与HTTP通信来获取我的自定义400:

 echo -en "GET / HTTP/1.0\n\n" | nc 127.0.0.1 443 

即使提出无效请求,您仍然可以获得相同的自定义400:

 echo -en "GET foo HTTP/1.0\n\n" | nc 127.0.0.1 443 

不幸的是,对于您的testing,与非ssl虚拟主机交谈的SSL不会导致任何types的400。 我仍然没有想出如何获得一个自定义ErrorDocuemnt 400端口80发回。

PS我记得在某处读取ErrorDocument 400将无法在.htaccess文件中工作,因为如果请求格式错误,甚至可能无法确定正确的DocumentRoot 。 这同样可能适用于基于名称的虚拟主机。