Jak naprawić błąd 404 w WordPressie?

Błąd 404 to odpowiedź serwera „nie znaleziono”: link prowadzi do adresu, pod którym nie ma już strony (pełna definicja we wpisie Co to jest błąd 404?). W WordPressie naprawa sprowadza się do trzech kroków: pobierasz listę błędnych adresów z Google Search Console, a potem dla każdego decydujesz między przekierowaniem 301, kodem 410 a poprawką linku. Wybraną regułę wdrażasz w Rank Math, wtyczce Redirection albo w pliku .htaccess. Naprawa jednego adresu zajmuje kilka minut w panelu, bez edycji motywu.

Skąd wziąć listę adresów z błędem 404 do naprawy?

Lista jest w dwóch miejscach: w raporcie Indeksowanie → Strony → „Nie znaleziono (404)” w Google Search Console oraz w 404 Monitor wtyczki Rank Math. Pierwsze źródło pokazuje adresy, do których dotarł robot Google, a drugie te, na które w czasie rzeczywistym trafiają realni użytkownicy i roboty.

  • Google Search Console: w raporcie Strony kliknij wiersz „Nie znaleziono (404)”, a potem przycisk Eksportuj w prawym górnym rogu, żeby dostać listę adresów w arkuszu. Jak dojść do tego raportu i jak go czytać, opisuje wpis o błędzie 404, a gdy nie masz jeszcze dostępu do usługi, pomoże instrukcja Jak dodać użytkownika do Google Search Console?
  • Rank Math 404 Monitor: WordPress Dashboard → Rank Math SEO → 404 Monitor. Moduł w trybie Simple zapisuje adres, liczbę trafień i czas ostatniego wejścia, a w trybie Advanced dodatkowo stronę odsyłającą (referer) i przeglądarkę lub robota (user agent). Tryb ustawiasz w Rank Math SEO → General Settings → 404 Monitor.
  • Wtyczka Redirection: jeśli nie używasz Rank Math, taki sam log znajdziesz w zakładce 404s w jej panelu.

Nie każdy adres z listy wymaga reguły, dlatego w pierwszej kolejności naprawiasz adresy z największą liczbą trafień, z ruchem w Google Analytics i z linkami z innych serwisów. Adresy, o które pytają boty (/wp-login.php, /xmlrpc.php, /.env, /admin), nigdy nie istniały na stronie i zostają jako 404. Szczegółowo, jak czytać log 404 i ustalić kolejność, opisuje osobny wpis.

Jak zdecydować: przekierowanie 301, kod 410 czy poprawka linku?

Przekierowanie 301 ustawiasz, gdy istnieje strona o tej samej treści lub odpowiadająca na tę samą potrzebę. Kod 410 wybierasz, gdy treść usunięto na stałe i nie ma zamiennika. Poprawka linku wystarcza, gdy 404 wynika z literówki w adresie.

  • Przekierowanie 301: nowy slug wpisu, produkt zastąpiony nowszym modelem, przebudowana struktura kategorii, migracja na nową stronę. Adres docelowy to strona o tej samej tematyce, nie strona główna witryny; masowe przekierowania w to jedno miejsce Google klasyfikuje jako soft 404, czyli stronę z kodem 200, która nie odpowiada na potrzebę użytkownika. Jak 301 działa i czym różni się od 302, wyjaśnia wpis Co to jest przekierowanie 301?
  • Kod 410 Gone: wycofany produkt, zamknięta promocja, skasowana kategoria, wpis usunięty celowo. Adres z kodem 410 Google usuwa z indeksu zwykle szybciej niż adres z 404, bo 410 jest jednoznacznym sygnałem „usunięte na stałe” (porównanie 404, 410 i soft 404 jest w tabeli we wpisie o błędzie 404).
  • Poprawka linku: literówka w menu, w treści, w reklamie Google Ads albo w newsletterze. Przekierowanie zamaskowałoby skutek, a błędny link nadal wysyłałby użytkowników przez dodatkowe żądanie. Poprawiasz więc link u źródła, a adres z literówką zostaje jako 404, bo nikt już na niego nie trafia.

Reguła praktyczna z wdrożeń: jeden adres, jedna decyzja, zapisana w arkuszu z eksportu (kolumny: stary adres, decyzja, adres docelowy). Arkusz jest potem mapą do wklejenia w Rank Math albo do .htaccess.

Które narzędzie wybrać: Rank Math, wtyczkę Redirection czy .htaccess?

Na stronie z Rank Math pojedyncze przekierowania robisz w module Redirections. Wtyczka Redirection zastępuje go, gdy na stronie nie ma Rank Matha albo używasz innej wtyczki SEO. Plik .htaccess ma sens przy setkach adresów według wzorca, zmianie domeny albo gdy przekierowania mają działać niezależnie od wtyczek.

NarzędzieGdzie ustawiaszKiedy wybraćOgraniczenia
Rank Math Redirectionswp-admin → Rank Math SEO → Redirectionsstrona ma Rank Math, pojedyncze adresy, 404 Monitor podpowiada, co przekierowaćwymaga trybu Advanced w Rank Math; reguła działa dopiero po załadowaniu WordPressa
Wtyczka Redirectionwp-admin → Narzędzia → Redirectionbrak Rank Math albo inna wtyczka SEO; log 404 i reguły w jednym paneluosobna wtyczka; nie łączyć z modułem Redirections w Rank Math
Plik .htaccesskatalog główny WordPressa: FTP, menedżer plików hostingu albo edytor w Rank Mathsetki adresów według wzorca, zmiana domeny, hosting bez wtyczektylko Apache i LiteSpeed (Nginx nie czyta .htaccess); literówka = błąd 500 na całej stronie; brak logu

Do przekierowań na jednej stronie używaj tylko jednego narzędzia. Dwie wtyczki z regułą dla tego samego adresu dają łańcuch albo pętlę przekierowań, a szukanie przyczyny zajmuje potem więcej czasu niż samo przekierowanie.

Jak ustawić przekierowanie w Rank Math?

Przekierowanie w Rank Math dodajesz w Rank Math SEO → Redirections → Add New albo jednym kliknięciem z 404 Monitor, gdzie przycisk Redirect pod wierszem błędu wypełnia pole Source URL adresem, który zwrócił 404.

1

Włącz moduł

Rank Math SEO → Dashboard → Modules → przełącznik „Redirections”. Moduł jest widoczny w trybie Advanced, który włączasz przyciskiem Easy / Advanced u góry Dashboardu.

2

Zacznij od 404 Monitor

Wejdź w Rank Math SEO → 404 Monitor, najedź kursorem na wiersz z adresem i kliknij „Redirect”. Formularz otwiera się z wypełnionym adresem źródłowym.

3

Wypełnij regułę

W Rank Math SEO → Redirections → Add New wpisz w Source URLs stary adres z dopasowaniem „Exact”, w Destination URL pełny nowy adres z https:// i ukośnikiem na końcu, a jako Redirection Type wybierz „301 Permanent Move”. Dla treści usuniętej na stałe wybierz „410 Content Deleted”; pole docelowe zostaje wtedy puste. Na koniec zostaw status „Activate” i kliknij „Add Redirection”.

4

Wyczyść cache

Strona z włączonym cache’em nadal pokazuje zapisaną wcześniej wersję starego adresu, więc przekierowanie „nie działa”, dopóki go nie wyczyścisz (LiteSpeed Cache → Toolbox → Purge All, WP Rocket → Clear cache). Na roseo.com.pl czyścimy cache po każdej zmianie reguł.

5

Sprawdź kod odpowiedzi

Tak, jak opisujemy w sekcji o teście niżej.

Lista przekierowań 301 w Rank Math SEO na roseo.com.pl z kolumnami Od, Do, Typ i liczbą odsłon
Zrzut: Rank Math SEO → Przekierowania na roseo.com.pl.
Rank Math 404 Monitor: lista adresów z kodem 404 i linkiem „Przekierowanie” pod wierszem
Zrzut: 404 Monitor w Rank Math z linkiem Przekierowanie przy adresie.

Gdy reguła działa inaczej, niż się spodziewasz, włącz podgląd „Debug Redirections”: Rank Math SEO → General Settings → Redirections. Zalogowany administrator widzi wtedy przed przekierowaniem stronę z nazwą reguły, która zadziałała, a zwykli odwiedzający trafiają pod nowy adres od razu.

Jak naprawić błąd 404 wtyczką Redirection?

Wtyczka Redirection (bezpłatna, w katalogu WordPress.org) dodaje panel Narzędzia → Redirection z polami Source URL i Target URL oraz listą kodów odpowiedzi, m.in. 301, 302, 307, 410 i 451.

  • Nowa reguła: w zakładce Redirects kliknij „Add new”, wpisz stary adres w Source URL, nowy w Target URL, zostaw kod 301 (albo wybierz 410 dla treści usuniętej) i kliknij „Add Redirect”. Reguły grupujesz w Groups, np. „Migracja produktów”, co ułatwia późniejsze porządki.
  • Log 404: zakładka 404s zbiera adresy, na które trafiają odwiedzający; przy każdym wierszu jest przycisk „Add redirect”, który otwiera formularz z wypełnionym adresem źródłowym.
  • Jedno narzędzie: przy aktywnej wtyczce Redirection wyłącz moduł Redirections w Rank Math (Rank Math SEO → Dashboard → Modules), inaczej dwie reguły dla jednego adresu wchodzą sobie w drogę.

Cache czyścisz przed testem tak samo jak przy Rank Math.

Kiedy przekierowanie wpisać w .htaccess?

Plik .htaccess wybierasz, gdy przekierowujesz setki adresów według jednego wzorca, zmieniasz domenę albo chcesz, żeby przekierowania działały niezależnie od wtyczek. To plik konfiguracyjny serwera Apache w katalogu głównym WordPressa (obok wp-config.php); serwer LiteSpeed czyta ten sam format, Nginx go ignoruje. Reguły z .htaccess wykonują się przed uruchomieniem WordPressa, więc działają nawet przy wyłączonych wtyczkach.

Przed edycją pobierasz kopię pliku. Edytujesz go przez FTP, menedżer plików w panelu hostingu albo w Rank Math SEO → General Settings → Edit .htaccess. Własne reguły wpisujesz nad blokiem # BEGIN WordPress, bo zawartość między # BEGIN WordPress a # END WordPress system nadpisuje przy zapisie ustawień bezpośrednich odnośników.

Przekierowanie 301 jednego adresu (moduł mod_alias):

Redirect 301 /stary-adres/ https://roseo.com.pl/nowy-adres/

Kod 410 dla adresu usuniętego na stałe, bez adresu docelowego:

Redirect gone /wycofany-produkt/

Ten sam efekt w mod_rewrite daje flaga [G] (Gone): RewriteRule ^wycofany-produkt/?$ - [G] pod linią RewriteEngine On.

Cała grupa adresów według wzorca, np. przeniesienie katalogu /produkty/ do /sklep/ z zachowaniem końcówki adresu:

RedirectMatch 301 ^/produkty/(.*)$ https://roseo.com.pl/sklep/$1

Ryzyko: jedna literówka w .htaccess (brak cudzysłowu, nieznana dyrektywa) wyłącza całą stronę, która zamiast treści zwraca kod 500. Wystarczy wtedy przywrócić kopię pliku przez FTP i strona wraca od razu. Pojedyncze przekierowania wygodniej dodawać z panelu w Rank Math lub Redirection, a .htaccess zostawić na migracje.

Nie chcesz edytować .htaccess na żywej stronie?

Napisz do nas: przejrzymy raport Search Console, ustawimy przekierowania w ramach pozycjonowania i sprawdzimy kody odpowiedzi.

Napisz do nas

Jak sprawdzić, czy błąd 404 został naprawiony?

Sprawdzasz kod, jakim serwer odpowiada na stary adres, nie wygląd strony. Polecenie curl -I w terminalu pokazuje pierwszą linię odpowiedzi i nagłówek location z nowym adresem:

curl -I https://roseo.com.pl/stary-adres/
HTTP/2 301
location: https://roseo.com.pl/nowy-adres/

Dla adresu usuniętego na stałe pierwsza linia to HTTP/2 410. Ten sam wynik pokazuje zakładka Network (Sieć) w narzędziach deweloperskich Chrome (F12) w kolumnie Status.

  • Nadal 404: najczęściej winny jest cache. Wyczyść go w panelu wtyczki i sprawdź adres w oknie prywatnym przeglądarki; nagłówek x-litespeed-cache: hit oznacza, że odpowiedź przyszła z cache’u, nie z WordPressa.
  • Adres docelowy: uruchom curl -I także dla nowego adresu. Powinien zwracać HTTP/2 200, nie kolejne 301. Ciąg A → B → C to łańcuch przekierowań; Googlebot przerywa go po kilku skokach, co opisujemy przy budżecie indeksowania.
  • Google Search Console: narzędzie Sprawdzenie adresu URL → „Testuj wersję opublikowaną” pokazuje kod, jaki robot widzi teraz. Potem w raporcie Strony → „Nie znaleziono (404)” kliknij „Sprawdź poprawkę”; Google ponownie pobiera adresy z listy, a takie sprawdzanie trwa zwykle do dwóch tygodni.
  • Linki wewnętrzne: po ustawieniu reguły popraw linki w menu i treści, które prowadziły do starego adresu, żeby użytkownik i robot trafiali na nowy adres bez przekierowania.

Jakie pojęcia wiążą się z naprawą błędu 404?

  • Przekierowanie 301: stała zmiana adresu, która przenosi użytkownika i sygnały rankingowe na nowy adres; definicja we wpisie Co to jest przekierowanie 301?
  • 410 Gone: kod dla treści usuniętej celowo i na stałe; Google usuwa taki adres z indeksu zwykle szybciej niż adres z 404.
  • Soft 404: adres, który zwraca kod 200, ale pokazuje stronę bez treści albo przekierowuje „na siłę” na stronę główną, więc Google traktuje go jak błąd.
  • Budżet indeksowania (crawl budget): liczba adresów, które robot pobiera z witryny w danym czasie; łańcuchy przekierowań i linki do 404 zużywają go bez efektu (Co to jest crawl budget?).
  • Raport „Strony” w Google Search Console: lista adresów z podziałem na przyczyny braku indeksacji, w tym „Nie znaleziono (404)”, z przyciskiem „Sprawdź poprawkę”.
  • 404 Monitor: moduł Rank Math, który loguje wejścia na nieistniejące adresy i pozwala dodać przekierowanie z poziomu logu.
  • Własna strona 404: strona błędu z menu, wyszukiwarką i kontaktem, którą widzi użytkownik po wejściu na nieistniejący adres; nie naprawia błędnych adresów, tylko zatrzymuje w serwisie osobę, która już na taki adres trafiła.

Masz w Search Console listę adresów „Nie znaleziono (404)”?

Napisz do nas, wskażemy adresy z ruchem i linkami, a potem ustawimy reguły.

Napisz do nas

FAQ

Tak. W Rank Math w polu Source URLs zmieniasz dopasowanie z „Exact” na „Regex”, we wtyczce Redirection zaznaczasz opcję „Regex” przy regule, a w .htaccess używasz RedirectMatch z wyrażeniem regularnym, jak w przykładzie z /produkty/ wyżej. Po zapisaniu uruchom curl -I na trzech różnych adresach z grupy, bo zbyt szeroki wzorzec przekierowuje także adresy, które miały zostać bez zmian.

Google po kilku nieudanych próbach pobrania usuwa adres z indeksu, a sam kod 404 nie obniża pozycji pozostałych stron witryny. Tracisz jednak ruch i moc linków, które prowadziły do tego adresu, a reklama Google Ads z takim adresem docelowym zostaje odrzucona.

Pojedyncze przekierowanie dodaje jedno żądanie HTTP, zwykle poniżej 100 ms, czego użytkownik nie zauważa. Spowalniają dopiero łańcuchy przekierowań (A → B → C) i pliki .htaccess z tysiącami reguł, bo serwer czyta ten plik przy każdym żądaniu; w takim przypadku reguły według wzorca (RedirectMatch) zastępują setki pojedynczych linii.

Google widzi nowy kod przy kolejnej wizycie robota na tym adresie, czyli po kilku dniach albo po kilku tygodniach, zależnie od tego, jak często robot zagląda na daną stronę. Przycisk „Sprawdź poprawkę” w raporcie Strony i „Poproś o zindeksowanie” dla adresu docelowego w narzędziu Sprawdzenie adresu URL przyspieszają ponowne pobranie.

Google w dokumentacji o przenoszeniu witryny zaleca, żeby przekierowania działały tak długo, jak to możliwe, i co najmniej rok. W praktyce reguła zostaje na stałe, dopóki istnieją linki zewnętrzne do starego adresu; po jej usunięciu adres znów zwraca 404 i wraca do raportu w Search Console.

Źródła

Przewijanie do góry