我在另一个应用服务器前面有一个 Apache Web 服务器,使用 Proxy Pass。当对应用程序的请求返回错误 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>
答案1
您可以通过指定 来代替代理目标,从而避免代理特定目录!
。由于它作用于目录,因此移动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>