40

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?

Christos Hayward
  • 1,152
  • 3
  • 15
  • 35

2 Answers2

76

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

James Pelton
  • 861
  • 6
  • 3
  • 3
    This answer should be accepted – Himanshu Mishra Dec 09 '15 at 15:37
  • 2
    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. – Neurotransmitter Jan 12 '16 at 19:24
  • `a2enmod` is in `/usr/sbin` on my system. That's not in my non-sudoer user's PATH, so a2enmod isn't discoverable unless you're root. TL;DR: run `sudo a2enmod` instead of just `a2enmod`. – Michael Hoffmann Jan 09 '19 at 21:50
15

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.

Jay
  • 6,439
  • 24
  • 34