Jak ustawić przekierowania 301 po zmianie adresu strony w WordPressie
Gdy zmieniasz adres URL strony lub podstrony — zmieniasz domenę, przebudowujesz strukturę linków albo edytujesz slug wpisu — stare adresy przestają działać i odwiedzający dostają błąd 404. Google traktuje to jako utratę strony i z czasem usuwa ją z wyników wyszukiwania, a każdy, kto kliknie stary link (z Google, z innej strony albo z zakładki), trafia na pustkę. Przekierowanie 301 rozwiązuje ten problem: mówi przeglądarce i wyszukiwarce, że strona przeniosła się na stałe pod nowy adres, i przekazuje dalej zarówno ruch, jak i wypracowaną pozycję w wynikach wyszukiwania. Ten poradnik pokazuje, jak skonfigurować takie przekierowanie krok po kroku, niezależnie od tego, czy masz dostęp tylko do wp-admin, czy też do panelu hostingowego.
- Zrób listę wszystkich starych adresów URL, które się zmieniają, i zapisz obok każdego z nich nowy adres docelowy. Jeśli zmieniasz całą strukturę linków (na przykład z
/2024/01/nazwa-wpisu/na/nazwa-wpisu/), skorzystaj z eksportu adresów z Google Search Console (Indeksowanie > Strony) albo z mapy witryny sitemap.xml, żeby nie pominąć żadnego wpisu. - Ustal, że potrzebujesz przekierowania typu 301, a nie 302. Przekierowanie 301 oznacza „przeniesiono na stałe” — Google przekazuje przez nie wypracowaną wartość SEO starego adresu na nowy. Przekierowanie 302 oznacza „przeniesiono tymczasowo” — wyszukiwarka nadal traktuje stary adres jako właściwy i nie przenosi na nowy jego pozycji w wynikach. Jeśli zmiana adresu jest trwała (a w większości przypadków jest), zawsze wybieraj 301.
- Wybierz sposób wdrożenia w zależności od tego, jaki dostęp do strony masz. Jeśli zarządzasz WordPressem tylko przez wp-admin, najprostszym rozwiązaniem jest wtyczka do przekierowań. Jeśli masz dostęp do menedżera plików w panelu hostingowym, możesz edytować plik .htaccess. Część hostingów oferuje też gotową sekcję przekierowań w panelu klienta — sprawdź to przed ręczną edycją plików, to zwykle najbezpieczniejsza opcja.
- Wariant A — wtyczka Redirection: w wp-admin przejdź do Wtyczki > Dodaj nową, wyszukaj „Redirection”, zainstaluj i aktywuj wtyczkę. Następnie przejdź do Narzędzia > Redirection, w polu „Source URL” wpisz stary adres (np.
/stara-podstrona/), w polu „Target URL” wpisz nowy adres (np./nowa-podstrona/), upewnij się, że typ przekierowania jest ustawiony na 301, i kliknij „Add Redirect”. - Wariant B — edycja pliku .htaccess: zaloguj się do panelu hostingowego, otwórz menedżer plików i znajdź plik .htaccess w głównym katalogu strony (zwykle public_html). Przed edycją pobierz jego kopię na dysk — to twój punkt powrotu, jeśli coś pójdzie nie tak. Dodaj linijkę z regułą przekierowania nad sekcją
# BEGIN WordPress, na przykład:Redirect 301 /stara-podstrona/ https://twojadomena.pl/nowa-podstrona/— albo, jeśli zmieniasz całą strukturę adresów, regułę RewriteRule w bloku RewriteEngine On, np.RewriteRule ^stara-kategoria/(.*)$ /nowa-kategoria/$1 [R=301,L]. - Wariant C — panel hostingowy: jeśli hosting oferuje osobną sekcję przekierowań (często nazwaną „Przekierowania” albo „Redirects” w panelu typu cPanel czy DirectAdmin), wpisz tam stary adres, docelowy adres i wybierz typ „Stałe (301)”. To rozwiązanie omija ręczną edycję plików i jest mniej podatne na błędy składni.
- Przetestuj przekierowanie zaraz po jego dodaniu: otwórz stary adres w przeglądarce w trybie incognito (żeby ominąć wcześniej zapamiętane przekierowania w pamięci podręcznej) i sprawdź, czy trafiasz na nowy adres. Dodatkowo sprawdź kod odpowiedzi narzędziem do sprawdzania nagłówków HTTP (wystarczy wyszukać „HTTP header checker” w Google) — powinien pokazywać 301, nie 302 ani 200.
- Zaktualizuj linki wewnętrzne na stronie, które nadal wskazują na stary adres — w menu, w treści wpisów, w widgetach i w stopce. Przekierowanie działa, ale każdy wewnętrzny link przechodzący przez nie, zamiast prowadzić bezpośrednio do nowego adresu, niepotrzebnie obciąża stronę dodatkowym przeskokiem i lekko rozmywa wartość SEO.
- Zgłoś zmianę w Google Search Console: prześlij zaktualizowaną mapę witryny (sitemap.xml) z nowymi adresami, a jeśli zmieniałeś całą domenę, skorzystaj dodatkowo z narzędzia „Zmiana adresu” w ustawieniach Search Console. Przyspiesza to ponowne zaindeksowanie nowych adresów.
- Obserwuj błędy 404 przez kolejne dwa-trzy tygodnie w Google Search Console (Indeksowanie > Strony > sekcja z błędami) albo w logach 404 hostingu, jeśli hosting je udostępnia. Jeśli pojawi się stary adres, którego nie uwzględniłeś w liście z kroku 1, dodaj dla niego osobne przekierowanie.
Co zrobić, gdy coś pójdzie nie tak
Przeglądarka pokazuje błąd „Zbyt wiele przekierowań” (ERR_TOO_MANY_REDIRECTS). Zwykle oznacza to, że przekierowanie prowadzi samo do siebie albo że masz dwa konfliktowe przekierowania działające jednocześnie — na przykład ten sam adres przekierowany inaczej we wtyczce i w pliku .htaccess. Sprawdź, czy dany stary adres ma tylko jedno źródło przekierowania, usuń duplikaty i upewnij się, że docelowy adres nie przekierowuje z powrotem na stary.
Narzędzie do sprawdzania nagłówków nadal pokazuje kod 302 albo 200, mimo że ustawiłeś 301. Najczęstsza przyczyna to pamięć podręczna — przeglądarki, wtyczki cache na stronie albo CDN, jeśli z niego korzystasz. Wyczyść pamięć podręczną w tej wtyczce, odczekaj kilka minut i sprawdź ponownie w trybie incognito; jeśli strona korzysta z CDN, wyczyść też cache po stronie CDN.
Po edycji pliku .htaccess strona przestała się wczytywać i pokazuje błąd 500. To niemal zawsze błąd składni w dodanej regule — brakujący znak, zła kolejność albo reguła wstawiona w złym miejscu pliku. Wróć do menedżera plików i podmień plik .htaccess na kopię zapasową, którą pobrałeś przed edycją (patrz krok 5). Jeśli nie masz kopii, usuń całą dodaną linijkę i wygeneruj plik .htaccess od nowa — w wp-admin wejdź w Ustawienia > Bezpieczne odnośniki i kliknij „Zapisz zmiany” bez żadnej modyfikacji, a WordPress sam odtworzy podstawową wersję pliku.
Od 2014 roku prowadzi SP-Media - agencję, która buduje i utrzymuje strony firmowe. Hostingi ocenia z perspektywy kogoś, kto codziennie na nich pracuje: migracje, awarie, kontakt z supportem.