Apache ErrorDocument 指令不起作用

Ser*_*oke 4 centos errordocument apache-2.2

我无法获得适用于 400 Bad Request 的自定义错误文档。它是一个 CentOS LAMP 服务器。

ErrorDocument 400 /badrdoc.html
Run Code Online (Sandbox Code Playgroud)

我试过使用上面的:

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

他们都没有工作。Apache 提供其默认的 400 Bad Request 页面。

任何人都可以对此有所了解吗?

编辑:忘了提及,我在更改后重新启动了 Apache。

Lad*_*ada 5

我在使用自定义 400 错误文档时遇到了一些麻烦。我将此添加到我的 Apache conf 的顶层:

ErrorDocument 404 /404.html
ErrorDocument 400 /400.html
Run Code Online (Sandbox Code Playgroud)

并在DocumentRoot. 首先,我用以下方法测试了 404:

echo -en "GET /foo HTTP/1.0\n\n" | nc 127.0.0.1 80
Run Code Online (Sandbox Code Playgroud)

这返回了我的自定义 404。

然后是 400(注意缺少前导斜线):

echo -en "GET foo HTTP/1.0\n\n" | nc 127.0.0.1 80
Run Code Online (Sandbox Code Playgroud)

响应是默认的 Apache 400。

通过将 HTTP 与 HTTPS 虚拟主机通信,我确实设法恢复了我的自定义 400:

echo -en "GET / HTTP/1.0\n\n" | nc 127.0.0.1 443
Run Code Online (Sandbox Code Playgroud)

即使您发出无效请求,您仍然会得到相同的自定义 400:

echo -en "GET foo HTTP/1.0\n\n" | nc 127.0.0.1 443
Run Code Online (Sandbox Code Playgroud)

不幸的是,对于您的测试,与非 SSL 虚拟主机交谈 SSL 不会导致任何类型的 400。我仍然没有弄清楚如何ErrorDocuemnt 400在端口 80 上将自定义发送回。

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