Sitemapa hlási v Search Console chybu, hoci existuje
Do Google Search Console pridáte sitemapu, počkáte deň – a namiesto „Úspešné" tam svieti chyba. Otvoríte si adresu v prehliadači a sitemapa sa načíta úplne normálne. Kde je problém?
Vo väčšine prípadov v mieste, kam sa nikto nepozerá: v stavovom kóde odpovede.
Google nečíta len obsah, pozerá aj na stav
Každá odpoveď servera má okrem tela aj stavový kód. 200 znamená „nech sa páči",
404 „také nič tu nemám". Prehliadač je zhovievavý – keď dostane telo, zobrazí ho a stav
vás netrápi. Vyhľadávač zhovievavý nie je. Keď pri sitemape uvidí 404, odmietne ju
bez ohľadu na to, že je vnútri dokonalé XML.
Presne preto vzniká ten mätúci rozpor: v prehliadači to vyzerá v poriadku, v Search Console je chyba. Sú to dva rôzne pohľady na tú istú odpoveď.
Ako si to overíte
Potrebujete vidieť stav, nie obsah. Najrýchlejšie v termináli:
curl -sI https://vasadomena.sk/sitemap.xml | head -1
Ak sa vráti HTTP/1.1 200 OK, je to v poriadku. Ak 404 alebo 500,
máte príčinu. Rovnaké meranie robí aj naša bezplatná kontrola webu – sitemapu posudzuje
podľa stavu aj obsahu, takže tento prípad rozozná.
Najčastejšia príčina na WordPresse
Tu prichádza to prekvapivé. Keď má web statickú titulnú stránku (nie výpis článkov), WordPress pri dopyte na sitemapu vyhodnotí, že hlavný dotaz nevrátil žiadne príspevky, a označí požiadavku za „nenájdenú". Až potom vypíše XML sitemapy. Výsledok: telo je správne, stav je 404.
A teraz to podstatné: rada, ktorú na tento problém nájdete najčastejšie – „preuložte trvalé odkazy" – v tomto prípade nepomôže. Prepisovacie pravidlá sú totiž úplne v poriadku, sitemapy fungujú, chyba je inde. Preuloženie permalinkov rieši iný prípad (viď nižšie), nie tento.
Nie je to okrajová kuriozita. Na weboch, o ktoré sa staráme, sme to nedávno našli na troch z dvanástich – a všetky tri mali sitemapu v Search Console mesiace „s chybou".
Ako to opraviť
Stačí WordPressu povedať, aby pri dopyte na sitemapu preskočil označenie 404:
add_filter('pre_handle_404', function ($preempt, $wp_query) {
if (!$wp_query instanceof WP_Query) { return $preempt; }
$a = $wp_query->get('sitemap');
$b = $wp_query->get('sitemap-stylesheet');
if (($a !== '' && $a !== null) || ($b !== '' && $b !== null)) {
return true;
}
return $preempt;
}, 10, 2);
Filter je zúžený výhradne na dopyty na sitemapu, takže bežné 404-ky na webe fungujú ďalej.
Odporúčame ho nasadiť ako mu-plugin (súbor v wp-content/mu-plugins/),
nie do functions.php – prežije zmenu aj aktualizáciu témy a vypnutie je otázka zmazania
jedného súboru.
Keď to nie je tento prípad
Podľa toho, čo server vráti, sa dajú rozlíšiť tri situácie:
- Platné XML + stav 404 – prípad popísaný vyššie, rieši ho filter.
- Prázdne telo alebo HTML stránka + 404 – sitemapa sa negeneruje. Tu už áno: preuložte trvalé odkazy (Nastavenia → Trvalé odkazy → Uložiť), prípadne skontrolujte SEO plugin, ktorý sitemapu preberá.
- Stav 500 – chyba pri generovaní, hľadajte v logu; býva to konflikt pluginov.
Pozor ešte na jednu drobnosť: /sitemap.xml často presmeruje na
/wp-sitemap.xml. Ak testujete nástrojom, ktorý presmerovanie nesleduje, dostanete
zavádzajúci výsledok.
Po oprave
Skontrolujte, že adresa vracia 200, a v Search Console sitemapu odošlite znova –
Google ju sám preverí až pri ďalšom obchôdzke, odoslaním to urýchlite. Chyba by mala zmiznúť
do niekoľkých dní.
Prečo to nikto nevšimne
Lebo na to nie je dôvod. Web funguje, stránky sa načítavajú, v prehliadači je sitemapa v poriadku. Jediné miesto, kde sa to prejaví, je hlásenie v Search Console – a to si väčšina ľudí otvorí raz za pol roka. Presne na takéto ticho zlé veci je dobré mať priebežný dohľad: nájde ich skôr, než vás začnú stáť návštevnosť.
Chcete vedieť, ako je na tom vaša sitemapa? Skontrolujte si web zadarmo – uvidíte to spolu s bezpečnosťou, rýchlosťou a ďalším overením zdravia webu.