Zmiana struktury adresów URL, przenoszenie serwisu na nową domenę czy czasowa niedostępność produktu w sklepie internetowym wymagają odpowiedniego pokierowania ruchem użytkowników i robotów indeksujących. Błędny dobór kodu statusu HTTP przy przekierowaniu może doprowadzić do utraty pozycji w wynikach wyszukiwania (SEO), problemów z buforowaniem oraz niepotrzebnego obciążenia serwera.
Poznaj dokładne różnice pomiędzy przekierowaniem trwałym (301) a tymczasowym (302), dowiedz się, jak wpływają na pamięć podręczną przeglądarki i jak uniknąć najczęstszych pułapek wykonawczych.
Przekierowanie 301 vs 302 – kluczowe różnice techniczne
Kody odpowiedzi HTTP z grupy 3xx informują klienta (przeglądarkę lub robota), że żądany zasób znajduje się pod innym adresem wskazanym w nagłówku Location. Różnica polega na intencji i trwałości tej zmiany:
- 301 Moved Permanently (Przekierowanie Trwałe): Informuje, że zasób przeniósł się na nowy URL na zawsze. Roboty wyszukiwarek przenoszą moc rankingu (Link Equity) ze starego adresu na nowy i wycofują stary URL z indeksu. Przeglądarki internetowe agresywnie zapisują to przekierowanie w lokalnej pamięci podręcznej.
- 302 Found / Temporary Redirect (Przekierowanie Tymczasowe): Informuje, że zmiana adresu jest chwilowa. Roboty indeksujące zatrzymują stary URL w indeksie i nie przekazują w pełni mocy SEO, a przeglądarki nie powinny zapamiętywać przekierowania na stałe.
Kiedy stosować poszczególne przekierowania?
Kiedy wybrać kod statusu 301?
- Trwała zmiana struktury permalinków (np. zmiana sługa artykułu).
- Migracja serwisu na nową domenę lub zmiana protokołu z HTTP na HTTPS.
- Ujednolicenie adresów z przedrostkiem
wwworazbez-wwww celu wyeliminowania duplikacji treści. - Łączenie dwóch nakładających się podstron w jeden kompleksowy artykuł.
Kiedy wybrać kod statusu 302?
- Czasowy brak towaru w sklepie internetowym (przekierowanie na kadrę kategorii lub zamiennik na czas dostawy).
- Prowadzenie testów A/B na podstronach produktowych.
- Przekierowanie użytkownika na czas prac konserwacyjnych lub aktualizacji konkretnego modułu.
- Kierowanie na podstrony promocji czasowych lub landing page zależne od geolokalizacji.
Najczęstsze błędy i jak ich unikać
Pętle przekierowań (Redirect Loops)
Sytuacja, w której URL A przekierowuje na URL B, a URL B z powrotem na URL A (lub przez ciąg pośrednich adresów). Skutkuje to błędem ERR_TOO_MANY_REDIRECTS w przeglądarce i całkowitym zablokowaniem dostępu do treści.
Łańcuchy przekierowań (Redirect Chains)
Powstają, gdy stary URL A przekierowuje do B, B do C, a C do docelowego D. Każde pośrednie przekierowanie dodaje dodatkowe zapytanie sieciowe (RTT), co drastycznie wydłuża czas odpowiedzi i negatywnie wpływa na wskaźnik LCP. Pamiętaj, aby zawsze kierować adres bezpośrednio do końcowego źródła.
Pułapka buforowania przekierowania 301
Ze względu na to, że przeglądarki zapisują przekierowania 301 w pamięci podręcznej, przetestowanie błędnej reguły 301 na środowisku produkcyjnym sprawi, że użytkownicy zostaną „uwięzieni” na błędnym adresie nawet po usunięciu reguły z serwera. Prace testowe zawsze warto prowadzić przy użyciu statusu 302 lub z wyłączonym buforowaniem w narzędziach deweloperskich.
Sposoby na kontrolowanie tego, jak przeglądarka i serwer przetwarzają nagłówki odpowiedzi, szczegółowo wyjaśnia poradnik omawiający konfigurację pliku .htaccess na serwerze.
Praktyczne wdrożenie w PHP i Nginx
Wdrożenie w PHP
// Przekierowanie trwałe 301
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://twojadomena.pl/nowy-adres");
exit();
// Przekierowanie tymczasowe 302
header("Location: https://twojadomena.pl/promocja-czasowa");
exit();
Wdrożenie w konfiguracji Nginx
# Przekierowanie 301 w Nginx
server {
server_name stara-domena.pl;
return 301 https://nowa-domena.pl$request_uri;
}
Świadome zarządzanie przekierowaniami gwarantuje ciągłość ruchu, zachowanie wartości profilu linków i eliminuje zbędne opóźnienia, dbając o najwyższy poziom UX od pierwszego zapytania HTTP.