Stały redirect porządkuje adresy i chroni efekty migracji
- 301 oznacza trwałą zmianę adresu i przekazuje przeglądarkę na nową lokalizację.
- W SEO pomaga zachować sygnały, linki i widoczność, ale nie gwarantuje automatycznego utrzymania pozycji.
- Najlepsza praktyka to jeden stary adres do jednego trafnego celu, bez łańcuchów przekierowań.
- Reguły można ustawić w .htaccess, Nginx, CMS-ie lub wtyczce WordPress.
- Po wdrożeniu trzeba sprawdzić kod odpowiedzi, końcowy adres, linki wewnętrzne i mapę strony.
Co dokładnie robi kod 301
Gdy ktoś otwiera nieaktualny adres, serwer odpowiada kodem HTTP 301 Moved Permanently i wskazuje nową lokalizację. Przeglądarka wykonuje kolejne żądanie, a użytkownik zwykle widzi tylko końcową stronę.
Dla wyszukiwarki to sygnał, że zmiana jest trwała, a nie tymczasowa. Google Search Central traktuje kody 301 i 308 jako stałe przekierowania, które mogą pomóc połączyć sygnały starego i nowego adresu. Nie oznacza to jednak, że każda moc starej strony zostanie przeniesiona automatycznie. Liczy się przede wszystkim podobieństwo tematyczne oraz jakość strony docelowej.
Najprostszy przykład to zmiana adresu wpisu z krótkiego, nieczytelnego wariantu na opisowy. Zamiast zostawiać stary adres z błędem 404, kieruję go do nowej wersji. Użytkownik trafia do właściwej treści, a linki prowadzące do starego adresu nie zostają bez kontekstu.
Kiedy stałe przekierowanie ma sens
Stosuję je wszędzie tam, gdzie stary adres nie powinien już samodzielnie funkcjonować. Najczęstsze przypadki obejmują:
- zmianę domeny lub migrację całej witryny,
- przejście z wersji HTTP na HTTPS,
- zmianę struktury adresów, na przykład usunięcie kategorii ze ścieżki,
- łączenie dwóch podobnych artykułów w jeden mocniejszy materiał,
- usunięcie produktu, kategorii albo podstrony, która ma wartościowy odpowiednik,
- ujednolicenie wariantów domeny, adresów z końcowym ukośnikiem lub wielkimi literami.
W sklepie internetowym nie przekierowuję każdego wycofanego produktu na stronę główną. Lepszym celem będzie podobny produkt, kategoria albo aktualny zamiennik. Strona główna jest rozsądnym wyjściem dopiero wtedy, gdy nie istnieje żaden sensowny odpowiednik. Masowe kierowanie niepowiązanych adresów w jedno miejsce może wyglądać sztucznie i nie pomaga użytkownikowi.
Gdy nie ma dobrego adresu docelowego
Nie każda usunięta podstrona potrzebuje przekierowania. Jeżeli adres nie ma ruchu, linków zewnętrznych ani wartościowej treści, zwykły kod 404 lub 410 może być właściwszy. Przekierowanie na siłę często tylko powiększa bałagan i utrudnia analizę witryny.
Przy zmianie domeny sytuacja wygląda inaczej. Wtedy przygotowuję mapę starych adresów i ich nowych odpowiedników, wdrażam reguły, aktualizuję linki wewnętrzne oraz przesyłam nową mapę strony. Google Search Central zaleca utrzymywanie przekierowań przy migracji co najmniej przez 12 miesięcy, a przy ważnych, często linkowanych adresach najlepiej dłużej.
301, 302, 307 czy 308
Dobór kodu zależy od tego, czy zmiana jest trwała i czy trzeba zachować metodę żądania HTTP. Dla typowych stron i wpisów najczęściej wystarczy kod 301, ale przy formularzach lub żądaniach POST wybór wymaga większej ostrożności.
| Kod | Kiedy go użyć | Najważniejsza cecha |
|---|---|---|
| 301 | Trwała zmiana adresu strony | Standardowy wybór dla stron dostępnych metodą GET |
| 302 | Zmiana tymczasowa, test lub krótka kampania | Nie komunikuje trwałego przeniesienia zasobu |
| 307 | Tymczasowa zmiana przy zachowaniu metody żądania | Nie powinien zmieniać GET w POST ani odwrotnie |
| 308 | Trwała zmiana wymagająca zachowania metody żądania | Stały odpowiednik kodu 307 |
Najczęstszy błąd polega na użyciu 302 podczas trwałej migracji. Technicznie użytkownik może trafić na właściwą stronę, ale dla wyszukiwarki komunikat jest mniej jednoznaczny. Z drugiej strony nie zamieniam testu A/B ani chwilowej promocji na 301, ponieważ stałego redirectu nie powinno się używać do zmian, które za kilka dni znikną.
Jak ustawić przekierowanie na serwerze lub w WordPressie

Apache i plik .htaccess
Na serwerze Apache najprostsza reguła korzysta z modułu mod_alias. W pliku konfiguracyjnym można wskazać stary i nowy adres w ścieżce:
Redirect 301 /stary-adres /nowy-adres
Przy większej liczbie reguł przydaje się mod_rewrite, szczególnie gdy zmiana dotyczy całej struktury adresów. Przed zapisaniem zmian robię kopię pliku i sprawdzam składnię, bo jeden błędny znak w .htaccess może wywołać błąd 500.
Nginx
W Nginx redirect definiuje się w konfiguracji serwera. Dla jednego adresu może wyglądać tak:
location = /stary-adres {
return 301 /nowy-adres;
}
Po edycji konfiguracji trzeba ją przetestować i przeładować serwer. W tym środowisku szczególnie pilnuję, aby reguły nie tworzyły pętli. Jeżeli stary adres wskazuje sam na siebie albo dwie reguły wskazują na siebie nawzajem, użytkownik zobaczy komunikat o zbyt wielu przekierowaniach.
Przeczytaj również: Ruch organiczny - jak zwiększać widoczność i mierzyć efekty SEO
WordPress i inne systemy CMS
W WordPressie można użyć wtyczki do zarządzania redirectami albo funkcji dostępnej w używanym narzędziu SEO. To dobre rozwiązanie dla właściciela strony, który nie ma dostępu do konfiguracji serwera. Przy dużej migracji wolę jednak reguły serwerowe, bo są szybsze i łatwiej nimi zarządzać masowo.
Nie tworzę przekierowania z poziomu PHP, jeśli można zrobić to wcześniej na serwerze. Kod aplikacji musi się uruchomić, zanim odpowie użytkownikowi, dlatego taka metoda może zwiększać czas odpowiedzi i obciążenie. Redirect na poziomie serwera jest zwykle prostszy, szybszy i bardziej przewidywalny.
Jak przeprowadzić migrację bez utraty widoczności
Najwięcej problemów nie wynika z samego kodu 301, lecz z braku planu. Zaczynam od eksportu adresów z analityki, Search Console, mapy strony i narzędzia do crawlowania. Następnie przypisuję każdemu ważnemu staremu adresowi jeden nowy cel.
- Zbierz stare adresy z ruchem, linkami i widocznością.
- Przygotuj mapowanie stary adres - nowy adres.
- Ustaw pojedyncze przekierowania, unikając kilku kroków pośrednich.
- Zaktualizuj linki wewnętrzne, menu, kanoniczne adresy i mapę strony.
- Sprawdź odpowiedzi serwera dla najważniejszych podstron.
- Obserwuj ruch i indeksację przez kolejne tygodnie.
Przy mapowaniu nie patrzę wyłącznie na podobieństwo słów w adresie. Sprawdzam także intencję użytkownika i temat treści, dlatego podczas porządkowania struktury przydaje się wcześniejszy dobór fraz kluczowych. Stary poradnik powinien prowadzić do nowego poradnika, a nie do przypadkowej kategorii tylko dlatego, że znajduje się bliżej w menu.
Po wdrożeniu otwieram kilka starych adresów w różnych wariantach i sprawdzam, czy każdy wykonuje jedno przekierowanie do strony z kodem 200. Kontroluję też parametry kampanii, wersje z końcowym ukośnikiem oraz adresy mobilne, jeśli witryna kiedyś je wykorzystywała.
Błędy, które najczęściej psują efekt
Najbardziej kosztowny błąd to łańcuch redirectów. Przykładowo stary adres prowadzi do wersji pośredniej, ta do HTTPS, a dopiero kolejna reguła kieruje na właściwą stronę. Każdy dodatkowy krok zwiększa opóźnienie i komplikuje indeksowanie, dlatego dążę do zasady stary adres - bezpośrednio nowy adres.
- Przekierowanie wszystkich usuniętych stron na stronę główną.
- Ustawienie 302 zamiast stałego kodu przy migracji.
- Pozostawienie linków wewnętrznych prowadzących do starych adresów.
- Dodanie przekierowania, ale pozostawienie starego adresu w mapie strony.
- Brak sprawdzenia pętli, błędów 404 i stron docelowych z kodem 5xx.
- Usunięcie reguł zaraz po migracji, mimo że stare adresy nadal są odwiedzane.
Po zmianie adresów sprawdzam także tytuły, nagłówki i meta opis. Sama zmiana techniczna nie wystarczy, jeśli nowa strona ma nieaktualny opis albo obiecuje coś innego niż poprzedni adres. Spójność treści pomaga utrzymać dobre doświadczenie użytkownika i ogranicza spadki współczynnika klikalności.
Nie usuwam przekierowań tylko dlatego, że po kilku dniach wszystko wygląda poprawnie. Monitoruję raporty indeksowania, ruch organiczny i błędy przez co najmniej kilka tygodni, a przy dużym serwisie robię ponowny crawl po każdej większej zmianie.
Co sprawdzić przed zamknięciem migracji
Najkrótsza kontrola obejmuje cztery elementy. Każdy ważny stary adres powinien prowadzić do trafnej strony, odpowiedź powinna mieć kod 301, końcowy adres powinien działać, a linki wewnętrzne i mapa strony powinny wskazywać już nowe lokalizacje.
Jeżeli po wdrożeniu pojawia się nagły spadek ruchu, nie zakładam od razu, że problemem jest sam redirect. Sprawdzam też blokadę w robots.txt, tagi noindex, błędne kanoniczne adresy, utratę treści oraz problemy z dostępnością serwera. Dobre przekierowanie jest ważnym elementem migracji, ale nie zastąpi poprawnej architektury i wartościowej strony docelowej.