我想我所要求的有点难以理解,所以我正在努力简化它。
我需要我的服务器有一个自定义的400错误页面,当它收到一个格式错误的主机头的请求。
我最想要的是ErrorDocument 400 \somepage.php
我可以通过访问一个页面,如http:\\myserver\bla%bla ,生成400错误,这将会去我的脚本罚款。 同样,我可以将\somepage.php部分更改为Test text ,Apache将返回该文本。
但是,如果400错误是由于主机头格式错误造成的,它将使用文本而不是网页。
任何人都可以解释这一点,并给我一个工作的解决scheme之前,我把我所有的头发? (已经失去了很多这个!)。
尝试了很多事情后,事实certificate这是不可能的。
我在HTTPD的Bug Tracker上打开了一张票 – 这个票是由Will not Fixclosures的。
他们说:
标记为wontfix,当请求格式不正确时,服务器不愿意做进一步的处理来为文件系统提供一个自定义的errordocument(你的错误页面应该告诉你一个recursion400遇到了)
在我看来,这不是很好 – 我知道这是默认的操作,但是,为什么不让用户使用不同的页面,如果他们愿意的话。
坦率地说,它应该以这种方式工作,但是,如果有人提出了涉及任何其他技术(代理,重写/类似)的答案,我会很高兴看到它,并可能给出答案标记。
最后,我发现可以用Nginx和一个自定义指令来redirect400页。 我不明白为什么Apache Devs不会承认这一点,但是,Nginx做得很好。