Indexace AJAX pomocí hashbang

Veškerý obsah stránek vytvořený pomocí technologie AJAX se načítá dynamicky na straně klienta a je pro robota (crawlera) neviditelný. S použitím techniky hashbang lze stránky napsané v AJAX indexovat.

Důležité pojmy

  • Hash fragment: Všechny znaky v URL po #. Tyto fragmenty se tradičně používají k označení jedné části statického HTML dokumentu. Nic za znakem „#“ není crawleru dostupné.
  • Pretty URL: Jakákoliv adresa obsahující hash fragment začínající „!“.
  • Ugly URL: Jakákoliv adresa obsahující parametr s klíčem „_escaped_fragment_“. Parametr s klíčem „_escaped_fragment_“ musí být uveden jako poslední parametr URL.

Příklad pretty URL

www.example.com?parametr=1#!klic1=hodnota1&klic2=hodnota2

Příklad ugly URL

www.example.com?parametr=1&_escaped_fragment_=klic1=hodnota1%26klic2=hodnota2. 

Přehled řešení

Aby měl crawler dostupný obsah stránky napsané v AJAX, a to v jejím jakémkoliv stavu, potřebuje vždy načítat stránku se statickým obsahem. U techniky hashbang se toto řeší pomocí pretty URL a ugly URL.

Když crawler nalezne pretty URL a bude ji chtít indexovat, vyšle na server požadavek na obsah URL v upravené podobě (ugly URL). Úkolem webového serveru je vrátit statickou stránku, která odpovídá svým obsahem stránce napsané v AJAX. Tuto upravenou stránku indexuje crawler a ve výsledcích vyhledávání ji zobrazuje pod pretty URL. Uživatel tedy vždy pracuje s URL s hash fragmentem, nikoliv s upravenou adresou.

Transformace z pretty URL na ugly URL

  1. Hodnoty URL za znaky „#!“ převést na parametr dotazu s klíčem „_escaped_fragment_“ a „#!“ vynechat.
  2. Escapovat speciální znaky v klíči „_escaped_fragment_“ (například „&“).

Indikace podpory schématu pro indexovaní AJAX

  1. URL adresa s hash fragmentem začínajícím „!“.
  2. Použitím speciálního meta tagu <meta name="fragment" content="!"> na URL bez hash fragmentu. Jediná možná hodnota atributu „content“ je „!“. Pokud crawler nalezne URL www.example.com (bez hash fragmentu) a bude obsahovat ve zdrojovém kódu tento meta tag, pošle vašemu serveru požadavek na obsah URL www.example.com?_escaped_fragment_.

Příklad URL adresy s hash fragmentem

www.example.com?parametr=1#!klic1=hodnota1&klic2=hodnota2

Sitemapy

Do sitemapy vkládáme URL s hash fragmentem (stejné, jako jsou ve výsledcích vyhledávání).

Obecné informace

Obecně tuto techniku pro weby s velkým počtem stránek nedoporučujeme, protože robot musí navštívit dvakrát více URL a stažení stránek tak může trvat déle.