Redirecionamento do Apache e definir cabeçalhos de cache?

10

Fazer um redirecionamento no Apache é fácil (mod_alias):

RedirectMatch ^.*$ http://portal.example.com/

Definir cabeçalhos de cache é igualmente fácil:

Header set Cache-Control max-age=0
Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"

(eu não quero isso em cache)

Mas! Parece que você não pode combinar os dois. Essa configuração resulta no redirecionamento que está sendo enviado, mas não nos cabeçalhos:

<VirtualHost *:80>
        ServerName __default__
        Header set Cache-Control max-age=0
        Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
        RedirectMatch ^.*$ http://portal.example.com/
</VirtualHost>

Exemplo do que realmente acontece:

jb@apto % telnet 192.168.0.1 80
Trying 192.168.0.1...
Connected to redirector.example.com.
Escape character is '^]'.
GET / HTTP/1.1
Host: foo

HTTP/1.1 302 Found
Date: Sat, 21 Aug 2010 09:36:38 GMT
Server: Apache/2.2.9 (Debian) Phusion_Passenger/2.2.9
Location: http://portal.example.com/
Vary: Accept-Encoding
Content-Length: 316
Content-Type: text/html; charset=iso-8859-1

(etc)

Alguma idéia de como retornar um redirecionamento com cabeçalhos de cache?

    
por Jakob Borg 21.08.2010 / 11:48

2 respostas

10

Tente adicionar a condição "sempre" à sua diretiva de cabeçalho, por isso deve ficar assim:

Header always set Cache-Control max-age=0
Header always set Expires "Thu, 01 Dec 1994 16:00:00 GMT"

Isso deve funcionar, sem a condição "sempre". Acredito que o padrão seja "onsucesso", definido como qualquer código de resposta 2xx.

    
por 27.09.2010 / 23:04
0

Você precisará implementar um script intermediário em Perl ou PHP (eu usaria PHP, seria mais simples se já estivesse carregado). Confira o guia de reescrita, pesquise por "Redirecionamento estendido":

link

Configure o xredirect e configure seu script para enviar os cabeçalhos que você deseja ... não é bonito, mas, até onde eu sei, é a única maneira de fazer isso.

    
por 21.08.2010 / 16:39