鉴于以下htaccess:
DirectoryIndex
RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]
RewriteRule ^ http://%{HTTP_HOST}:8080%{REQUEST_URI} [P]
如果Tomcat实例在端口8080下运行,则将传递请求。 如果实例没有运行,我会收到一个丑陋的503错误。
我试图用定制的页面替换它。这有效:
ErrorDocument 503 "offline"
但这并不是:
ErrorDocument 503 /home/www-data/error/503.html
我得到了:
Additionally, a 503 Service Unavailable error was encountered while trying to use an ErrorDocument to handle the request.
什么是正确的解决方案?
答案 0 :(得分:1)
对于ErrorDocument,您需要提供相对于文档根目录的html页面的路径。因此,如果DocumentRoot为/home/www-data/
,只需设置/error/503.html
。
现在,如果这是.htaccess
中存在的/home/www-data/
,则所有作为此目录子项的文档都会应用规则。所以我认为即使你的/error/503.html
被你的代理指令处理:
RewriteRule ^ http://%{HTTP_HOST}:8080%{REQUEST_URI} [P]
将改为:
RewriteCond %{ENV:REDIRECT_STATUS} !=503
RewriteRule ^ http://%{HTTP_HOST}:8080%{REQUEST_URI} [P]
我认为它应该足够了,或者您可以从匹配路径中排除/error
。