我认为我所要求的内容有点难以理解,因此,我尝试使其变得更简单......
当我的服务器收到带有格式错误的主机头的请求时,我需要它有一个自定义的 400 错误页面。
我理想中想要的是ErrorDocument 400 \somepage.php
我可以通过访问诸如 这样的页面来生成 400 错误http:\\myserver\bla%bla
,这将顺利转到我的脚本。同样,我可以将部分更改\somepage.php
为Test text
,Apache 将返回该文本。
但是,如果 400 错误是由于主机标头格式错误造成的,那么它将适用于文本,但不能适用于网页。
在我失去所有头发之前,有人可以对此有所了解并提供可行的解决方案吗?!(已经为此失去了不少!)。
答案1
尝试了很多方法之后,发现这是不可能的。
我在 HTTPD 的 Bug Tracker 上开了一张票- 最后以“Won't Fix”结束。
他们说:
标记为 wontfix,当请求格式错误时,服务器不愿意做进一步处理以从文件系统中提供自定义错误文档(您的错误页面应该告诉您遇到了递归 400)
在我看来,这不是很好 - 我知道这是默认操作,但是,为什么不让用户使用他们愿意的其他页面呢?
坦率地说,它应该以这种方式工作,但是,如果有人想出涉及任何其他技术(代理,重写/类似)的答案,我会很高兴地看看它并可能给出答案标记。
编辑
最后,我发现使用 Nginx 和自定义指令重定向 400 页是可以实现这一点的。我不明白为什么 Apache Devs 不承认这一点,但是,Nginx 做得很好。