Como resolver a mensagem de erro "ExpiresActive not allowed here" no arquivo .htaccess?


11

Estou tentando adicionar cabeçalhos Expira às respostas HTTP do site em que estou trabalhando. A única maneira de controlar o servidor Apache 1.3 é editando meu arquivo .htaccess. Tentei adicionar código como o seguinte para habilitar os cabeçalhos Expira:

<IfModule mod_expires.c>
    ExpiresActive on
    ExpiresDefault "access plus 1 hour"
</IfModule>

No entanto, isso resulta em um erro interno do servidor com a seguinte mensagem de erro no log:

ExpiresActive não permitido aqui

Provavelmente, não posso usar métodos alternativos de controle de cache, pois o mod_headers não está ativado. Ainda existe alguma maneira de habilitar o cabeçalho Expires usando mod_expires através de alguns comandos no arquivo .htaccess?

Atualização
Lembro-me de ler em algum lugar que as configurações de Substituição no httpd.conf podem ter algo a ver com isso. Existe alguma maneira de validar que esse é realmente o problema? Se for, existe alguma solução alternativa para controlar os cabeçalhos de cache do meu site, afinal?

Respostas:


12

Em uma observação geral, a maneira mais simples de lidar com questões como essa é consultando o manual.

http://httpd.apache.org/docs/1.3/mod/mod_expires.html#expiresactive

Syntax:      ExpiresActive On|Off
Context:     server config, virtual host, directory, .htaccess
Override:    Indexes
Status:      Extension
Module:      mod_expires

Os dois campos de interesse são Contexto e Substituir. Como podemos ver, não há problema em usar ExpiresActive em um arquivo .htaccess enquanto você permitir índices de substituição

Atualizar:

Para atender à sua necessidade de cabeçalhos expirados. Confira /programming/1036941/setup-expires-headers-php-apache

Espero que isto ajude:)


Obrigado pela sua resposta, mas como minha pergunta já declara: Não tenho acesso à configuração do servidor além do arquivo .htaccess na minha raiz da web. Portanto, se o AllowOverride não estiver definido corretamente, estou sem sorte.
Daan

Você deve conversar com seu provedor sobre isso. Não permitir índices é imho estúpido. E, sim, se eles não puderem mudar isso, você eliminou tanto quanto mod_expires.
Rune Nilssen

Apenas para ecoar o argumento de Rune - se o seu provedor de serviços não alterar o parâmetro AllowOverride, não haverá mais nada que você possa fazer.
DaveG 19/02/10

3

Adicionando "AllowOverride Indexes" ao conf do Apache para a pasta em que o htaccess trabalhou para mim. Encontre a solução aqui http://speedforce.org/2009/01/were-back/


1
Obrigado pela sua resposta, mas como minha pergunta já declara: Não tenho acesso à configuração do servidor além do arquivo .htaccess na minha raiz da web. Portanto, se o AllowOverride não estiver definido corretamente, estou sem sorte.
Daan

1

no RHEL em /etc/httpd/conf/httpd.conf

alterar AllowOverride None

AllowOverride FileInfo Options Indexes


2
Obrigado pela sua resposta, mas novamente, como minha pergunta já declara: Não tenho acesso à configuração do servidor além do arquivo .htaccess na minha raiz da web. Portanto, se o AllowOverride não estiver definido corretamente, estou sem sorte.
Daan

0

No meu caso, mod_expires não está disponível, mas headers_module é, isso funciona muito bem (no Apache 2.0):

# match all these file types, regardless of upper/lowercase
<FilesMatch "\.(?i:jpg|png|gif|js|css)$">
    # 60 seconds * 60 minutes * 24 hours * 7 days
    Header set Cache-Control "max-age=604800, public, must-revalidate"

    # alternative: never expire headers (do look up the caveats)
    # Header set Expires "Thu, 01 Jan 2030 08:08:00 GMT"
    # Header set Cache-Control "public, no-transform"

    # further (debatable) optimizations
    # FileETag None
    # Header unset ETag
    # Header unset Last-Modified
</FilesMatch>

0

Eu tive o mesmo problema no Apache 2.4 / CentOS 7. A sintaxe do arquivo de configuração agora é: "AllowOverride Options = Indexes"

<Directory /var/www/html/>
  Options Indexes FollowSymlinks
  AllowOverride Options=Indexes
</Directory>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.