Przekierowanie Apache i ustawienie nagłówków pamięci podręcznej?


10

Wykonanie przekierowania w Apache jest łatwe (mod_alias):

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

Ustawianie nagłówków pamięci podręcznej jest równie łatwe:

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

(Nie chcę tego buforować)

Ale! Wygląda na to, że nie można ich połączyć. Ta konfiguracja powoduje wysłanie przekierowania, ale nie nagłówki:

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

Przykład tego, co faktycznie się dzieje:

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)

Jakieś pomysły na to, jak zwrócić przekierowanie z nagłówkami pamięci podręcznej?

Odpowiedzi:


10

Spróbuj dodać warunek „zawsze” do dyrektywy Header, więc powinien on wyglądać tak:

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

Powinno to działać bez warunku „zawsze”. Domyślnie jest to „onsuccess”, który jest zdefiniowany jako dowolny kod odpowiedzi 2xx.


!!! Nie wiem, jak mi tego brakowało, ale tak!
Jakob Borg,

Tak to jest to. Świetny.
Cosimo,

To nie wydaje się pracować dla nagłówków niestandardowych, dziwne
Juan

0

Musisz zaimplementować skrypt pośredni w Perlu lub PHP (użyłbym PHP, jest prostszy, jeśli jest już załadowany). Sprawdź przewodnik przepisywania i wyszukaj „Rozszerzone przekierowanie”:

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

Skonfiguruj xredirect, a następnie ustaw skrypt, aby wypychał nagłówki, które chcesz ... nie jest ładny, ale o ile wiem, jest to jedyny sposób, aby to zrobić.


Nie dość, jestem zaskoczony, że nie jest to wykonalne w lepszy sposób (bezpośrednio w konfiguracji), ale wygląda to na poprawną odpowiedź. :(
Jakob Borg,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.