WordPress 404 na všech stránkách kromě úvodní po stěhování: Apache, Nginx a co zkontrolovat
Když po stěhování WordPressu funguje jen úvodní stránka a každá jiná ukazuje 404, obsah je obvykle v pořádku. Chybí pravidla, která hezkou adresu přeloží na správný příspěvek. Na Apache a LiteSpeed to obstarává soubor .htaccess, na Nginx konfigurace serveru. Začněte opětovným uložením trvalých odkazů, pak zkontrolujte server.
Autor: Tým TellMyShop. Průvodce pro majitele webů na WordPressu a obchodů na WooCommerce: příčina, ruční oprava a stejná práce v rozhovoru v chatu.
Naposledy aktualizováno: · 6 min čtení
Jak poznáte, že jde o tento problém, a ne o běžnou 404
Tento článek popisuje jednu konkrétní situaci: všechny stránky najednou přestaly fungovat, nejčastěji hned po přesunu webu k jinému hostingu, změně domény nebo obnovení zálohy. Jednotlivé adresy s chybou, například po smazání příspěvku nebo změně trvalého odkazu jedné stránky, jsou jiný problém. Popisujeme ho v návodu k chybě 404 ve WordPressu.
Příznaky, které odpovídají stěhování:
| Příznak | Co to pravděpodobně znamená |
|---|---|
| Úvodní stránka funguje, příspěvky, stránky a kategorie dávají 404 | na serveru chybí pravidla pro přepis adres |
| Nástěnka /wp-admin funguje normálně | WordPress i databáze jsou v pořádku |
| Adresa s /index.php/ uprostřed příspěvek otevře | WordPress funguje, server mu hezké adresy nepředává |
| Hláška 404 vypadá jinak než stránka 404 šablony | chybu vrací sám server, ještě než požadavek dostane WordPress |
| Odkazy vedou na starou doménu nebo testovací adresu | v nastavení webu je pořád stará adresa |
Poslední řádek se vyplatí zkontrolovat zvlášť. Pokud menu a odkazy vedou na starou adresu, problém je v nastavení webu, ne v pravidlech serveru.
Záchranný postup krok za krokem
Kroky vedou od nejjednoduššího po ten, který necháte hostingu. Po každém zkontrolujte jeden příspěvek a jednu stránku v anonymním okně prohlížeče.
- Znovu uložte trvalé odkazy. Přejděte do Nastavení, Trvalé odkazy a klikněte na Uložit změny, aniž byste cokoli měnili. WordPress znovu sestaví pravidla pro adresy a pokusí se je zapsat do .htaccess. Obrazovku popisuje dokumentace k nastavení trvalých odkazů.
- Přečtěte si hlášku po uložení. Pokud WordPress ukáže pole s pravidly k ručnímu vložení, soubor zapsat nedokázal. Zkopírujte tato pravidla pro hosting, nebo je sami vložte ve správci souborů.
- Zkontrolujte adresu webu. V Nastavení, Obecné musí pole Adresa WordPressu a Adresa webu obsahovat novou doménu a správný začátek (https nebo http, s www nebo bez). Pokud jsou tam staré adresy, neopravujte je naslepo, protože můžete ztratit přístup do Nástěnky. Raději se zeptejte toho, kdo se o web stará.
- Zjistěte, na jakém serveru web běží. Apache nebo LiteSpeed: pokračujte krokem 5. Nginx: krok 6.
- Apache a LiteSpeed: podívejte se na .htaccess. Ve správci souborů hostingu, ve složce webu, zapněte zobrazení skrytých souborů. Název souboru začíná tečkou a při kopírování přes FTP často prostě zůstane na starém serveru. Měl by obsahovat blok mezi řádky „# BEGIN WordPress“ a „# END WordPress“.
- Nginx: požádejte hosting o pravidlo pro WordPress. Nginx .htaccess nečte a WordPress pravidla sám nepřidá. Napište hostingu, že potřebujete konfiguraci, která neexistující adresy předává do index.php.
- Vymažte cache. Cache plugin nebo cache hostingu může ještě chvíli ukazovat staré 404, i když pravidla už fungují.
Apache, nebo Nginx: kdo co opraví
Rozdíl mezi servery rozhoduje, jestli si poradíte sami, nebo musíte napsat hostingu.
Apache a LiteSpeed čtou soubor .htaccess ze složky webu. Když je soubor na místě a má blok WordPressu, ale stránky dál dávají 404, server může mít vypnutý modul pro přepis adres nebo nastavení, které mu říká .htaccess ignorovat. To jsou nastavení serveru a mění je hosting, ne vy.
Nginx nemá obdobu .htaccess. Dokumentace WordPressu ke konfiguraci Nginx jasně říká, že WordPress konfiguraci tohoto serveru sám nezmění, takže bez ručního pravidla se do adres přidává index.php. Pravidlo přidá hosting nebo správce serveru. Mnoho hostingů má v panelu hotovou šablonu pro WordPress, kterou stačí zapnout.
U instalace v podsložce, například když blog sídlí pod /blog/, musí pravidla ukazovat na tuto podsložku. Je to častá past po přesunu webu z kořenové složky do podsložky nebo naopak. Stejný případ, s přesným popisem příznaku „všechno kromě úvodní stránky“, popisuje i průvodce WebNots.
Co můžete hostingu dát v jednom e-mailu:
- doménu a to, že po stěhování funguje jen úvodní stránka,
- dvě příkladové adresy, které dávají 404,
- zda funguje adresa s /index.php/,
- blok WordPressu z .htaccess, nebo informaci, že soubor chybí.
Jak chat pomůže najít příčinu
Plugin TellMyShop pro WordPress a WooCommerce soubor .htaccess ani konfiguraci serveru neupravuje. Je to záměrná blokace a žádný přepínač ji nezruší. Přesto se hodí pro rychlou diagnostiku, když spojení s vaším chatem (Claude nebo ChatGPT) funguje, a pro kontrolu, že je po opravě vše zpět. Pokud se chat k webu nepřipojí, projděte záchranný postup ručně.
V bezplatné verzi TellMyShop Free chat otevře zvolené adresy jako prohlížeč a ukáže kód odpovědi a projde stav webu, záznam chyb a přehled chyb 404. Během několika minut víte, jestli se problém týká všech stránek, nebo jen některých, a co přesně předat hostingu.
Vy: Přestěhovali jsme web k novému hostingu a myslím, že se něco rozbilo. Zkontroluj stránky.
Váš chat: Zkontroloval jsem šest adres. Úvodní stránka odpovídá kódem 200. Příspěvek „Jak vybrat truhlík“, stránka Kontakt a kategorie Tipy odpovídají 404 a stejný obsah se otevře s /index.php/ v adrese.
Váš chat: Stav webu: server Nginx. Závěr: WordPress funguje, ale chybí pravidlo, které adresy předává do index.php. To z pluginu změnit nemůžu. Připravil jsem e-mail pro hosting s příkladovými adresami.
Vy: Hosting pravidlo přidal. Zkontroluj to znovu.
Váš chat: Všech šest adres odpovídá kódem 200. Přehled chyb 404 za poslední hodinu nemá nové záznamy.
Adresy a čísla v této konverzaci jsou ilustrativní. V TellMyShop Pro chat čte celý web, takže umí porovnat i adresy v menu a odkazech s novou doménou. Změna nastavení trvalých odkazů z konverzace potřebuje v Pro přepínač Šablona, který platí 24 hodin a vyžaduje dnešní zálohu databáze. Každé uložení má náhled a čeká na váš souhlas a každou změnu můžete vrátit zpět z historie. Podrobnosti jsou na stránce TellMyShop pro WordPress a WooCommerce a verze porovnáte v ceníku.
Po opravě: co zkontrolovat, aby Google nic neztratil
Když stránky zase fungují, zbývají tři věci.
První jsou adresy. Pokud se při stěhování změnila doména nebo struktura trvalých odkazů, staré adresy potřebují přesměrování 301, jinak odkazy z jiných webů a výsledky Googlu povedou do prázdna. Jak je nastavit, vysvětlujeme v návodu k přesměrování 301 ve WordPressu.
Druhá je viditelnost. Po několika dnech chyb 404 mohly některé stránky vypadnout z výsledků. Pokud se po opravě nevrátí, hledejte příčiny podle seznamu v článku web na WordPressu není v Google.
Třetí je přehled chyb 404. První dny po opravě se na něj dívejte každý den. Nové záznamy ukážou adresy, na které si nikdo nevzpomněl, třeba staré odkazy na soubory nebo kategorie, které se přejmenovaly.
Kódy odpovědí, stav webu a přehled chyb 404 zkontrolujete v bezplatné verzi TellMyShop Free. Další návody najdete na blogu.
Otázky a odpovědi
Proč po stěhování funguje jen úvodní stránka?
Úvodní stránka pravidla pro přepis adres nepotřebuje, stránky s hezkými adresami ano. Když nový server nemá soubor .htaccess, ignoruje ho, nebo běží na Nginx bez pravidla pro WordPress, každá adresa kromě úvodní stránky skončí chybou 404. Obsah v databázi je v pořádku.
Pomůže uložení trvalých odkazů vždycky?
Pomůže, když WordPress na serveru Apache umí soubor .htaccess zapsat sám. Na Nginx tento krok na serveru nic nezmění, protože Nginx .htaccess nečte. Pak pravidlo musí přidat hosting nebo ten, kdo server konfiguruje.
Jak zjistím, jestli mám Apache, nebo Nginx?
Nejjednodušší je zeptat se hostingu nebo se podívat do popisu tarifu v panelu. WordPress také ukazuje informace o serveru v Nástroje, Stav webu, na záložce Informace, v části o serveru. Hostingy s LiteSpeed obvykle čtou .htaccess stejně jako Apache.
Stránky fungují s /index.php/ v adrese. Co to znamená?
Je to znamení, že WordPress funguje, ale server mu hezké adresy nepředává. Tak často vypadá instalace na Nginx bez pravidla pro WordPress. Strukturu trvalých odkazů nepřepínejte natrvalo na tu s index.php; požádejte hosting o přidání pravidla.
Musím po opravě nastavit přesměrování?
Pokud se adresy nezměnily, ne. Google se vrátí na stejné adresy a uvidí obsah. Přesměrování jsou potřeba jen tehdy, když se při stěhování změnila doména, struktura trvalých odkazů nebo adresy některých stránek.
WordPress je ochranná známka WordPress Foundation. WooCommerce je ochranná známka společnosti Automattic Inc. Claude je ochranná známka společnosti Anthropic PBC. ChatGPT a OpenAI jsou ochranné známky společnosti OpenAI. TellMyShop s těmito společnostmi není propojen.