English
JavaScript & Frameworks

Hash-URLs (#!)

HistorischAuch genannt: Hashbang, #!-URLs

Hash-URLs mit #!, auch Hashbang genannt, waren eine Adressform für JavaScript-Anwendungen, bei der die Ansicht im Fragment der URL steht, zum Beispiel example.com/#!/produkte. Der Begriff meint hier die Webadresse, die Suche liefert auch viele Treffer zum Shebang in Unix-Skripten. Der Begriff ist historisch.

Hintergrund

Google hatte 2009 ein AJAX-Crawling-Schema vorgeschlagen, weil die eigenen Systeme JavaScript-Seiten nicht verarbeiten konnten. Bei #!-URLs rief Googlebot eine Variante mit dem Parameter _escaped_fragment_ ab, die der Server für Crawler bereitstellte.

Was heute gilt

Am 14. Oktober 2015 hat Google das Schema abgekündigt. Googlebot könne JavaScript inzwischen rendern, solange Skript- und CSS-Dateien nicht gesperrt sind. Google empfiehlt seither Progressive Enhancement und die History API mit pushState(). Bestehende Seiten mit _escaped_fragment_ blieben zunächst indexiert, und Google crawlt und rendert nach eigener Aussage generell die #!-URLs selbst.

Die aktuelle Dokumentation zu JavaScript-Problemen weist darauf hin, dass man sich bei URL-Fragmenten nicht darauf verlassen kann, dass sie mit Googlebot funktionieren, weil das AJAX-Crawling-Schema seit 2015 abgekündigt ist. Für Single-Page-Anwendungen empfiehlt Google die History API.

Beispiel

Code
alt:  https://example.com/#!/schuhe/sneaker
neu:  https://example.com/schuhe/sneaker

Die neue Adresse wird per history.pushState() gesetzt und muss auch bei direktem Aufruf eine vollständige Seite liefern.

Quellen

  1. Deprecating our AJAX crawling scheme – Google Search Central Blogdevelopers.google.com
  2. Fix Search-related JavaScript problems – Google Search Centraldevelopers.google.com
  3. History: pushState() – MDNdeveloper.mozilla.org

Stand: