编辑

编辑

我认为我所要求的内容有点难以理解,因此,我尝试使其变得更简单......

当我的服务器收到带有格式错误的主机头的请求时,我需要它有一个自定义的 400 错误页面。

我理想中想要的是ErrorDocument 400 \somepage.php

我可以通过访问诸如 这样的页面来生成 400 错误http:\\myserver\bla%bla,这将顺利转到我的脚本。同样,我可以将部分更改\somepage.phpTest text,Apache 将返回该文本。

但是,如果 400 错误是由于主机标头格式错误造成的,那么它将适用于文本,但不能适用于网页。

在我失去所有头发之前,有人可以对此有所了解并提供可行的解决方案吗?!(已经为此失去了不少!)。

答案1

尝试了很多方法之后,发现这是不可能的。

我在 HTTPD 的 Bug Tracker 上开了一张票- 最后以“Won't Fix”结束。

他们说:

标记为 wontfix,当请求格式错误时,服务器不愿意做进一步处理以从文件系统中提供自定义错误文档(您的错误页面应该告诉您遇到了递归 400)

在我看来,这不是很好 - 我知道这是默认操作,但是,为什么不让用户使用他们愿意的其他页面呢?

坦率地说,它应该以这种方式工作,但是,如果有人想出涉及任何其他技术(代理,重写/类似)的答案,我会很高兴地看看它并可能给出答案标记。


编辑

最后,我发现使用 Nginx 和自定义指令重定向 400 页是可以实现这一点的。我不明白为什么 Apache Devs 不承认这一点,但是,Nginx 做得很好。

相关内容