WordPress 7.1 může vracet 404 u XML sitemap, i když se v prohlížeči zobrazí správně

[gtranslate]

V posledních dnech jsme se setkali s několika případy, kdy Google Search Console odmítal WordPress sitemap s chybou HTTP 404, přestože se adresa /wp-sitemap.xml v běžném prohlížeči zobrazovala zdánlivě správně.

Při podrobnějším ověření se ukázalo, že nejde o problém WEDOS Global Protection, CDN cache webhostingu, ani Googlebota, který na to naše zákazníky upozornil.

HTTP/1.1 404 Not Found
Content-Type: application/xml

V těle odpovědi přitom WordPress poslal zcela validní XML sitemap, takže v prohlížeči na první pohled vše vypadalo že je v pořádku.

Proč sitemap v prohlížeči funguje, ale Google ji odmítne?

Webový prohlížeč dokáže XML obsah zobrazit bez ohledu na to, že server současně v HTTP hlavičce vrací stav 404 Not Found. Na první pohled proto vše vypadá v pořádku.

Google Search Console však HTTP stav správně kontroluje. Sitemap musí být dostupná s úspěšným stavem, typicky:

HTTP 200 OK

Pokud server vrátí 404, Google sitemap nepoužije, i když její XML obsah je jinak správný.

Stav lze jednoduše ověřit například pomocí:

curl -vk -A "Mozilla/5.0 sitemap-test" https://example.cz/wp-sitemap.xml

Jde o známou chybu WordPressu 7.1

WordPress Core má problém evidovaný jako #65945 – Native sitemap is served with a 404 status on sites with no published posts.

Chyba se týká WordPressu 7.1 a projevuje se zejména na webech, které nemají žádný publikovaný příspěvek standardního typu post. Web přitom může obsahovat libovolné množství stránek (page) a sitemap se obsahově vygeneruje správně. Na čisté instalaci bez pluginů bylo potvrzeno, že při nulovém počtu publikovaných příspěvků dostane /wp-sitemap.xml stav 404, zatímco publikování jediného příspěvku způsobí návrat 200 OK. (WordPress Trac)

Technicky WordPress během zpracování požadavku nastaví stav 404 ještě před tím, než komponenta pro sitemap vygeneruje XML. Výsledkem je tedy neobvyklá kombinace:

HTTP 404
+
validní XML sitemap

Jak problém vyřešit?

Doporučeným řešením je aktualizace na WordPress 7.1.1, kde je oprava tohoto problému již zahrnuta. WordPress 7.1.1 RC1 opravu obsahuje a finální vydání je aktuálně plánováno na 17. září 2026, pokud během testování nebude nalezen další problém. (Make WordPress)

Do vydání aktualizace lze problém dočasně obejít například publikováním alespoň jednoho běžného WordPress příspěvku. Oficiální ticket uvádí také PHP workaround přes filtr pre_handle_404, ten však doporučujeme používat pouze jako dočasné řešení a po aktualizaci WordPressu jej odstranit. (WordPress Trac)

Po aktualizaci doporučujeme znovu ověřit /wp-sitemap.xml. Správný výsledek musí obsahovat:

HTTP 200 OK

Pokud tedy Google Search Console po aktualizaci na WordPress 7.1 hlásí u nativní sitemap chybu 404, přestože se sitemap v prohlížeči normálně zobrazuje, nemusí jít o problém hostingu, CDN ani bezpečnostní ochrany. V současnosti jde o známou chybu WordPress Core, jejíž oprava je připravena pro WordPress 7.1.1.


Warning: realpath(): open_basedir restriction in effect. File(/data/web/virtuals) is not within the allowed path(s): (/data/web/virtuals/201674/virtual) in /data/web/virtuals/201674/virtual/www/wp-includes/l10n/class-wp-translation-controller.php on line 106