You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Rob Donovan <ro...@proivrc.com> on 2015/03/15 22:35:15 UTC

[users@httpd] Custom 404 Pages not being GZIPed in Apache 2.4

Hi,

I’m pretty sure this problem isnt to do with PHP, and I’ve discussed it a little on stackoverflow.com 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/mod_deflate.so
deflate.conf: AddOutputFilterByType DEFLATE text/html text/plain text/xml

This is a simple test script I've got:

<?php

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 help.

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)

Thanks,

Rob Donovan.