Как мне заставить Apache2 анализировать (без ошибок) директивы Header в .htaccess?

35

Я получаю страницы, загружающиеся с внутренней 500-серверной ошибкой, из-за того, что я считаю, что директива Apache не была разрешена.

У меня AllowOverride установлен для всех, и файл .htaccess, в том числе:

<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 имеет:

[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

Что мне нужно указать, чтобы Apache2 правильно обрабатывал директиву Header?

Христос Хейворд
источник

Ответы:

65

С apache2 просто запустите a2enmod headersи затем, sudo service apache2 restartи он автоматически установит модуль заголовков.

Джеймс Пелтон
источник
2
Этот ответ должен быть принят
Химаншу Мишра
1
Действительно, этот ответ является лучшим, однако я осмелюсь сказать, что некоторые современные дистрибутивы GNU / Linux (например, последний Debian) основаны systemdи имеют другой синтаксис управления службами. Перезапустите Apache: sudo systemctl restart apache2.service. Однако на данный момент существует резервная функция, и поэтому старая sudo serviceкоманда работает. Но это может перестать работать в ближайшее время.
TranslucentCloud
a2enmodнаходится в /usr/sbinмоей системе. Этого нет в PATH моего пользователя, не являющегося пользователем sudo, поэтому a2enmod не может быть обнаружен, если вы не являетесь пользователем root. TL; DR: беги sudo a2enmodвместо всего a2enmod.
Майкл Хоффманн
14

Вам нужно будет добавить строку вроде:

LoadModule headers_module modules/mod_headers.so

К вашему, httpd.confчтобы добавить поддержку для этого. В Ubuntu и аналогичных целях вы можете сделать это, a2enmod headersи он автоматически включит его в вашей конфигурации.

сойка
источник