Včera mi přišel z Google email, že na jednom mém starším webu jedoucím na WordPress se vyskytuje velké množství "falešných" chyb 404. Dost mě to překvapilo, protože poslední příspěvek je z 3.10.2012. Tedy 3,5 roku starý. Od té doby se na webu obsah neměnil. Jen jsem pravidelně aktualizoval pluginy a samozřejmě jádro WordPress. Takže buď se něco děje u Google anebo se něco rozbilo. Vůbec jsem si slovíčko "falešný" nevšiml. Samozřejmě jsem si nejdříve myslel, že se něco rozbilo (.htaccess, cache). Vše jsem cvičně proklikal a vypadalo to v pořádku. Přihlásil se do Google Console, abych zjistil více informací. Teprve tady jsem uviděl podivné slovní spojení "Falešné 404" a zjisti, že odteď už není 404 jako 404 :)
Je rozdíl mezi chybou 404 a falešnou chybou 404.
Je rozdíl mezi chybou 404 a falešnou chybou 404.

V čem byl technický problém

Soubor admin-ajax.php ve WordPress má na starosti komunikaci mezi prohlížečem a serverem. Prostě předávání informací v reálném čase. Díky tomu může provozovatel sledovat co uživatel dělá a za určitých okolností na to reagovat. Toho využívají různé pluginy. V tomto konkrétním případě za to mohl plugin Flare, který slouží k zobrazování tlačítek pro sociální sítě, který volal zřejmě po aktuálním počtu sdílení. Zajímavé bylo, že se javascript nacházel na konci stránky (těsně před body, za posledním div) a Google jej považuje za odkaz. Schválně koukněte:
TEXT
<script type="text/javascript">
 var __flare_count_url = "http://domena.tld/wp-admin/admin-ajax.php?action=flare_get_counts&url=http%3A%2F%2Fdomena.tld%...&post_id=815&_wpnonce=ff4c3884fa";
</script>
...
</body>
</html>
Google nějak toto považoval za skutečný odkaz. Samozřejmě pokud se na URL podíval tak dostal jen výstup:
TEXT
{"twitter":0,"facebook":0,"googleplus":0}
Pro Ajax nic dalšího nepotřebujete.

Co s tím?

Takže teď když už víme odkud vítr vane je otázkou jak to řešit. Základní nastavení robots.txt u WordPress je následující:
TEXT
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
Přiznám se, že netuším proč se robotům povoluje přístup na /wp-admin/admin-ajax.php, kde se žádný obsah nenachází. Právě naopak takto mohou vznikat tyto falešné chyby 404. Rozhodl jsem se manuálně řádek s povolením odstranit. Tak uvidíme jestli to pomůže. Pokud ne tak leda upravit nějak plugin anebo jej nahradit jiným.

Závěr

Dozvěděl jsem se, že existuje něco jako falešné chyby 404 a také, že Google dokáže z javascriptu, kde se proměnné přiřazuje URL udělat odkaz :)