Como faço para que o Apache2 analise (sem erro) as diretivas de cabeçalho em um .htaccess?

35

Estou recebendo páginas carregando com um erro interno do servidor 500, devido a uma diretiva que o Apache não foi configurado para permitir.

Tenho AllowOverride definido como all e um arquivo .htaccess, incluindo:

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

[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

O que preciso especificar para que o Apache2 lide adequadamente com a diretiva 'Cabeçalho'?

Christos Hayward
fonte

Respostas:

65

Com o apache2, basta executar a2enmod headerse, em seguida, sudo service apache2 restartele instalará o módulo de cabeçalhos automaticamente.

James Pelton
fonte
2
Esta resposta deve ser aceita #
940 Himanshu Mishra
1
De fato, esta resposta é a melhor, porém ouso dizer que algumas distribuições modernas do GNU / Linux (como a última Debian) são baseadas systemde têm uma sintaxe diferente no gerenciamento de serviços. Reinicie o Apache: sudo systemctl restart apache2.service. No entanto, a partir de agora existe uma função de fallback e, portanto, o sudo servicecomando antigo funciona. Mas pode parar de funcionar no futuro próximo.
TranslucentCloud
a2enmodestá no /usr/sbinmeu sistema. Isso não está no PATH do usuário que não usa o sistema, então o a2enmod não pode ser descoberto, a menos que você seja root. TL; DR: execute em sudo a2enmodvez de apenas a2enmod.
Michael Hoffmann
14

Você precisará adicionar uma linha como:

LoadModule headers_module modules/mod_headers.so

Para você httpd.confadicionar suporte para isso. No Ubuntu e similares, você pode fazer a2enmod headerse ele será ativado automaticamente em sua configuração.

Jay
fonte