ProxyPass返回404时的Apache Httpd自定义ErrorDocument 404


9

我使用Proxy Pass在另一个应用程序服务器的前面有一个Apache Web服务器。当对应用程序的请求返回错误404时,我想显示来自Web服务器的自定义错误页面,而不是来自应用程序服务器的错误页面。我试图在虚拟主机上设置ErrorDocument 404,但是它不起作用。我应该怎么做?还是这不可能?

<VirtualHost *:80>
  ServerName servername
  DocumentRoot /somepath/
  ProxyPass / http://localhost:8080/someapp/
  ProxyPassReverse / http://localhost:8080/someapp/

  ErrorDocument 404 /error.html
</VirtualHost>

Answers:


12

您可以通过指定!代理目标来避免为特定目录代理。由于它作用于目录,因此请移至error.html子目录(我们将称为errors),然后:

<VirtualHost *:80>
  ServerName servername
  DocumentRoot /somepath/
  ProxyPass /errors !
  ProxyPass / http://localhost:8080/someapp/
  ProxyPassReverse / http://localhost:8080/someapp/
  ProxyErrorOverride On
  ErrorDocument 404 /errors/error.html
</VirtualHost>

抱歉,可能配置缺少一些详细信息,但是我要捕获的是从代理传递返回的错误404并显示error.html。
hendry.fu 2011年

1
谢谢,我找到了重写的方法,我可以只使用ProxyErrorOverride指令
hendry.fu 2011年

@satyavirya很好,我将其添加到以后的搜索中。
Shane Madden

感谢ProxyErrorOverride的提示,但是我发现在2.4.11之前使用Apache 2.4时存在一个错误,应该已经修复:bz.apache.org/bugzilla/show_bug.cgi ? id=53420 ...也许是唯一的解决方法是减少proxytimeout ?!
FibreFoX

ProxyPass /errors !真的帮助了我!
NullIsNot0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.