htaccess:RewriteRule,Tomcat& 503

时间:2015-10-20 15:29:33

标签: apache .htaccess

鉴于以下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.

什么是正确的解决方案?

1 个答案:

答案 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