Ajax für Google crawlbar machen

Es ist eine alte Tatsache dass Google nicht in der Lage ist Ajax programmierte Seiten zu crawlen. Doch diese Problem wurde nun mittels einer neuen Technik gelöst. Man muss Google nur deutlich machen, dass die Seite das Ajax crawling verfahren unterstützt und somit für die Suchmaschine lesbar wird. Für gewöhnlich leitet man einen Sprung innerhalb einer Seite mit dem # Zeichen ein. Wenn man dieses nun mit einem „Hash Fragment“ ergänzt, signalisiert man Google, dass diese Seite, das Ajax crawling unterstützt. „Hash Fragmente“ müssen mit einem ! beginnen.

Deutlich gemacht an folgendem Beispiel:

http://www.meine-domain.de/ajax.html#!key=value

Mit einem Link wie zum Beispiel http://www.meine-domain.de/ajax.html#!key=value wird ein neues Contentelement nachgeladen. Warum dies notwendig ist, erklärt sich mit der Tatsache, dass URL’s welche mit einen Hashwert versehen sind (#), niemals als ein Teil einer HTTP Abfrage an den Server gesendet werden. Mit Hilfe dieser Vorgehensweise schafft man eine Zusammenarbeit von Server und Nutzer (oder Crawler), ohne die Seite wechseln zu müssen. Also ein typisches Ajax-Verhalten.

 

Indexierung von Ajax Content

Nun geht es neben der Benutzbarkeit für den User darum, eine Indexierung von den Suchmaschinen zu realisieren. Eine „Ajax“ lesbarkeit erreicht man dann, wenn auf dem Server eine HTML Snapshot Version des nachgeladenen Contents vorliegt.

Google empfiehlt  eine Hash-Verlinkung mittels „ajaxseite.html#![hash]“ vorzunehmen (Beispiel: http://www.meine-domain.de/index.html#!key-value ). Zum einen wird bei einer solchen Verlinkung keine neue Seite geladen. Zum anderen wird der Crawler darauf hingewiesen, dass eine HTML Snapshot existiert welche, für den Crawler lesbar ist und  den nachgeladenen Content enthält.

Der Crawler versucht automatisch eine statische (maschinenlesbare) Datei zu erreichen. Hierbei wird der Hash-Wert (#!) durch „?_escaped_fragment_=“ ausgetauscht.

Beispiel:

Der Crawler findet den Link: http://www.meine-domain.de/index.html#!key=value

Der Crawler versucht die URL: http://www.meine-domain.de/ index.html?_escaped_fragment_=key=value

 

Ajax Ranking bei Google & Co.

Der Inhalt des HTML Snapshot (ugly URL genannt) wird dann der Hash-Fragment URL (pretty URL genannt) zugeschrieben. Das Crawlen der „ugly URL“ und die Indexierung des Inhaltes für die „pretty URL“ erfolgt automatisch und muss nicht extra konfiguriert werden. 

 

Ajax Crawling durch Robots

 

Um ganz sicher zu gehen ist es zu empfehlen, in der Snapshot Datei noch zusätzlich einen Canonical-Tag zu der Hashdatei zu implementieren:

<link rel="canonical" href=" http://www.meine-domain.de/index.html#!key=value" />

 

Ajax auf der Homepage

Soll ein Ajax Content direkt während des Seitenaufruf geladen werde (also ohne User Aktivitäten) muss  im Meta-Head folgender Befehl implementiert werden:

<meta name="fragment" content="!">
Google wird dann folgende Snapshot URL Crawlen: www.example.com?_escaped_fragment_=

Zum Beispiel:

Auf http://www.domain.com wird bereits ein nicht Crawler lesbarer Ajax-Teil geladen. Im HTML Headbereich ist dann folgenden Meta-Tag einzufügen: <meta name="fragment" content="!">. Der Cawler wird nun versuchen die HTML Snapshot Datei unter:  http://www.domain.com?_escaped_fragment_= zu erreichen und den Content zu indexieren.

 

XML Sitemap

In der XML Seitemap (zum Beispiel die Google Sitemap) sind auch die Hash Fragmente URL (#!) zu übertragen und nicht die „_escaped_fragment_“ Snapshot Datei. Der Crawler wird auch hier versuchen die ugly URL’s zu erreichen.

 

Ressourcen:

Im Folgenden erhalten Sie eine Übersicht über Tools, die das generieren von HTML Snapshots vereinfacht bzw. möglich macht. Wenn viel Content mit JavaScript produziert wurde, dann ist es sinnvoll einen kopflosen Browser wie HtmlUnit zu nutzen, um einen HTML Snapshot der original Seite zu generieren. Alternativ hierzu eignen sich Tools, wie crawljax oder watij.com.

Eine andere Möglichkeit ist, wenn man viel Inhalt mit PHP oder ASP.NET produziert, den bestehenden Code zu nutzen und alleinig das JavaScript mit einer statischen oder Server seitigen HTML zu ersetzen.

Des weiteren besteht die Möglichkeit eine statische offline Version der Seite zu schaffen. Eine Reihe von Anwendungen beziehen Ihre Daten aus Datenbanken, die dann vom Browser geladen werden. Anstelle dessen kann man separate HTML Seiten für jede AJAX URL bauen.

Um die Funktionsweise der HTML Snapshots zu testen und sicher zu sein, dass diese korrekt funktionieren, empfiehlt sich das Tool „Fetch as Googlebot“. Dieser simuliert die Vorgehensweise eines echten Googlerobots.