WordPress má v sobě kritickou chybu!

Aktualizace 22.2.2010: tato chyba byla zatím potvrzena pouze u WP + godaddy hosting. Přečtěte si pro detaily diskuzi a článek o migraci.

Před pár dny jsem psal, že mi seznam srazil srank na 50. Pravděpodobně se jednalo o nějaký výpadek hostingu, nebo lokální nedostupnost crawlera. Ovšem narazil jsem také na jednu zvláštnost. Z nějakého neznámého důvodu házela domovská stránka chybu 302.

Svádět to na hosting, nebo nějakou chybu v aktualizaci je jednoduché, jenomže tato nenápadná chyba může mít za následek problém indexování u crawlovacích robotů největších vyhledávačů. Jednak všechny zpětné odkazy většinou tlačíte na hlavní stránku, která se vyhledávačům hlásí pod chybou 302 (dočasně přesměrováno) a vyhledávač tak čeká až se vše vrátí do původních kolejí, a také wordpress přes hlavní stránku převádí nemalé množství linkjuice, které získá z odkazů na jednotlivé stránky. Prostě pokud hlavní stránka vyhledávačům hlásí 302 tak je to doslova sebevražda.

Po několika hodinách hledání na interentu jsem zjistil, že je to chybou, která se u WordPressu vyskytuje od verze 2.8.2, což je poměrně dlouhá doba a týká se blogů, které jsou směřované na verzi domény bez www. Ta totiž neexistuje i když vyhledávače čekají kdy se znovu objeví, protože jim chybová hláška 302 říká, že je jen dočasně přesměrována. Celé se to přitom dá opravit naprosto jednoduše a to tak, že místo chyby 302 bude crawlerům oznámen kód 301, tedy přesunuto permanentně, tak přestaňte čekat a jděte crawlovat.

Jak poznáte, že se problém týká právě vás? Jděte do Google Webmáster Tools. Najděte si váš blog. Klikněte na Laboratoř Google a Načíst jako googlebot. Odklikněte načíst. Chvilku počkejte a znovu klikněte na Načíst jako googlebot. Bude pro vás připravená zpráva. Tu si otevřete. Pokud na vás vyskočí něco podobného:

HTTP/1.1 302 Moved Temporarily

Content-Length: 0

Location: /?a1106cd8

Tak máte problém. Právě vám utíká většina link juice. U některých čteček se možná objevil i problém s nemožností přijmout RSS, některé prohlížeče zobrazují jen prázdnou stránku atd.

A jak to opravit?

Existuje několik řešení. Já jsem si vybral to nejjednodušší. Upravím si soubor .htaccess.

# BEGIN WordPress

RewriteEngine On

RewriteCond %{HTTP_HOST} ^www\.404m\.com [NC]

RewriteRule ^(.*)$ http://404m.com/$1 [L,R=301]

<IfModule mod_rewrite.c>

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule . /index.php [L]

</IfModule>

# END WordPress

Jak je uvedeno na příkladu stačí do kódu přidat modře označený text a místo 404m.com dát vaší URL. Jestli to funguje poznáte velice rychle pomocí zopakování testu v google webmaster tools. Pokud je odpovědí html kód vaší stránky, před kterým je něco hlavička s kódem 200 je vše přesně jak má být.

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

16 komentářů

  1. Meph napsal:

    Za článek díky!

    Mimochodem Ahyde začal zase blogovat :)

    (0)
    • admin napsal:

      Meph: už to vím nějakou dobu, ale to že bloguje pod jiným pseudonymem než dříve má asi nějaký důvod, tak to nechci zbytečně rozvádět. Články jsem popravdě ještě nečetl, na složitější anglický text musí mít člověk klid ale hlavně náladu.

      (0)
  2. paprikáš napsal:

    Neexistuje nějaký jednoduší způsob? Nějak si nedovedu představit mít každý miniweb evidovaný ve webmaster tools??

    (0)
  3. Separatista napsal:

    Pěkný titulek :-) Moc se mi to ale nezdá... Ve WordPressu 2.8.2 se neměnilo skoro nic (byla to bezpečnostní verze, oprava XSS) a nic z toho určitě nemohlo způsobit toto přesměrování. Ta úprava pomocí .htaccess neřeší příčinu, ale až následek neznámého problému. Zkoušel jsi před změnou .htaccess vypnout všechny pluginy, nasadit defaultní šablonu a aktualizovat strukturu trvalých odkazů? Nejpravděpodobnější příčinou je podle mě zmiňovaný výpadek hostingu a následně nějaké jeho jiné nastavení, které způsobilo (možná v kombinaci s nějakým pluginem) tento problém... Ale neviděl bych v tom asi hned "kritickou" chybu WordPressu. Mimochodem, zatím ji nikdo vývojářům oficiálně nenahlásil a ani jsem ji moc neviděl řešit na oficiálních fórech. A už vůbec se mi nezdá, že by si takovéhle chyby nikdo v zahraničí takové "kritické" chyby přes půl roku nevšiml a pořádně ji nerozmáznul... Objevilo se to jen na homepage?

    (0)
    • admin napsal:

      Separatista: stejný problém mají všechny WP které směřují na newww. verzi. Zkus si to podle toho návodu otestovat. Prostě pokud ti dělá ve vyhledávačích problém index stránka (není zaindexovaná, doačasně vyřazená z indexu) tak je to právě tímto. Samotný chod WP tato chyba neohrožuje prostě jen index stránku nevidí vyhledávače a každý se s tím popere jinak.

      Btw. je toho plný internet:
      http://mu.wordpress.org/forums/topic/14952
      http://websitebuilding.biz/cms/fix-wordpress-302/
      http://www.richardshepherd.com/htaccess-and-302-redirect-problems-fixed/

      a mnoho dalších. Není to nic nového, jen se tomu u nás nikdo nevěnoval, protože chyba je vidět jen u vyhledávačů a index stránace.

      (0)
  4. Unreal][ napsal:

    mel jsem problem s nacitanim tveho rss. pripadalo mi to jako nejaky nepovedeny plugin. vyhodilo to kod, ten se musel navstivit a pak se zobrazil obsah - jako ochrana proti robotum temer idealni :)

    (0)
  5. radek napsal:

    Na tento článek jsem se opět dostával velmi těžko, na 3 refreshe. Řekl bych, že to nebude WordPressem :)

    (0)
  6. Robert napsal:

    Nepoužíváš náhodou ještě nějakou starou verzi WP? Protože jsem se koukal na několik stránek přes Web-Sniffer a tu chybu jsem našel jenom u tebe. A mimochodem pořád to nemáš opravený?

    (0)
  7. Separatista napsal:

    Jj, tyhle odkazy jsem viděl, ale to bylo asi tak všechno. Když se objeví ve WordPressu opravdu nějaký problém, tak se rozšíří mnohem rychleji (a nejen, že to zaznamená několik blogů). Zkoušel jsem to u několika svých webů, ale vše je v pořádku (200 OK).

    Našel jsem k tomu ještě toto: http://www.pdxtc.com/wpblog/wordpress/wordpress-2-82-changing-url-is-bad/ (odpovídá tam i jeden z hlavních vývojářů WordPressu Mark Jaquith). A na nic se nepřišlo (kromě toho že to nebude WordPressem, ale patrně nějakým pluginem, šablonou, nebo nastavením serveru).

    Každopádně je to zajímavé a bylo by fajn, kdybys to mohl ještě jednou pořádně otestovat (tedy standardní neupravený .htaccess, deaktivované pluginy, defaultní šablona a aktualizované trvalé odkazy). A pokud se to stále objevuje, tak by bylo úplně super, kdybys mohl nahodit na subdoméně testovací WordPress a poslat mi přístupy, aby se to mohlo nahlásit vývojářům (lepším řešením je oprava v nové verzi, než aby si každý upravoval na desítkách webů .htaccess). Díky moc...

    (0)
    • admin napsal:

      Vím že se něco děje s hostingem. Pluginy mám aktivní jen Executable PHP widget, KB Advanced RSS Widget, Raven's Antispam a WP-Polls. Z toho na jiném blogu jsem neměl nic jiného a dělalo to to samé. Uznávám že godaddy hosting nemá klasické .htaccess a pár věcí tady nefunguje jak má. Instalace mám aktuální.

      (0)
  8. Berlin napsal:

    Mám sice ve WMT jen jeden web, ale za to ho hostuju na Godaddy (EU region)a všechno OK.

    (0)
    • admin napsal:

      Hmm teď jsem prováděl několik hodin pár testů a vypadá to, že dreamhost tento problém nemá a to jsem zkusil instalace od 2.8.2+. Instalace na godaddy jsou naopak problémové. No nastal čas poslat dotaz na podporu.

      (0)
  9. Milan Kryl napsal:

    Dreamhost tyto problemy nema, protoze pri registraci vybiras, jestli se ti maji www nebo ne-www varianty presmerovat. Pravidlo se vytvori implicitne a neni potreba to mit explicitne v htaccess...

    (0)
    • admin napsal:

      OK tak po konzultaci s podporou godaddy hostingu jsem usoudil, že kombinace WP + .htaccess + Godaddy akcelerátor = velký problém. Takže vše přesouvám na VPSku do ČR. Takže 2 dny tu bude asi trochu mrtvo :)

      (0)
  10. Re4DeR napsal:

    Tak to když tak prosím napiš na začátek příspěvku, že to tak vážný není.

    (0)
  11. sazka napsal:

    Doporučuji Hostgator(space) + Godaddy(domain)

    (0)