WordPress 404 na podstronach po przeprowadzce: Apache, Nginx i co sprawdzić po kolei

Gdy po przeprowadzce WordPressa działa tylko strona główna, a każda podstrona pokazuje 404, treść zwykle jest cała. Brakuje reguł, które tłumaczą ładny adres na właściwy wpis. Na Apache i LiteSpeed odpowiada za to plik .htaccess, na Nginx konfiguracja serwera. Zacznij od ponownego zapisania bezpośrednich odnośników, a potem sprawdź serwer.

Autor: Zespół TellMyShop. Piszemy o PrestaShop na podstawie pracy z zapleczem prawdziwych sklepów i testów na własnym sklepie testowym.
Aktualizacja: · 6 min czytania

Skąd wiesz, że to ten problem, a nie zwykłe 404

Ten artykuł dotyczy jednej konkretnej sytuacji: wszystkie podstrony nagle przestały działać, najczęściej zaraz po przeniesieniu strony na inny hosting, zmianie domeny albo odtworzeniu kopii. Pojedyncze adresy z błędem, na przykład po usunięciu wpisu albo zmianie odnośnika jednej strony, to inny problem. Opisujemy go w poradniku o błędzie 404 w WordPress.

Objawy, które pasują do przeprowadzki:

ObjawCo prawdopodobnie znaczy
Strona główna działa, wpisy, strony i kategorie dają 404brak reguł przepisywania adresów na serwerze
Kokpit /wp-admin działa normalnieWordPress i baza są w porządku
Adres z /index.php/ w środku otwiera wpisWordPress działa, serwer nie przekazuje mu ładnych adresów
Komunikat 404 wygląda inaczej niż strona 404 motywubłąd zwraca sam serwer, zanim dojdzie do WordPressa
Linki prowadzą na starą domenę albo na adres testowyw ustawieniach witryny został stary adres

Ostatni wiersz warto sprawdzić osobno. Jeśli menu i linki prowadzą na stary adres, problem leży w ustawieniach witryny, a nie w regułach serwera.

Instrukcja ratunkowa krok po kroku

Kroki idą od najprostszego do takiego, który zostawiasz hostingowi. Po każdym sprawdź w prywatnym oknie przeglądarki jeden wpis i jedną stronę.

  1. Zapisz ponownie bezpośrednie odnośniki. Wejdź w Ustawienia, Bezpośrednie odnośniki i kliknij Zapisz zmiany, niczego nie zmieniając. WordPress odbuduje reguły adresów i spróbuje zapisać je w .htaccess. Ekran opisuje dokumentacja ustawień bezpośrednich odnośników.
  2. Przeczytaj komunikat po zapisie. Jeśli WordPress pokazuje pole z regułami do ręcznego wklejenia, nie mógł zapisać pliku. Skopiuj te reguły dla hostingu albo wklej je sam w menedżerze plików.
  3. Sprawdź adres witryny. W Ustawienia, Ogólne pola Adres WordPressa i Adres witryny muszą mieć nową domenę i właściwy początek (https albo http, z www albo bez). Jeśli są tam stare adresy, nie poprawiaj ich na ślepo, bo możesz stracić dostęp do kokpitu. Lepiej poproś o to osobę od strony.
  4. Ustal, na jakim serwerze stoi strona. Apache albo LiteSpeed: dalej krok 5. Nginx: krok 6.
  5. Apache i LiteSpeed: zajrzyj do .htaccess. W menedżerze plików hostingu, w katalogu strony, włącz pokazywanie plików ukrytych. Plik zaczyna się od kropki i przy kopiowaniu przez FTP często po prostu zostaje na starym serwerze. Powinien mieć blok między liniami „# BEGIN WordPress” i „# END WordPress”.
  6. Nginx: poproś hosting o regułę dla WordPressa. Nginx nie czyta .htaccess i WordPress nie dopisze sobie reguł sam. Napisz do hostingu, że potrzebujesz konfiguracji przekazującej nieistniejące adresy do index.php.
  7. Wyczyść pamięć podręczną. Wtyczka cache albo cache hostingu potrafią jeszcze chwilę pokazywać stare 404, nawet gdy reguły już działają.

Apache czy Nginx: kto co naprawia

Różnica między serwerami decyduje, czy dasz radę sam, czy musisz napisać do hostingu.

Apache i LiteSpeed czytają plik .htaccess z katalogu strony. Gdy plik jest na miejscu i ma blok WordPressa, a podstrony dalej dają 404, serwer może mieć wyłączony moduł przepisywania adresów albo ustawienie, które każe mu ignorować .htaccess. To ustawienia serwera i zmienia je hosting, nie ty.

Nginx nie ma odpowiednika .htaccess. Dokumentacja WordPressa o konfiguracji Nginx mówi wprost, że WordPress nie zmieni konfiguracji tego serwera sam, więc bez ręcznej reguły do adresów dopisywane jest index.php. Regułę dodaje hosting albo administrator serwera. Wiele hostingów ma w panelu gotowy szablon dla WordPressa, który wystarczy włączyć.

Przy instalacji w podkatalogu, na przykład gdy blog stoi pod /blog/, reguły muszą wskazywać ten podkatalog. To częsta pułapka po przeniesieniu strony z głównego katalogu do podkatalogu albo odwrotnie. Ten sam przypadek, z dokładnym opisem objawu „wszystko poza główną”, omawia też poradnik WebNots.

Co możesz przekazać hostingowi w jednym mailu:

  • domenę i informację, że po przeniesieniu działa tylko strona główna,
  • dwa przykładowe adresy, które dają 404,
  • czy adres z /index.php/ działa,
  • treść bloku WordPressa z .htaccess albo informację, że pliku nie ma.

Jak Claude pomaga ustalić przyczynę

Wtyczka TellMyShop dla WordPress i WooCommerce nie edytuje pliku .htaccess ani konfiguracji serwera. To celowa blokada, której nie zdejmuje żaden przełącznik. Przydaje się jednak do szybkiej diagnozy, gdy połączenie z Claude działa, i do sprawdzenia, czy po naprawie wszystko wróciło. Jeśli Claude nie może połączyć się ze stroną, przejdź instrukcję ratunkową ręcznie.

W darmowej wersji TellMyShop Free Claude otwiera wybrane adresy tak jak przeglądarka i pokazuje kod odpowiedzi, przegląda kondycję witryny, dziennik błędów i raport adresów 404. Dzięki temu w kilka minut wiesz, czy problem dotyczy wszystkich podstron, czy tylko części, i co dokładnie przekazać hostingowi.

Ty

Przenieśliśmy stronę na nowy hosting i chyba coś nie działa. Sprawdź podstrony.

Claude

Sprawdziłem sześć adresów. Strona główna odpowiada kodem 200. Wpis „Jak dobrać donicę”, strona Kontakt i kategoria Porady odpowiadają kodem 404, a ta sama treść z /index.php/ w adresie się otwiera.

Claude

Kondycja witryny: serwer Nginx. Wniosek: WordPress działa, brakuje reguły przekazującej adresy do index.php. Tego nie zmienię z wtyczki. Przygotowałem treść maila do hostingu z przykładowymi adresami.

Ty

Hosting dodał regułę. Sprawdź jeszcze raz.

Claude

Wszystkie sześć adresów odpowiada kodem 200. Raport 404 z ostatniej godziny nie ma nowych wpisów.

Ilustracja: produkty, liczby i odpowiedzi są przykładowe.

Adresy i liczby w tej rozmowie są przykładowe. W TellMyShop Pro Claude czyta całą witrynę, więc może też porównać adresy z menu i linków z nową domeną. Zmiana ustawień odnośników z rozmowy wymaga w Pro przełącznika Motyw, który działa 24 godziny i wymaga dzisiejszej kopii bazy. Każdy zapis ma podgląd i czeka na twoją zgodę, a większość zmian cofniesz z historii. Szczegóły są na stronie TellMyShop dla WordPress i WooCommerce, wersje porównasz w cenniku.

Po naprawie: co sprawdzić, żeby Google nic nie zgubił

Gdy podstrony znowu działają, zostają trzy rzeczy.

Pierwsza to adresy. Jeśli przy przeprowadzce zmieniła się domena albo struktura odnośników, stare adresy potrzebują przekierowań 301, inaczej linki z zewnątrz i wyniki w Google będą prowadzić donikąd. Jak je ustawić, piszemy w poradniku o przekierowaniu 301 w WordPress.

Druga to widoczność. Po kilku dniach z 404 część stron mogła wypaść z wyników. Jeśli po naprawie nie wracają, przyczyn szukaj według listy z tekstu Strona WordPress nie wyświetla się w Google.

Trzecia to raport błędów 404. Przez pierwsze dni po naprawie zaglądaj do niego codziennie. Nowe wpisy pokażą adresy, o których nikt nie pamiętał, na przykład stare linki do plików albo kategorie, które zmieniły nazwę.

Sprawdzenie kodów odpowiedzi, kondycji witryny i raportu 404 zrobisz w darmowej wersji TellMyShop Free. Więcej poradników znajdziesz na blogu.

Pytania i odpowiedzi

Dlaczego po przeprowadzce działa tylko strona główna?

Strona główna nie potrzebuje reguł przepisywania adresów, a podstrony z ładnymi adresami tak. Gdy na nowym serwerze brakuje pliku .htaccess, serwer go ignoruje albo działa na Nginx bez reguły dla WordPressa, każdy adres poza główną kończy się błędem 404. Treść w bazie jest cała.

Czy zapisanie bezpośrednich odnośników zawsze pomaga?

Pomaga wtedy, gdy WordPress może sam zapisać plik .htaccess na serwerze Apache. Na Nginx ten krok nic nie zmienia w serwerze, bo Nginx nie czyta .htaccess. Wtedy regułę musi dodać hosting albo osoba, która konfiguruje serwer.

Jak sprawdzić, czy mam Apache czy Nginx?

Najprościej zapytać hosting albo zajrzeć do opisu pakietu w panelu. Informację o serwerze pokazuje też WordPress w Narzędzia, Zdrowie witryny, na karcie Informacje, w części o serwerze. Hostingi z LiteSpeed zwykle czytają .htaccess tak jak Apache.

Podstrony działają z /index.php/ w adresie. Co to znaczy?

To znak, że WordPress działa, ale serwer nie przekazuje mu ładnych adresów. Często tak wygląda instalacja na Nginx bez reguły dla WordPressa. Nie zmieniaj struktury odnośników na taką z index.php na stałe, tylko poproś hosting o dodanie reguły.

Czy po naprawie muszę ustawiać przekierowania?

Jeśli adresy się nie zmieniły, nie. Google wróci pod te same adresy i zobaczy treść. Przekierowania są potrzebne tylko wtedy, gdy przy przeprowadzce zmieniła się domena, struktura odnośników albo adresy części stron.

WordPress jest znakiem towarowym WordPress Foundation. WooCommerce jest znakiem towarowym Automattic Inc. Claude jest znakiem towarowym Anthropic. TellMyShop nie jest powiązany z żadnym z tych podmiotów.

TellMyShop dla WordPress i WooCommerce

Claude czyta twoją stronę, pokazuje każdą zmianę przed zapisem i zapisuje dopiero po twoim „tak”. Każdą zmianę cofniesz jednym poleceniem. Działa też z darmowym Claude.

Przeczytaj też