Jak sprawić, by Apache2 analizował (bez błędów) dyrektywy nagłówkowe w .htaccess?

35

Strony ładują się z 500 błędem serwera wewnętrznego, ponieważ uważam, że dyrektywa, na którą Apache nie została skonfigurowana, zezwala.

Mam AllowOverride ustawione na all oraz plik .htaccess, w tym:

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

[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

Co muszę określić, aby Apache2 poprawnie obsługiwał dyrektywę „Header”?

Christos Hayward
źródło

Odpowiedzi:

65

Z Apache2, po prostu uruchom, a2enmod headersa następnie sudo service apache2 restartautomatycznie zainstaluje moduł nagłówków.

James Pelton
źródło
2
Ta odpowiedź powinna zostać zaakceptowana
Himanshu Mishra,
1
Rzeczywiście, ta odpowiedź jest najlepsza, ale odważę się powiedzieć, że niektóre współczesne dystrybucje GNU / Linux (jak najnowszy Debian) są oparte systemdi mają inną składnię na zarządzanie usługami. Restart Apache: sudo systemctl restart apache2.service. Jednak na razie istnieje funkcja rezerwowa, a zatem stara sudo servicekomenda działa. Ale może przestać działać w najbliższej przyszłości.
TranslucentCloud,
a2enmodjest w /usr/sbinmoim systemie. Nie ma tego w ŚCIEŻCE mojego użytkownika niebędącego sudoerem, więc a2enmod jest niewykrywalny, chyba że jesteś rootem. TL; DR: uruchom sudo a2enmodzamiast po prostu a2enmod.
Michael Hoffmann
14

Musisz dodać linię taką jak:

LoadModule headers_module modules/mod_headers.so

Aby httpd.confdodać obsługę tego. W Ubuntu i podobnych możesz to zrobić a2enmod headersi to automatycznie włączy to w twojej konfiguracji.

Sójka
źródło