404 na podstronach WordPressa po migracji lub aktualizacji — jak szybko przywrócić permalinki

Strona główna działa, ale wszystkie podstrony zwracają 404? To klasyczny problem z permalinkami w WordPress. Pokazuję 5 szybkich sposobów naprawy — od odświeżenia struktury URL-i po ręczne wygenerowanie .htaccess.

Scenariusz, który zna każdy, kto kiedykolwiek przenosił WordPressa albo przestawiał go z HTTP na HTTPS: strona główna działa idealnie, ale kliknięcie w jakikolwiek wpis, podstronę lub kategorię zwraca surowy komunikat „404 Not Found”. Treść jest w bazie, pliki są na miejscu, a jednak WordPress upiera się, że niczego nie ma.

Dobra wiadomość: to jeden z najprostszych błędów do naprawienia. Cała operacja sprowadza się do przebudowania struktury permalinków — co można zrobić na pięć różnych sposobów, w zależności od tego, czy masz dostęp do panelu administracyjnego, do FTP, do SSH, czy tylko do bazy. W tym poradniku przechodzę przez wszystkie z nich.

Dlaczego podstrony WordPressa wyrzucają 404?

Żeby naprawić problem, warto wiedzieć, co się naprawdę dzieje. WordPress nie przechowuje Twoich URL-i jako fizycznych plików na serwerze. Adres typu twojadomena.pl/kategoria/tytul-wpisu nie odpowiada żadnemu plikowi w systemie plików — to Apache (lub Nginx) decyduje, że takie żądanie ma trafić do index.php WordPressa, który dopiero odczyta parametry z URL-a i zwróci odpowiednią treść.

Za to przekierowanie odpowiada plik .htaccess (na Apache) lub odpowiadająca mu konfiguracja w bloku location (na Nginx). Gdy coś pójdzie nie tak z tym plikiem — zniknie, straci uprawnienia, ma złą zawartość, serwer nie ma włączonego mod_rewrite — WordPress nagle nie umie obsłużyć żadnego URL-a poza stroną główną. I wtedy widzisz setki 404.

Metoda 1. Reset permalinków w panelu administracyjnym (najprostsze)

W 80% przypadków wystarczy ten jeden ruch. Jeżeli dostajesz się do /wp-admin (czyli sam panel działa, a tylko frontend ma 404), zrób tak:

  1. Zaloguj się do WordPressa.
  2. Przejdź do Ustawienia → Bezpośrednie odnośniki (po angielsku: Settings → Permalinks).
  3. Nic nie zmieniaj — po prostu przewiń na dół strony.
  4. Kliknij „Zapisz zmiany”.

To jedno kliknięcie powoduje, że WordPress przebudowuje regulamin przepisywania URL-i i aktualizuje plik .htaccess (o ile ma do niego uprawnienia zapisu). W większości przypadków po odświeżeniu strony permalinki działają normalnie.

Co zrobić, jeśli reset nie pomógł?

Dwie najczęstsze przyczyny:

  • WordPress nie ma uprawnień zapisu do .htaccess — na dole strony „Bezpośrednie odnośniki” pojawi się wtedy komunikat „Jeżeli Twój plik .htaccess jest zapisywalny, WP mógłby go edytować…” z przykładowym kodem. Skopiuj ten kod ręcznie do pliku.
  • Serwer nie ma włączonego mod_rewrite — o tym za chwilę.

Metoda 2. Ręczna edycja pliku .htaccess

Jeżeli reset w panelu nie działa albo nie masz dostępu do panelu, wgraj .htaccess ręcznie.

Krok 1. Znajdź lub utwórz plik .htaccess

Zaloguj się przez FTP lub menedżer plików w panelu hostingu i wejdź do katalogu głównego WordPressa (tam, gdzie leży wp-config.php). Włącz widoczność plików ukrytych — plik zaczyna się od kropki, więc bez tego go nie zobaczysz.

Jeżeli plik istnieje — zrób jego kopię na wszelki wypadek i otwórz do edycji. Jeżeli nie istnieje — utwórz nowy plik o nazwie .htaccess (ważne: bez żadnego rozszerzenia!).

Krok 2. Wklej standardową konfigurację WordPressa

W pusty plik (lub na samym początku istniejącego, przed innymi regułami) wklej:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

Zapisz plik i odśwież stronę. To dokładnie ta sama zawartość, którą WordPress sam wgrywa przy resetowaniu permalinków. Jeżeli Twoja strona siedzi w podkatalogu (np. /blog), zmień RewriteBase / na RewriteBase /blog/.

Krok 3. Sprawdź uprawnienia do pliku

Plik .htaccess powinien mieć uprawnienia 644. W FileZilli klikasz prawym przyciskiem i „Uprawnienia pliku”, wpisujesz 644, potwierdzasz. Za niskie uprawnienia (np. 600) mogą spowodować, że serwer nie odczyta pliku.

Metoda 3. Sprawdzenie, czy mod_rewrite jest włączony

Jeżeli masz idealny .htaccess, a strona nadal zwraca 404, problem może leżeć głębiej — po stronie konfiguracji serwera Apache. WordPress korzysta z modułu mod_rewrite, który musi być włączony. Na 95% hostingów współdzielonych jest włączony domyślnie, ale zdarzają się wyjątki (zwłaszcza przy świeżych VPS-ach).

Szybki test

Utwórz w katalogu głównym plik phpinfo.php z zawartością:

<?php phpinfo(); ?>

Wejdź pod twojadomena.pl/phpinfo.php i w polu „Loaded Modules” szukaj mod_rewrite. Jeśli go nie ma — musisz zadzwonić do hostingu i poprosić o włączenie. Po teście natychmiast usuń plik phpinfo.php, bo ujawnia zbyt wiele informacji o konfiguracji serwera publicznie.

Na własnym VPS

Jeżeli prowadzisz serwer sam, włącz mod_rewrite jednym poleceniem:

sudo a2enmod rewrite
sudo systemctl restart apache2

Dodatkowo w konfiguracji VirtualHost dla Twojej strony (zwykle /etc/apache2/sites-available/twojadomena.pl.conf) upewnij się, że jest wpis AllowOverride All — bez niego Apache ignoruje .htaccess.

Metoda 4. Nginx — inna konfiguracja

Jeżeli Twój serwer to Nginx, nie ma .htaccess i żadna edycja plików w katalogu WordPressa nie pomoże. Konfigurację przepisywania URL-i trzeba dodać bezpośrednio do pliku konfiguracji serwera (/etc/nginx/sites-available/twojadomena.pl). W bloku server dodaj:

location / {
    try_files $uri $uri/ /index.php?$args;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}

Zapisz plik i zrestartuj Nginx:

sudo nginx -t
sudo systemctl reload nginx

Pierwsze polecenie sprawdza poprawność składni (robisz to zawsze — błąd konfiguracji w Nginx położy cały serwer), drugie przeładowuje konfigurację.

Metoda 5. Zmiana struktury permalinków przez bazę danych

Ostatnia deska ratunku, gdy żadna z powyższych metod nie działa. Zaloguj się do phpMyAdmin, wybierz bazę WordPressa i otwórz tabelę wp_options. Szukaj rekordu z option_name = permalink_structure i sprawdź jego wartość.

Jeżeli chcesz tymczasowo wrócić do tzw. „brzydkich” URL-i (typu ?p=123), które nie wymagają .htaccess, ustaw wartość permalink_structure na pustą. WordPress zacznie używać domyślnych linków i podstrony znów się otworzą — nie będą eleganckie, ale przynajmniej zadziałają. Potem wracasz do panelu i w „Bezpośrednich odnośnikach” ustawiasz docelową strukturę.

Co sprawdzić po naprawie?

Po przywróceniu permalinków zrób szybki audyt, żeby mieć pewność, że wszystko działa:

  • ✅ Otwórz 10 losowych wpisów — każdy powinien się ładować bez 404.
  • ✅ Otwórz strony kategorii (np. /kategoria/seo/) — one też używają rewrite.
  • ✅ Otwórz strony tagów i archiwum autorów.
  • ✅ Sprawdź wyszukiwarkę (?s=test) — czy zwraca wyniki.
  • ✅ Sprawdź sitemap XML (/sitemap.xml lub /sitemap_index.xml, jeśli używasz Yoast lub Rank Math) — powinna być dostępna.
  • ✅ Wejdź do Google Search Console → Stan indeksowania za 48–72 godziny i sprawdź, czy błędy 404 zniknęły z raportu.

Jak zapobiec 404 w przyszłości?

Kilka nawyków, które zmniejszają szansę na ponowne wystąpienie problemu:

  • Zawsze rób backup .htaccess przed większymi zmianami w konfiguracji.
  • Po migracji sprawdzaj permalinki jako pierwsze — to najczęstsze źródło 404 po przenosinach.
  • Używaj jednej struktury permalinków od początku — raz ustawiona i nie zmieniana chroni przed przypadkowymi błędami.
  • Monitoruj Search Console — raport „Stan indeksowania” pokaże 404 szybciej niż jakiekolwiek inne narzędzie.
  • Po każdej aktualizacji wtyczek SEO (Yoast, Rank Math) wchodź do „Bezpośrednich odnośników” i klikaj „Zapisz zmiany” — niektóre wtyczki dopisują swoje reguły do .htaccess i warto się upewnić, że nic się nie popsuło.

Najczęściej zadawane pytania

Dlaczego strona główna działa, a wpisy dają 404?

Bo strona główna WordPressa jest serwowana przez plik index.php bezpośrednio — nie wymaga przepisywania URL. Dopiero podstrony (wpisy, kategorie, tagi, strony) używają URL typu /kategoria/tytul, który musi być przepisany przez .htaccess. Gdy reguły rewrite nie działają, widzisz ten klasyczny objaw: home działa, reszta 404.

Czy 404 po migracji szkodzi SEO?

Jeżeli 404 trwa krótko (do kilku godzin), nie zrobi znaczącej krzywdy. Googlebot odwiedza popularne strony wielokrotnie w ciągu doby, więc jeden nieudany crawl nie zmienia nic. Dłużej utrzymujący się stan (24+ godziny, masowe 404) zaczyna wpływać na indeksację — Google może tymczasowo usunąć część adresów z indeksu. Dlatego priorytet: naprawiać natychmiast po wykryciu.

Czy muszę znać Apache/Nginx, żeby naprawić permalinki?

Nie. Dla większości przypadków wystarczy wejść do panelu WordPressa i kliknąć „Zapisz zmiany” w Ustawieniach → Bezpośrednich odnośnikach. Zaawansowane metody z ręczną edycją .htaccess i konfiguracją Nginx są potrzebne tylko wtedy, gdy prowadzisz stronę na VPS-ie albo masz niestandardową konfigurację.

Co jeśli mam problem tylko z niektórymi podstronami, nie wszystkimi?

To już nie jest klasyczny problem z permalinkami — to prawdopodobnie konflikt z inną wtyczką (często wtyczki cache, WooCommerce, BuddyPress) albo błędne przekierowania. Sprawdź wtyczkę Redirection (jeśli używasz), plik .htaccess pod kątem niestandardowych reguł, oraz logi wtyczek. W takich przypadkach pomocne jest też tymczasowe wyłączenie wtyczek po kolei, aż znajdziesz winowajcę.

Podsumowanie

404 na podstronach WordPressa to najczęściej problem z permalinkami — i w 8 na 10 przypadków wystarczy jedno kliknięcie w Ustawieniach → Bezpośrednich odnośnikach, żeby wszystko wróciło do normy. Gdy to nie działa, zaglądasz do .htaccess, upewniasz się, że ma właściwą zawartość i uprawnienia, a dopiero w ostateczności ingerujesz w konfigurację serwera lub bazę danych.

Jeżeli 404 pojawił się zaraz po migracji — najpewniej brakuje Ci .htaccess w nowym katalogu WordPressa albo zapomniałeś o niewidocznym pliku podczas kopiowania. Pełna instrukcja migracji, która tego unika, znajduje się w poradniku Jak przenieść WordPress na inny serwer bez utraty danych.

Picture of Tomasz Zieliński
Tomasz Zieliński

Tomasz zajmuje się tematyką SEO, sztucznej inteligencji i automatyzacji pracy w marketingu internetowym. W swoich artykułach analizuje zmiany w algorytmach wyszukiwarek, rozwój narzędzi AI oraz nowe sposoby tworzenia i optymalizacji treści. Interesuje go przede wszystkim to, jak technologia wpływa na codzienną pracę specjalistów SEO, marketerów i twórców internetowych.

Facebook
Twitter
LinkedIn
Pinterest

Najnowsze Wpisy

Śledź nas