Bug 60604

Summary: RewriteRule returning 200 for ErrorDocument 503
Product: Apache httpd-2 Reporter: Widger <cwidger>
Component: mod_rewriteAssignee: Apache HTTPD Bugs Mailing List <bugs>
Status: NEEDINFO ---    
Severity: normal CC: szg0000
Priority: P2    
Version: 2.4.18   
Target Milestone: ---   
Hardware: PC   
OS: Linux   

Description Widger 2017-01-19 01:24:43 UTC
I'm trying to setup a custom 503 page for when system maintenance is required.My server is Apache 2.4.18 (Ubuntu). Everything works as expected, except the return code for my error page is 200 instead of 503. I'm using a config that worked on old servers and there's lot of examples on google that have the same issue on my server.

This is within a Vhost and the server is running a few other sites.

Here's the config:
RewriteEngine On

RewriteCond "/maintenance.trigger" -f
RewriteCond %{REQUEST_URI} !=/maintenance.trigger
RewriteRule . - [R=503]

and this is what I get from curl:
HTTP/1.1 200 OK
Date: Thu, 19 Jan 2017 00:53:26 GMT
Server: Apache
Last-Modified: Wed, 18 Jan 2017 22:20:09 GMT
Content-Type: text/html
X-Content-Digest: 8fef50fc2724187fd362f2412e036e2853efa674
Age: 0
X-Rack-Cache: stale, valid, store
Content-Length: 17
Cache-Control: max-age=2592000
Expires: Sat, 18 Feb 2017 00:53:26 GMT

test 503 page

I've tried this a a few different ways and noticed that:
ErrorDocumet 503 "test 503 from config file"

does the right things, unfortunately I would like to have a nicer error page than what can be included in a config file.

I also tried with "ProxyErrorOverride On" but that had no effect.

thank you
Comment 1 Eric Covener 2017-01-19 01:38:23 UTC
Works for me. Maybe it's related to other config / whatever set all of those extra headers in the response (proxy or some application?)
Comment 2 Widger 2017-01-19 03:52:38 UTC
Some more information. Lower down in my configuration I have a RewriteRule that points to a "balancer://". I think this is where the 200 and cache headers are coming from. If I add:

RewriteCond %{REQUEST_URI} !=/maintenance.trigger

RewriteRule . - balancer://mybalancer

I get a 503. I was thinking that hitting a 503 would stop all processing, but it might not work like that.