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
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
- Deprecating our AJAX crawling scheme – Google Search Central Blogdevelopers.google.com
- Fix Search-related JavaScript problems – Google Search Centraldevelopers.google.com
- History: pushState() – MDNdeveloper.mozilla.org
Stand: