W tym wpisie dowiesz się, czym jest przekierowanie 301, kiedy go użyć i jak je wykonać w Apache, NGINX i WordPressie. Przekierowanie 301 to odpowiedź serwera z kodem HTTP 301 Moved Permanently, która trwale odsyła przeglądarkę i robota Google pod nowy adres podany w nagłówku Location. Google traktuje cel przekierowania 301 jako silny sygnał adresu kanonicznego.
Skrót wykonania: zrób mapę stary URL → nowy URL, ustaw przekierowanie po stronie serwera, sprawdź je poleceniem curl -I, popraw linki wewnętrzne i sitemapę, a przekierowania 301 utrzymuj co najmniej rok. Dokumentacja Google, limity i nazwy raportów w Google Search Console są aktualne na październik 2026.
Przykłady pochodzą z audytu bynajmniej.pl z 14.10.2026 (crawl Screaming Frog na 441 wewnętrznych URL-ach i URL Inspection w Google Search Console), w którym znalazłem 186 wewnętrznych przekierowań, w tym 61 łańcuchów.
Przekierowanie 301 w skrócie: definicja i zakres
Kod 301 opisuje standard HTTP. Według RFC 9110, sekcja 15.4.2 status 301 Moved Permanently oznacza, że zasób dostał nowy, stały adres URI i przyszłe odwołania powinny używać nowego adresu. Serwer powinien wysłać nowy adres w nagłówku Location, a przeglądarka może automatycznie za nim pójść.
Odpowiedź serwera z przekierowaniem 301 wygląda w nagłówkach HTTP tak (przykład z dokumentacji MDN o kodzie 301):
HTTP/2 301
location: /en-US/docs/Learn_web_development/Core/Scripting/Network_requestsDla SEO przekierowanie 301 robi dwie rzeczy. Według dokumentacji Google Search Central „Redirects and Google Search” (aktualizacja 14.04.2026) stałe przekierowanie jest dla systemu indeksowania sygnałem, że adres docelowy powinien być kanoniczny. Według dokumentacji Google o kodach HTTP dla crawlerów (aktualizacja 04.02.2026) Google ignoruje treść adresu przekierowującego i przetwarza treść adresu docelowego.
Przekierowanie 301 jest więc narzędziem do trwałej zmiany adresu, a nie do sterowania duplikatami bez przenoszenia użytkownika. Duplikaty, które mają zostać dostępne pod obydwoma adresami, obsługuje tag canonical, czyli adres kanoniczny.
301, 302, 307 i 308: porównanie kodów przekierowań
Google dzieli przekierowania na stałe i tymczasowe. Według dokumentacji Google Search Central do stałych należą HTTP 301 i 308, natychmiastowy meta refresh (0 sekund) i przekierowanie JavaScript przez location, a do tymczasowych HTTP 302, 303, 307 i meta refresh z opóźnieniem.
| Kod | Typ | Metoda POST | Jak traktuje Google | Kiedy użyć |
|---|---|---|---|---|
| 301 Moved Permanently | stałe | przeglądarka może zmienić POST na GET | silny sygnał, że cel jest kanoniczny | trwała zmiana adresu strony: nowy slug, HTTPS, nowa domena |
| 308 Permanent Redirect | stałe | zmiana metody zabroniona | „Equivalent to 301”, silny sygnał | trwała zmiana adresu, gdy liczy się zachowanie metody (formularze, API) |
| 302 Found | tymczasowe | przeglądarka może zmienić POST na GET | słaby sygnał, stary URL zwykle zostaje w wynikach | chwilowa niedostępność, test, kampania na kilka dni |
| 307 Temporary Redirect | tymczasowe | zmiana metody zabroniona | odpowiednik 302, słaby sygnał | tymczasowe przekierowanie z zachowaniem metody |
| 303 See Other | tymczasowe | zawsze GET | na liście tymczasowych | odesłanie po wysłaniu formularza na stronę potwierdzenia |
Tabela kodów przekierowań łączy trzy źródła: RFC 9110, które dodaje, że 308 jest młodszy od 301 (czerwiec 2014) i może nie być wszędzie rozpoznawany, dokumentację MDN o zmianie metody POST na GET po kodzie 301 oraz dokumentację Google o sygnałach „strong” i „weak”. Bing traktuje 308 tak samo jak 301, co potwierdził Fabrice Canel z Microsoftu 6 września 2024 roku.
Na zwykłej stronie z treścią wybieram przekierowanie 301, bo jest najstarszy i obsługuje go każde narzędzie, wtyczka i crawler. Kod 308 ma sens tam, gdzie pod starym adresem przychodzą żądania POST, np. endpoint formularza albo API.
Kiedy użyć przekierowania 301
Przekierowanie 301 pasuje do sytuacji, w których stary adres nie wróci, a pod nowym adresem jest ta sama albo bardzo podobna treść. Dokumentacja Google zaleca stałe przekierowanie tylko wtedy, gdy masz pewność, że przekierowanie nie zostanie cofnięte. Typowe przypadki:
- Zmiana adresu wpisu lub kategorii: nowy slug, nowa struktura permalinków.
- Przejście z HTTP na HTTPS i ujednolicenie wersji z www i bez www.
- Przeniesienie strony na nową domenę lub subdomenę.
- Połączenie dwóch artykułów o tym samym temacie w jeden, np. przy kanibalizacji fraz.
- Usunięty produkt lub wpis, który ma bliski odpowiednik (następca modelu, nowsza wersja poradnika).
- Stary adres z wartościowymi linkami zewnętrznymi, który dziś zwraca błąd 404.
Przekierowanie 301 nie pasuje do strony, która nie ma odpowiednika. Usunięty wpis bez następcy powinien zwracać 404 albo 410, a nie przekierowanie na stronę główną. Przekierowanie tymczasowe 302 pasuje do przerwy technicznej, testu A/B albo sezonowej promocji, bo Google zostawia wtedy w wynikach stary adres.
Jak wykonać przekierowanie 301 w 6 krokach
Wykonanie przekierowania 301 zaczyna się od listy adresów, a kończy na sprawdzeniu kodów HTTP i poprawieniu linków. Kolejność kroków opieram na przewodniku Google o przenoszeniu witryny ze zmianą adresów URL (aktualizacja 20.08.2026):
- Zrób mapę przekierowań: arkusz z kolumnami „stary URL” i „nowy URL”, jeden wiersz na adres. Każdy stary URL wskazuje najbliższy tematycznie odpowiednik.
- Wybierz metodę po stronie serwera: plik
.htaccessw Apache, bloklocationw NGINX albo wtyczkę w CMS. Według Google przekierowanie po stronie serwera jest metodą preferowaną; meta refresh to rozwiązanie awaryjne, a JavaScript ostateczność, bo renderowanie może się nie udać. - Wskaż cel końcowy bez pośrednich skoków. Google zaleca przekierowanie od razu do adresu docelowego, a gdy to niemożliwe, łańcuch najlepiej nie dłuższy niż 3 przekierowania.
- Sprawdź kody HTTP poleceniem
curl -Ii crawlem Screaming Frog: każdy stary URL ma dać 301, a cel 200. - Popraw linki wewnętrzne i sitemapę XML, żeby wskazywały nowe adresy, a nie stare URL-e z przekierowaniem 301.
- Utrzymaj przekierowania 301 co najmniej rok. Przewodnik Google o migracji mówi wprost: „Keep the redirects for as long as possible, generally at least 1 year”.
Przekierowanie 301 w .htaccess (Apache)
Apache obsługuje proste przekierowania dyrektywą Redirect z modułu mod_alias, a reguły z wyrażeniami regularnymi dyrektywą RedirectMatch albo RewriteRule z flagą [R=301]. Według dokumentacji Apache mod_alias dyrektywa Redirect bez podanego statusu wysyła 302, więc kod 301 albo słowo permanent trzeba wpisać jawnie:
# jeden adres
Redirect 301 /stary-wpis/ https://example.com/nowy-wpis/
# cały katalog z zachowaniem reszty ścieżki
RedirectMatch 301 ^/blog/(.*)$ https://example.com/poradniki/$1
# HTTP na HTTPS przez mod_rewrite
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]Przekierowanie 301 w NGINX
NGINX nie czyta pliku .htaccess, więc przekierowanie 301 ustawia się w konfiguracji serwera dyrektywą return albo rewrite z flagą permanent. Według dokumentacji modułu ngx_http_rewrite_module samo return URL; bez kodu daje 302, a flaga redirect też daje 302:
location = /stary-wpis/ {
return 301 https://example.com/nowy-wpis/;
}
rewrite ^/blog/(.*)$ /poradniki/$1 permanent;Przekierowanie 301 w WordPressie
WordPress sam przekierowuje zmienione slugi wpisów. Funkcja wp_old_slug_redirect(), obecna w rdzeniu od wersji 2.1.0, zapamiętuje stary slug i przy wejściu na stary adres wysyła przekierowanie 301 na aktualny permalink. Funkcja nie obsługuje zmiany struktury permalinków, kategorii ani adresów spoza wpisów.
Pozostałe przekierowania w WordPressie ustawia wtyczka. Darmowy moduł Redirections we wtyczce Rank Math obsługuje według bazy wiedzy Rank Math kody 301, 302 i 307 oraz 410 i 451 dla treści usuniętych. Przy kilkuset regułach wolę reguły w konfiguracji serwera, bo serwer odpowiada wtedy bez uruchamiania PHP i WordPressa.
Jak sprawdzić przekierowanie 301
Najszybszy test przekierowania 301 to polecenie curl w terminalu. Opcja -I pobiera same nagłówki, a -L idzie za kolejnymi przekierowaniami, więc widać cały łańcuch skoków aż do kodu 200:
curl -sIL http://example.com/stary-wpis/ | grep -iE "^HTTP|^location"Test przeglądarką bywa mylący. Według RFC 9110 odpowiedź 301 jest „heuristically cacheable”, więc przeglądarka może pamiętać stare przekierowanie po zmianie reguły na serwerze. Przekierowania testuję w curl albo w oknie prywatnym.
Raport Indeksowanie stron w Google Search Console pokazuje przekierowania w dwóch statusach. Według pomocy Google do raportu Indeksowanie stron status „Strona z przekierowaniem” (Page with redirect) oznacza niekanoniczny URL, który przekierowuje i nie będzie zindeksowany. Status „Błąd przekierowania” (Redirect error) oznacza za długi łańcuch, pętlę, adres przekraczający maksymalną długość URL-a albo pusty lub błędny adres w łańcuchu.
Status „Strona z przekierowaniem” w Google Search Console jest zwykle oczekiwany, bo stary adres po przekierowaniu 301 ma wypaść z indeksu. Status „Błąd przekierowania” wymaga poprawki. Według dokumentacji Google crawlery Google domyślnie podążają za maksymalnie 10 skokami przekierowań, a narzędzia inspekcji Google nie podążają za przekierowaniami wcale.
Screaming Frog SEO Spider pokazuje przekierowania w zakładce Response Codes (filtr Redirection (3xx)), a łańcuchy w raporcie Reports → Redirects → Redirect Chains. Crawl przekierowań to jeden z kroków w moim poradniku jak zrobić audyt SEO.
Przykład: przekierowania 301 na bynajmniej.pl
Crawl Screaming Frog bynajmniej.pl z 14.10.2026 znalazł 186 wewnętrznych przekierowań 3xx. 61 z nich to łańcuchy z co najmniej 2 skokami, a 92 kończą się błędem lub brakiem odpowiedzi. Blog działa od 2008 roku i przeszedł przez wersję z www, bez www i HTTPS, więc stare odnośniki przechodzą przez kilka reguł po kolei.
Najczęstszy przypadek z audytu bynajmniej.pl to stary obrazek z wpisu z 2009 roku: http://www.bynajmniej.pl/wp-content/uploads/2009/06/kaspar.jpg zwraca 301, a adres docelowy zwraca 404. Przekierowanie 301 na brakujący plik nic nie ratuje, tylko dokłada robotowi jeden skok przed błędem.
Źródłem łańcuchów na bynajmniej.pl jest 83 linkowanych adresów po HTTP, czyli stare odnośniki http:// i http://www. w treści wpisów. Każdy taki link przechodzi przez przekierowanie protokołu i hosta, zanim trafi na właściwy adres. Poprawka polega na zamianie adresów w bazie na wersję HTTPS bez www, a nie na kolejnej regule przekierowania.
Sitemapa bynajmniej.pl zawiera 2 adresy z przekierowaniem 301: /podcast/ i /wordpress-seo/. URL Inspection w Google Search Console pokazuje dla /wordpress-seo/ status „Błąd przekierowania”. Sitemapa powinna zawierać tylko adresy docelowe z kodem 200, bo adres przekierowujący nie zostanie zindeksowany.
Każdy skok w łańcuchu to dodatkowe żądanie robota. Na małym blogu nie ma to znaczenia dla indeksacji, ale w dużym sklepie tysiące łańcuchów zjadają crawl budget, czyli limit adresów, które Googlebot pobiera z serwisu.
Przekierowanie 301 a AI search
Asystenci AI cytują adresy URL i część z tych adresów nie istnieje. Według badania Ahrefs z 2 września 2025 roku na 16 mln URL-i ruch z asystentów AI trafia na strony 404 średnio 2,87 razy częściej niż ruch z Google (0,43% wobec 0,15% kliknięć), a w ChatGPT odsetek wynosi 1,01%.
Ahrefs zaleca przekierowanie 301 dla zmyślonych przez AI adresów, które dostają ruch, jeśli istnieje sensowny cel. Zmyślone adresy znajdziesz w logach serwera i w raportach 404 we wtyczce, a przekierowanie ustawiasz tak samo jak dla każdego starego URL-a. Przy zmianie adresów własnych wpisów przekierowanie 301 dba też o to, żeby stare linki cytowane w odpowiedziach AI prowadziły do treści, a nie na błąd.
Czego nie robić z przekierowaniem 301
- Nie przekierowuj wszystkich usuniętych adresów na stronę główną. Przewodnik Google o migracji odradza przekierowanie wielu starych URL-i na jeden niezwiązany adres, bo Google może potraktować takie przekierowanie jak soft 404.
- Nie używaj 302 do trwałej zmiany adresu. Dyrektywa
Redirectw Apache ireturn URL;w NGINX bez kodu wysyłają właśnie 302. - Nie zostawiaj łańcuchów i pętli. Każda nowa reguła powinna wskazywać adres końcowy, a stare reguły trzeba przepisać na nowy cel.
- Nie usuwaj przekierowań 301 po miesiącu. Google zaleca co najmniej rok, a dla użytkowników i starych linków najlepiej bezterminowo.
- Nie używaj narzędzia Zmiana adresu w Google Search Console przy przejściu na HTTPS albo zmianie ścieżek. Według Google narzędzie Zmiana adresu służy tylko do zmiany domeny lub subdomeny.
Osobna kategoria to mit o procencie mocy traconym na każdym przekierowaniu 301, który w polskich wpisach krąży w wersjach od „99% mocy” w dół, zależnie od tego, kto przepisywał od kogo. Gary Illyes z Google napisał w lipcu 2016 roku, że „30x redirects don’t lose PageRank anymore”, co opisał Search Engine Land. Problemem przekierowania 301 nie jest procent mocy, tylko zły cel, łańcuch albo przekierowanie, które ktoś skasował przy porządkach w .htaccess.
FAQ: najczęstsze pytania o przekierowanie 301
Czym się różni przekierowanie 301 od 302?
Przekierowanie 301 jest stałe, a 302 tymczasowe. Google traktuje 301 jako silny sygnał, że adres docelowy jest kanoniczny, a 302 jako słaby sygnał, więc przy 302 w wynikach zwykle zostaje stary adres.
Czy przekierowanie 301 przekazuje moc linków?
Tak. Według Gary’ego Illyesa z Google (2016) przekierowania 30x nie tracą PageRanku, a MDN opisuje, że wyszukiwarki przypisują linki do starego URL-a adresowi docelowemu przekierowania 301.
Jak długo utrzymywać przekierowanie 301?
Przekierowanie 301 utrzymuj co najmniej rok, zgodnie z przewodnikiem Google o migracji z sierpnia 2026 roku. Google dodaje, że użytkownikom najlepiej służy utrzymanie przekierowań bezterminowo.
Ile przekierowań w łańcuchu obsługuje Google?
Crawlery Google domyślnie podążają za maksymalnie 10 skokami przekierowań. Google zaleca jednak przekierowanie bezpośrednio do celu, a w razie konieczności łańcuch nie dłuższy niż 3 przekierowania.
Kiedy użyć 308 zamiast 301?
Kod 308 użyj, gdy pod stary adres trafiają żądania POST, np. z formularza lub API, bo 308 zabrania przeglądarce zmiany metody na GET. Dla SEO kody 301 i 308 są równoważne w Google i w Bingu.
Czy przekierowanie 301 na stronę główną jest dobre dla SEO?
Masowe przekierowanie 301 usuniętych adresów na stronę główną nie jest dobre, bo Google może je potraktować jako soft 404. Usunięty adres bez odpowiednika powinien zwracać 404 albo 410.

Członek zarządu i współwłaściciel agencji IF.PL, w SEO od ponad 20 lat (m.in. Gazeta.pl, Wirtualna Polska, Polska Press). Na bynajmniej.pl piszę z pomocą AI: temat, dane i testy są moje, AI pomaga ubrać to w słowa.


Dodaj komentarz