Problém s falešnou chybou 404 na WordPress

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:

<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:

{"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í:

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 :)

Share Button
(0)(0)

Jak bude reklama vypadat?
-
Kup si reklamu navždy pod tímto článkem jen za 100 Kč
Zobrazit formulář pro nákup

Další články k tématu

3 komentáře

  1. Martin napsal:

    Vyprdnout se na to. Viz https://plus.google.com/+JohnMueller/posts/RMjFPCSs5fm bod 3) a 1)

    Zmáčknout "Mark as fixed" a zapomenout.

    (0)
    • admin napsal:

      Díky za odkaz. Jsem ale vůči úplné neškodnosti skeptický. Dávněji jsem udělal jeden test a nárůst skutečných 404 vedl k snížení návštěvnosti z Google. I když to bylo zřejmě ještě před napsáním příspěvku. Tak nevím jak je to teď. Vycházím spíše z předpokladu, že rozbitý web nepřináší návštěvníkovi dobrý uživatelský dojem, o který Google tak jde. Falešných 404 se to však týkat nebude.

      (0)
  2. Bohumil Jahoda napsal:

    > Google nějak toto považoval za skutečný odkaz.
    On Google vůbec nepotřebuje, aby na URL vedl skutečný odkaz. Snaží se zkrátka z kódu vytáhnout všechno, co vypadá trochu jako URL. Už se mi takhle stalo, že chodil na adresu z JS funkce pro AJAX, která byla navíc zakomentovaná :-)

    (0)