I am getting pages loading with a 500 internal server error, due I believe to a directive that Apache has not been configured to allow.

I have AllowOverride set to all, and a .htaccess file, including:

<FilesMatch "\.(eot|ico|pdf|flv|jpg|jpeg|png|gif|svg|swf|ttf|woff)$">
Header set Cache-Control "max-age=31536000, public"
Header set Expires "Wed, 23 Apr 2014 17:00:01 UTC"
</FilesMatch>

/var/log/apache2/error.log has:

[Sat Jul 20 15:12:36 2013] [alert] [client 24.15.83.241] /home/jonathan/.htaccess: Invalid command 'Header', perhaps misspelled or defined by a module not included in the server configuration

What do I need to specify so that Apache2 will properly handle the 'Header' directive?

With apache2, just run a2enmod headers and then sudo service apache2 restart and it will install the headers module automatically.

  • 2
    This answer should be accepted – Himanshu Mishra Dec 9 '15 at 15:37
  • 1
    Indeed this answer is the best, however I dare to say that some modern GNU/Linux distros (like the latest Debian) are based on systemd and have a different syntax on managing services. Restart Apache: sudo systemctl restart apache2.service. However, as of now a fallback function exists and thus the old sudo service command does work. But it may stop working in the nearest future. – TranslucentCloud Jan 12 '16 at 19:24

You'll need to add a line like:

LoadModule headers_module modules/mod_headers.so

To your httpd.conf to add support for that. In Ubuntu and similar, you can do a2enmod headers and it'll automatically enable it in your configuration.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.