Suche
Suche löschen
Suche schließen
Google-Apps
Hauptmenü
true

AJAX: Häufig gestellte Fragen

In diesem Abschnitt werden die häufigsten Fragen zum AJAX-Crawling beantwortet.
Wann sollte ich "_escaped_fragment_" und wann "#!" in meinen AJAX-URLs verwenden?

Ihre Website sollte die #!-Syntax in allen URLs verwenden, die das AJAX-Crawlingschema übernommen haben. Der Googlebot folgt keinen Hyperlinks im Format _escaped_fragment_.

Wo kann ich dieses Schema in der Praxis sehen?

Sehen Sie sich die AJAX-Beispielanwendungen unter http://gwt.google.com/samples/Showcase/Showcase.html an. Wenn Sie auf einen der Links auf der linken Seite klicken, sehen Sie die URL, die ein #!- enthält, und die Anwendung navigiert zu dem Status, der diesem Hash-Fragment entspricht. Wenn Sie das #!-Hash-Fragment (beispielsweise http://gwt.google.com/samples/Showcase/Showcase.html#!CwRadioButton) in ?_escaped_fragment_= ändern (beispielsweise http://gwt.google.com/samples/Showcase/Showcase.html?_escaped_fragment_=CwRadioButton), gibt die Website einen HTML-Snapshot zurück.

Was passiert, wenn ich #! nicht auf meiner AJAX-Website implementiere?

Ihre Seiten erscheinen möglicherweise nicht mehr richtig auf den Suchergebnisseiten von Google. Wir arbeiten jedoch kontinuierlich daran, dass der Googlebot mehr wie ein Browser arbeitet. Wenn die für Ihre Website erforderlichen Funktionen implementiert werden, kann der Googlebot Ihre Seiten richtig und ohne Ihre Hilfe indexieren. Jedoch bietet dieses AJAX-Crawlingschema eine Lösung für Webmaster, die bereits AJAX verwenden und sicherstellen möchten, dass ihr Content richtig indexiert wird. Wir gehen davon aus, dass dies eine gute Lösung für alle ist, die bereits HTML-Snapshots ihrer Seiten haben oder die einen monitorlosen Browser verwenden möchten, um diese HTML-Snapshots zu erhalten.

Wie aktuell sollten meine Inhalte sein?

Die Antwort auf diese Frage hängt vollkommen davon ab, wie häufig sich der Content Ihrer Anwendung ändert. Wenn er sich häufig ändert, sollten Sie immer einen aktuellen HTML-Snapshot als Antwort auf eine Crawleranfrage erstellen. Anders verhält es sich jedoch, wenn sich der Content nicht regelmäßig ändert – wie es beispielsweise bei einem Bibliotheksarchiv der Fall wäre. Um den Server davon abzuhalten, immer und immer wieder die gleichen HTML-Snapshots zu erstellen, können Sie alle relevanten HTML-Snapshots nur einmal (und möglicherweise sogar offline) erstellen und dann für spätere Zwecke speichern. Sie könnten dem Googlebot auch mit einem 304-HTTP-Statuscode (nicht geändert) antworten.

Was ist, wenn meine Anwendung keine Hash-Fragmente verwendet?

Vielleicht sollte sie das! Durch Hash-Fragmente können Sie Ihre Anwendung erheblich schneller machen, da Hash-Fragmente vom Browser clientseitig verwaltet werden und nicht die gesamte Seite aktualisiert werden muss. Darüber hinaus ermöglichen sie Ihnen, einen Verlauf in Ihrer Anwendung zu unterstützen (die unpopuläre Zurück-Schaltfläche des Browsers). Verschiedene AJAX-Frameworks unterstützen Hash-Fragmente. Siehe beispielsweise Really Simple History, das Verlaufs-Plug-in von jQuery, den Verlaufsmechanismus des Google Web Toolkits oder die Unterstützung von ASP.NET AJAX für History-Management.

Wenn Ihre Anwendung jedoch nicht mit Hash-Fragmenten strukturiert werden kann, können Sie auch ein spezielles Token in Ihren Hash-Fragmenten verwenden, das heißt alles, was in der URL nach dem #-Zeichen steht. Hash-Fragmente, die eindeutige Seiten bezeichnen, müssen mit einem Ausrufezeichen beginnen. Wenn Ihre AJAX-Anwendung beispielsweise eine solche URL enthält:

www.example.com/ajax.html#mystate,

sollte sie so aussehen:

www.example.com/ajax.html#!mystate

Wenn Ihre Website das Schema übernimmt, wird sie als "AJAX crawlable" (crawlbare AJAX-Website) betrachtet. Dies bedeutet, dass der Crawler die Inhalte Ihrer Anwendung erkennt, wenn Ihre Website HTML-Snapshots bereitstellt.

Führt dieser Ansatz zu einer Verbreitung von "falschen" URLs mit dem Format "_escaped_fragment_"?

Die Syntax _escaped_fragment_ für URLs ist eine temporäre URL, die niemals von einem Endnutzer gesehen werden sollte. In allen Kontexten, die Nutzer sehen, sollte die "ordentliche URL" (mit #! statt _escaped_fragment_) verwendet werden: bei der normalen Anwendungsinteraktion, auf Sitemaps, in Hyperlinks, in Weiterleitungen und in allen anderen Situationen, in denen der Nutzer eine URL sieht. Aus dem gleichen Grund sind Suchergebnisse "ordentliche URLs" und nicht "falsche URLs".

Stellt dieses Schema eine Cloaking-Gefahr dar?

Der über Cloaking bereitgestellte Content unterscheidet sich von dem Content, der an Suchmaschinen weitergegeben wird. Dies geschieht im Allgemeinen mit der Absicht, das Ranking in den Suchergebnissen zu verbessern. Cloaking ist und bleibt ein Problem für Suchmaschinen, und es ist wichtig zu beachten, dass die Bereitstellung von AJAX-Anwendungen für Crawler keine Einladung dazu ist, Cloaking zu erleichtern. Aus diesem Grund muss der HTML-Snapshot den gleichen Content enthalten, den der Endnutzer in einem Browser sehen soll. Ist dies nicht der Fall, kann dies als Cloaking betrachtet werden. Weitere Informationen finden Sie hier.

Kann ich meine Flash-Dateien oder andere Rich Media-Dateien mithilfe dieses Schemas besser für Crawler zugänglich machen?

Google indexiert viele Rich Media-Dateitypen und wir arbeiten ständig daran, unser Crawling und unsere Indexierung zu verbessern. Es kann jedoch vorkommen, dass der Googlebot nicht den gesamten Content einer Flash-Anwendung oder einer anderen Rich Media-Anwendung findet, ebenso wie nicht der gesamte dynamische Content von Websites gecrawlt werden kann. Daher kann es nützlich sein, mithilfe dieses Schemas zusätzlichen Content für den Googlebot bereitzustellen. Auch hier gilt: Der HTML-Snapshot muss den gleichen Content enthalten, den der Endnutzer in einem Browser sieht. Google behält sich das Recht vor, Websites, die offenbar Cloaking verwenden, aus dem Index zu entfernen.

Was ist, wenn meine Website über Hash-Fragment-URLs verfügt, die nicht gecrawlt werden sollten?

Wenn Ihre Website das AJAX-Crawlingschema übernimmt, crawlt der Google-Crawler jede URL mit Hash-Fragmenten, die er erkennt. Wenn Sie URLs mit Hash-Fragmenten haben, die nicht gecrawlt werden sollen, sollten Sie Ihrer "robots.txt"-Datei eine Regel für einen regulären Ausdruck hinzufügen. Sie können beispielsweise eine Konvention in Ihren Hash-Fragmenten verwenden, die nicht gecrawlt werden sollen, und dann alle URLs in Ihrer "robots.txt"-Datei ausschließen, die mit dieser Konvention übereinstimmen. Nehmen wir an, alle Ihre nicht indexierbaren Status hätten die Form #DONOTCRAWLmyfragment. Sie könnten dann verhindern, dass der Googlebot diese Seiten crawlt, indem Sie Ihrer "robots.txt"-Datei Folgendes hinzufügen:

Disallow: /*_escaped_fragment_=DONOTCRAWL
Was ist mit der bestehenden Vewendung von #!in Hash-Fragmenten?

#! ist in bestehenden Hash-Fragmenten ein unregelmäßig verwendetes Token. Jedoch ist es nicht durch die URL-Spezifikation deaktiviert. Was passiert, wenn Ihre Anwendung das #!-Token verwendet, jedoch nicht das neue AJAX-Crawlingschema übernehmen will? Sie können zum einen eine Richtlinie in Ihrer "robots.txt"-Datei hinzufügen, um dem Crawler dies anzuzeigen.

Disallow: /*_escaped_fragment_

Bitte beachten Sie hierzu Folgendes: Wenn Ihre Anwendung nur diese URL beinhaltet (www.ihrebeispielurl.de/index.html#!mystate), dann wird diese URL nicht gecrawlt. Wenn Ihre Anwendung darüber hinaus die reine URL www.ihrebeispielurl.de/ajax.html enthält, wird diese URL gecrawlt.

Wie steht es um die Barrierefreiheit?

Als Nebeneffekt der derzeitigen Praxis, Suchmaschinen statischen Content bereitzustellen, haben Webmaster ihre Anwendungen Nutzern mit Behinderungen besser zugänglich gemacht. Vor diesem Hintergrund erscheint der Begriff der Barrierefreiheit in einem gänzlich neuen Licht: Ohne manuelle Hilfe können Webmaster einen monitorlosen Browser zum Erstellen von HTML-Snapshots verwenden, die den gesamten relevanten Content enthalten und für Sprachausgabegeräte verwendbar sind. Das bedeutet, dass es nun einfacher ist, den statischen Content aktuell zu halten, da weniger manuelle Arbeit erforderlich ist. Mit anderen Worten: Webmaster haben nun einen noch größeren Anreiz, ihre Anwendungen für Nutzer mit Behinderungen zugänglich zu machen.

Wie sollte ich rel="canonical" verwenden?

Verwenden Sie <link rel="canonical" href="http://ihrebeispielurl.de/ajax.html#!foo=123" /> und nicht <link rel="canonical" href="http:///ihrebeispielurl.de/ajax.html?_escaped_fragment_=foo=123" />.

Welche URL sollte ich in meine Sitemap einfügen?

Ihre Sitemap sollte die Version enthalten, die Sie bevorzugt in den Suchergebnissen anzeigen möchten, also http:///ihrebeispielurl.de/ajax.html#!foo=123.

Wie wirken sich die #!-URLs auf Produkt-Feeds aus?

Es ist normal, dass Seiten die gleichen URLs für die Google-Produktsuche und die Google-Websuche haben. Im Allgemeinen sollte die #! -Version der URL als "kanonische" Version behandelt werden, die in allen Kontexten verwendet werden sollte. Die URL mit _escaped_fragment_ ist eine temporäre URL, die Endnutzer nie sehen sollten.

Ich verwende HtmlUnit als monitorlosen Browser und er funktioniert nicht. Woran liegt das?

Wenn "er funktioniert nicht" bedeutet, dass HtmlUnit nicht den erwarteten Snapshot zurückgibt, hat er wahrscheinlich nicht genug Zeit, um die JavaScript- und/oder XHR-Anfragen auszuführen. Versuchen Sie Folgendes, um das Problem zu beheben:

  • Verwenden Sie NicelyResynchronizingAjaxController. So wartet HtmlUnit auf alle ausstehenden XHR-Aufrufe.
  • Erhöhen Sie die Wartezeit für waitForBackgroundJavaScript und/oder waitForBackgroundJavaScriptStartingBefore.
So wird Ihr Problem höchstwahrscheinlich gelöst. Falls das Problem weiterhin besteht, lesen Sie auch die häufig gestellten Fragen zu HtmlUnit: http://htmlunit.sourceforge.net/faq.html. HtmlUnit hat auch ein Nutzerforum.

 

War dieser Artikel hilfreich?
Wie können wir die Seite verbessern?