Apache reindirizza e imposta le intestazioni della cache?


10

Fare un reindirizzamento in Apache è facile (mod_alias):

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

L'impostazione delle intestazioni della cache è altrettanto semplice:

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

(Non voglio questo nella cache)

Ma! Sembra che non puoi unire i due. Questa configurazione comporta l'invio del reindirizzamento, ma non le intestazioni:

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

Esempio di ciò che accade realmente:

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)

Qualche idea su come restituire un reindirizzamento con le intestazioni della cache?

Risposte:


10

Prova ad aggiungere la condizione "sempre" alla direttiva Header, quindi dovrebbe apparire così:

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

Questo dovrebbe funzionare, senza la condizione "sempre", credo che sia impostato su "onsuccess", definito come qualsiasi codice di risposta 2xx.


!!! Non so come mi sia perso, ma sì!
— Jakob Borg,

Sì, eccolo. Grande.
— Cosimo,

Questo non sembra funzionare per intestazioni personalizzate, strano
— juan

0

Dovrai implementare uno script intermedio in Perl o PHP (userei PHP, è più semplice se già caricato). Consulta la guida di riscrittura, cerca "Reindirizzamento esteso":

http://httpd.apache.org/docs/2.2/misc/rewriteguide.html

Imposta xredirect, quindi imposta il tuo script per eliminare le intestazioni che desideri ... non è carino, ma per quanto ne so è l'unico modo per farlo.


Non proprio davvero, sono piuttosto sorpreso che questo non sia fattibile in modo migliore (direttamente nella configurazione), ma sembra una risposta corretta. :(
— Jakob Borg,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.