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.