我尝试了所有我在apache文档和stackoverflow和博客上发现的其他sugestions中找到的所有内容。
当我将folloowing行添加到任何配置文件时,如/etc/apache2/apache2.conf
或/etc/apache2/conf.d/localized-error-pages
或/etc/apache2/httpd.conf
或/etc/apache2/sites-enabled/000-default
:
ErrorDocument 503 "This is an error msg"
甚至是html消息
ErrorDocument 503 "<h1> This is an error message </h1>
或外部网址重定向ErrorDocument 503 http://www.google.com
它有效。
但是当我尝试像ErrorDocument 503 /ERROR_503.html
这样的内部重定向时
或ErrorDocument 503 /error/ERROR_503.html
我收到最后一行的默认消息:
此外,503服务暂时不可用 尝试使用ErrorDocument处理请求时遇到错误。
我尝试将html错误页面放在var/www
的DocumentRoot var/www/error
上。
尝试取消注释将所有错误设置为/etc/apache2/conf.d/localized-error-pages
国际化的自定义网页的所有文件/usr/share/apache2/error
。
由于此文件中的消息与默认消息相同,因此行
此外,503服务暂时不可用 尝试使用ErrorDocument处理请求时遇到错误。 不再显示了。但如果我改变了行
`ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var`
在localized-error-pages文件中放置到同一页面的新html,错误就回来了
并且页面未显示。如果我编辑文件HTTP_SERVICE_UNAVAILABLE.html.var
,浏览器消息也没有任何变化。
更多信息:我使用apache2只是为了通过一个worker将端口80上的所有请求重定向到端口8089的tomcat。我的配置文件是https://dl.dropboxusercontent.com/u/1105054/apache.zip
答案 0 :(得分:6)
这花了我太长时间(部分原因是拼写),但我认为我发布了整个虚拟主机文件,因为它可能有用。
您需要确保已经指定了DocumentRoot,并且在主ProxyPass /file.html !
之前执行了ProxyPass /
。
<VirtualHost *:443>
DocumentRoot /var/www/html
#ProxyPreserveHost On
<IfModule env_module>
# Fake SSL if Loadbalancer does SSL-Offload
SetEnvIf Front-End-Https "^on$" HTTPS=on
</IfModule>
SSLEngine on
SSLCertificateFile file
SSLCertificateKeyFile file
SSLCertificateChainFile file
ProxyPass /maintenance-message.html !
ProxyPass /maintance-message_files !
ProxyPass / "ajp://localhost:8009/"
ProxyPassReverse / "ajp://localhost:8009/"
ServerName server.something.com:443
ErrorDocument 503 /maintenance-message.html
</VirtualHost>
答案 1 :(得分:4)
在我的情况下,我刚刚将 ProxyPass 行添加到我的虚拟服务器配置中:
ProxyPass /serverError.html !
ErrorDocument 503 /serverError.html
告诉代理转到DocumentRoot并搜索错误页面。
您也可以找到有用的答案:https://stackoverflow.com/a/13019667
答案 2 :(得分:1)
我也遇到了同样的问题,经过深入的搜索,我发现这里是@Loren最好的(也是唯一的?)解决方案。
在将ProxyPass /file.html !
设置在主ProxyPass /
之前,而不是之后,才工作。
另外,还需要DocumentRoot。