NFsec Logo

Przekierowanie 301 w varnish’u 3.x z uwzględnieniem adresów URL

04/05/2012 w Administracja Brak komentarzy.  (artykuł nr 349, ilość słów: 200)

J

eśli zależy nam na wykonaniu przekierowania HTTP 301 na poziomie varnish‘a np. z adresu www.domena.pl na domena.pl razem z uwzględnieniem przekazanych adresów URL w domenie www.domena.pl wystarczy w podprogramie vcl_recv odpowiedzialnym za procesowanie żądania HTTP dodać kod:

if (req.http.host == "www.domena.pl") {
    error 301;
}

– spowoduje to wyłapywanie nagłówka “Host” z ustawioną wartością na: www.domena.pl, zgłoszonego przez przeglądarkę lub inny program i przekazanie całego żądania do podprogramu vcl_error, gdzie możemy obsłużyć “błąd” 301:

if (obj.status == 301 && req.http.host == "www.domena.pl") {
    set obj.http.location = "http://domena.pl" + req.url;
    set obj.status = 301;
    return (deliver);
}

W przypadku kiedy chcemy wykonać dużo przekierowań pomiędzy dwoma domenami bez uwzględnienia adresów URL – możemy skorzystać z specjalnego rozszerzenia do varnish’a redirect, któremu wystarczy w przekazać wszystkie informacje w vcl_recv:

import redirect;

sub vcl_recv {
    if (req.http.host == "www.domena.pl") {
        error(redirect.location(301,"http://domena.pl"), "Moved Permanently");
    }
}

Więcej informacji: Varnish Configuration Language

Kategorie K a t e g o r i e : Administracja

Tagi T a g i : , , ,

Komentowanie tego wpisu jest zablokowane.