httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rob Donovan" <>
Subject [users@httpd] Custom 404 Pages not being GZIPed in Apache 2.4
Date Sun, 15 Mar 2015 21:35:15 GMT

I’m pretty sure this problem isnt to do with PHP, and I’ve discussed it a little on
with another user, and come to the conclusion there could be a problem with Apache, but I
would like an opinion.

I've written myself a custom 404 page via PHP, but I've noticed that the page doesn't get
GZIPed when served, when I return the status code 404. Even though I'm sure it should be.

(I'm redirecting all requests to index.php, then parsing the URI, and issuing 404's when needed
through header(), so I'm not using ErrorDocument, although I've tested with ErrorDocument
in .htaccess and the same problem happens.)

I'm using PHP5.5.9/Apache2.4.7 On Ubuntu (Latest for Ubuntu), and Apache is configured to
use mod_deflate:

deflate.load: LoadModule deflate_module /usr/lib/apache2/modules/
deflate.conf: AddOutputFilterByType DEFLATE text/html text/plain text/xml

This is a simple test script I've got:


header("HTTP/1.1 404 Not found");

print "WILL THIS BE GZIPED! ".str_repeat('X',500);


If you comment out the header 404 (so that it gets a normal 200 response) it returns the page
compressed fine.

I've also tried with the new http_response_code(404); command for PHP >=5.4, but that doesn't

I've tested in Chrome/Developer Tools and also directly with Curl to test if it gets compressed,
and it doesn't. There is no Response Header 'Content-Encoding: gzip', so I'm guessing its
Apache that's not compressing it.

Its not a major problem for me, obviously, as I hope to not get too many people trying to
link to pages that generate a 404 error, but it would be good if it did compress correctly.

I can work around it, by making PHP compress it manually for my 404 page, but I would like
to know if you think this could be an Apache problem that needs to be looked at and/or fixed.

(Note, you have to make sure the response is >256 bytes to get Apache to compress, so that's
what the str_repeat() bit is)


Rob Donovan.
View raw message