Wie bringe ich Apache2 dazu, Header-Direktiven in einer .htaccess-Datei (ohne Fehler) zu analysieren?

35

Ich erhalte beim Laden von Seiten einen internen Serverfehler von 500, da ich glaube, dass eine Anweisung, für die Apache nicht konfiguriert wurde, dies zulässt.

Ich habe AllowOverride auf alle festgelegt und eine .htaccess-Datei, einschließlich:

<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 hat:

[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

Was muss ich angeben, damit Apache2 die 'Header'-Direktive richtig handhabt?

Christos Hayward
quelle

Antworten:

65

Führen Sie mit apache2 einfach a2enmod headersund dann aus, sudo service apache2 restartund das Header-Modul wird automatisch installiert.

James Pelton
quelle
2
Diese Antwort sollte akzeptiert werden
Himanshu Mishra
1
Diese Antwort ist in der Tat die beste, aber ich wage zu sagen, dass einige moderne GNU / Linux-Distributionen (wie das neueste Debian) systemdauf der Verwaltung von Diensten basieren und eine andere Syntax haben. Starten Sie Apache neu: sudo systemctl restart apache2.service. Ab sofort gibt es jedoch eine Fallback-Funktion und somit funktioniert der alte sudo serviceBefehl. Aber es könnte in naher Zukunft aufhören zu arbeiten.
TranslucentCloud
a2enmodist in /usr/sbinauf meinem System. Das liegt nicht im PATH meines Nicht-Sudoer-Benutzers, daher ist a2enmod nur als root erkennbar. TL; DR: laufen sudo a2enmodstatt nur a2enmod.
Michael Hoffmann
14

Sie müssen eine Zeile wie folgt hinzufügen:

LoadModule headers_module modules/mod_headers.so

Um Ihre httpd.confUnterstützung dafür hinzuzufügen. In Ubuntu und ähnlichem können Sie dies tun a2enmod headersund es wird automatisch in Ihrer Konfiguration aktiviert.

Jay
quelle