JavaScript-Weiterleitungen
Was eine JavaScript-Weiterleitung ist, wie Googles Rendering-Pipeline sie anders behandelt als eine serverseitige 301, wann sie ein akzeptabler letzter Ausweg ist und wie man eine implementiert und erkennt – plus wo Meta Refresh und die History API einzuordnen sind.
Sprachen
1 Evidenzsignal auf dieser Seite
- Verknüpftes Live-Werkzeugrobots.txt Tester
Eine JavaScript-Weiterleitung sendet Nutzer und Crawler mit clientseitigem Code (window.location.replace() oder .href) an eine neue URL. Sie ist der am wenigsten zuverlässige Weiterleitungstyp, da Google sie erst nach dem Rendering sieht – was verzögert werden oder ganz fehlschlagen kann, ohne festen Zeitrahmen in beide Richtungen. Googles offizielle Präferenzreihenfolge ist serverseitig (301/302/307/308) → Meta Refresh → JavaScript, und die Dokumentation sagt klar: Verwenden Sie JS-Weiterleitungen nur, wenn Sie die anderen beiden nicht umsetzen können. Sobald Google eine erfolgreich interpretiert, wird das Ziel zu einem Kanonisierungssignal – aber das ist kein bewiesener Garant für identische PageRank- oder Ranking-Ergebnisse wie bei einer 301. Behandeln Sie JavaScript-Weiterleitungen daher als letzten Ausweg und nicht als gleichwertigen Ersatz. Nutzen Sie diesen Mechanismus auf eingeschränkten Plattformen ohne Serverzugriff, für SPA-Fehlerseiten, die auf eine echte 404 verweisen, und kaum sonst. Wenn der Einsatz unvermeidbar ist, setzen Sie window.location.replace() im <head> ein, entfernen Sie die Quell-URL aus Ihrer Sitemap und verlinken Sie intern auf das endgültige Ziel. Meta Refresh ist eine separate HTML-Ebene-Weiterleitung, und history.pushState()/replaceState() sind überhaupt keine Weiterleitungen.
TL;DR — Ein JavaScript-Redirect verwendet Code auf der Seite, um Sie nach dem Laden der Seite an eine andere URL zu senden. Es funktioniert für Menschen, aber Suchmaschinen behandeln es weniger zuverlässig als einen „echten“ Server-Redirect (einen 301). Wenn Sie stattdessen einen 301 einrichten können, tun Sie das. Heben Sie sich JavaScript-Redirects für den Fall auf, dass Sie keine andere Option haben.
Was ein JavaScript-Redirect ist
Ein JavaScript-Redirect ändert die Navigation durch Skriptausführung statt durch eine HTTP-3xx-Antwort. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: JavaScript redirects Google kann JavaScript-Redirects verarbeiten, empfiehlt aber nach Möglichkeit serverseitige Redirects. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: Redirects and Search
Es gibt zwei grundlegende Möglichkeiten, jemanden von einer URL zu einer anderen zu senden.
Die erste ist ein serverseitiger Redirect. Bevor die Seite überhaupt lädt, sagt der Server „Diese Seite ist umgezogen – gehen Sie stattdessen hierhin“ mithilfe eines Statuscodes wie 301 (dauerhaft) oder 302 (vorübergehend). Browser und Suchmaschine erhalten diese Nachricht sofort.
Die zweite ist ein JavaScript-Redirect. Die Seite lädt normal, und dann führt ein Stück Code im Browser aus und sendet Sie woanders hin. Etwa so:
<script>
window.location.replace("https://example.com/new-page/");
</script>Für eine Person, die herumklickt, fühlen sich die beiden fast gleich an. Für eine Suchmaschine sind sie sehr unterschiedlich – und dieser Unterschied ist der eigentliche Grund, warum diese Seite existiert.
Warum Suchmaschinen sie unterschiedlich behandeln
Google liest Ihre Seite in Etappen. Zuerst crawlt es (lädt das rohe HTML herunter). Später rendert es die Seite – führt tatsächlich das JavaScript aus, so wie es ein Browser tun würde. Ein serverseitiger 301 ist in diesem ersten Schritt sichtbar. Ein JavaScript-Redirect ist erst im Rendering-Schritt sichtbar, der viel später kommen kann – oder manchmal gar nicht.
Google sagt es direkt: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (Übersetzung) „Verwenden Sie JavaScript-Redirects nur, wenn Sie keine serverseitigen oder Meta-Refresh-Redirects durchführen können.“ (Google Search Central)
Ein JavaScript-Redirect ist also nicht schlecht – er ist nur weniger zuverlässig. Google wird normalerweise irgendwann hinkommen, aber ein echter 301 ist schneller und sicherer.
Die einfache Regel
- Können Sie einen 301 (oder 302) setzen? Tun Sie das. Das ist der Goldstandard.
- Können Sie den Server nicht anfassen, aber das HTML-
<head>bearbeiten? Ein 0-Sekunden-Meta-Refresh ist die nächstbeste Option. - Beides nicht? Dann ist ein JavaScript-Redirect eine gute letzte Option.
Ein paar Dinge, die Leute falsch machen:
- Ein Meta-Refresh ist kein JavaScript-Redirect. Es ist ein
<meta>-Tag in Ihrem HTML, und Google behandelt es früher und zuverlässiger als JS. history.pushState()ist kein Redirect. Es ändert nur, was in der Adressleiste steht – es sendet niemanden irgendwohin, und Suchmaschinen folgen ihm nicht.
Möchten Sie die Timing-Details der Rendering-Pipeline, die Implementierungsdetails und wissen, wie Sie JS-Redirects in einem Crawl finden? Wechseln Sie zum Erweitert-Tab.
TL;DR — Ein JavaScript-Redirect ist eine clientseitige Weiterleitung (
window.location.replace(),.href,.assign()), die Google erst nach dem Rendering verarbeitet — Phase drei von Crawlen → Rendern → Indexieren. Ein serverseitiger 301 wird beim Crawlen erkannt; ein JS-Redirect wartet in der Render-Warteschlange, und Google gibt keinen festen Zeitrahmen für diese Wartezeit an — sie kann schnell sein oder lange dauern, und das Rendering kann komplett fehlschlagen. Die dokumentierte Präferenzreihenfolge von Google ist serverseitig → Meta-Refresh → JavaScript, und die Dokumentation besagt, JS-Redirects nur zu verwenden, wenn die anderen beiden nicht möglich sind. Sobald Google einen erfolgreich interpretiert, wird das Ziel zu einem permanenten Canonicalization-Signal — sogar Google selbst nutzte sie in ihrem eigenen Blog, als nichts anderes funktionierte — aber das ist kein dokumentierter Beweis für identische PageRank- oder Ranking-Ergebnisse wie bei einem 301, daher sind sie ein letzter Ausweg, kein Spam-Signal. Die legitimen Anwendungsfälle sind eingeschränkte Plattformen ohne Serverkonfiguration und SPA-Fehlerseiten, die auf eine echte 404 verweisen. Implementieren Sie mitwindow.location.replace()im<head>, entfernen Sie die Quelle aus Ihrer Sitemap, verweisen Sie interne Links um, und bestätigen Sie, dass Googlebot das JS abrufen kann. Meta-Refresh ist auf HTML-Ebene (0s = permanent, jede Verzögerung = temporär), undhistory.pushState()/replaceState()sind überhaupt keine Redirects.
Was als JavaScript-Redirect gilt
Skriptnavigation hängt von Rendering und Ausführung ab und ist daher nicht protokolläquivalent zu einem HTTP-Redirect. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: JavaScript redirects Die Verarbeitung ist möglich, keine Garantie für exakte Zeitangaben oder Indexierung. Evidence for this claim Primary standard or official documentation supporting the adjacent article claim. Scope: Protocol semantics and Search behavior are kept separate; no indexing, ranking, or migration-timing guarantee is inferred. Confidence: high · Verified: Google: Redirects and Search
Ein JavaScript-Redirect navigiert den Browser mit clientseitigem Code zu einer neuen URL. Die gängigen Methoden und ihre Unterschiede:
window.location.replace("url")— navigiert und entfernt die ursprüngliche URL aus dem Verlauf der Sitzung. Dies ist die richtige Methode: Die Zurück-Taste überspringt die Redirect-Quelle, anstatt den Benutzer direkt zurückzubouncen.window.location.href = "url"— navigiert, behält aber die ursprüngliche URL im Verlauf, sodass die Zurück-Taste zur weiterleitenden Seite zurückkehrt (und eine Schleife erzeugen kann).document.location.hrefundwindow.location.assign("url")verhalten sich gleich.history.pushState()/history.replaceState()— keine Redirects. Sie überschreiben die Adressleiste ohne Navigation oder HTTP-Signal, daher behandeln Crawler sie nicht als Redirects. SPAs verwenden sie für In-App-URL-Änderungen; sie benötigen echte<a href>-Links (oder echte Navigationen), um crawlbar zu sein.
Die entscheidende Grenze: .replace(), .href und .assign() lösen alle
eine echte Dokumentnavigation aus (der Unterschied besteht nur darin, was mit dem
Sitzungsverlauf passiert), während pushState()/replaceState() nie navigieren —
sie berühren nur den Verlaufszustand und die Adressleiste, sonst nichts. Keiner der vier
ist ein HTTP-301; “Redirect” ist hier eine Abkürzung für clientseitige Navigation, kein Statuscode.
Meta-Refresh (<meta http-equiv="refresh" content="0;url=...">) wird oft
mit JS-Redirects in einen Topf geworfen, ist aber eine HTML-Direktive, die vor der JavaScript-Ausführung
geparst wird — eine separate, zuverlässigere Kategorie, die unten behandelt wird.
Wie Google einen JavaScript-Redirect verarbeitet
Das ist der Kernpunkt. Die Pipeline von Google läuft in Phasen ab, und ein JS-Redirect und ein serverseitiger Redirect werden in unterschiedlichen Phasen erfasst:
- Crawlen — Googlebot ruft die URL ab und liest das rohe HTML. Ein serverseitiger 301/302/307/308 wird genau hier erkannt.
- Render-Warteschlange — Seiten, die
200zurückgeben, warten auf das Rendering. Die Dokumentation von Google weist darauf hin, dass die Seite “may stay on this queue for a few seconds, but it can take longer than that.” (Übersetzung) „Möglicherweise bleibt die Seite einige Sekunden in dieser Warteschlange, aber es kann auch länger dauern.“ Google veröffentlicht keinen festen Service-Level-Zeitplan darüber hinaus, behandeln Sie die Wartezeit also als unvorhersehbar — sie kann schnell sein oder sich hinziehen — anstatt eine bestimmte Anzahl von Tagen oder Wochen anzunehmen. - Rendern + Indexieren — Headless-Chromium führt das JavaScript aus. Dies ist der erste Moment, in dem ein JS-Redirect existiert, soweit es Google betrifft.
Dieselbe Idee, die ich in Crawling und in JavaScript SEO darlege, gilt auch hier: Rendering ist ein separater Schritt vom Abrufen, und alles, was davon abhängt, erbt diese Verzögerung und dieses Risiko.
Und das Risiko ist real. Google: “While Google attempts to render every URL Googlebot crawled, rendering may fail for various reasons. This means that if you set a JavaScript redirect, Google might never see it if rendering of the content failed.” (Übersetzung) „Während Google versucht, jede URL zu rendern, die der Googlebot gecrawlt hat, kann das Rendering aus verschiedenen Gründen fehlschlagen. Das bedeutet: Wenn Sie eine JavaScript-Weiterleitung einrichten, könnte Google sie möglicherweise nie sehen, wenn das Rendering des Inhalts fehlgeschlagen ist.” (Google Search Central) Während des Zeitfensters, bevor die Weiterleitung verarbeitet wird – und für immer, falls das Rendering fehlschlägt – kann Google die leere Quellseite in seinem Index behalten.
Googles offizielle Präferenzreihenfolge
Die Redirects-Dokumentation legt eine Hierarchie von der zuverlässigsten zur am wenigsten zuverlässigen Methode fest:
- Serverseitige Weiterleitungen — 301/308 (dauerhaft), 302/307 (temporär). Am besten für alles geeignet: werden beim Crawlen erkannt, eindeutig.
- Meta-Refresh — auf HTML-Ebene. Ein 0-Sekunden-Meta-Refresh wird als dauerhafte Weiterleitung behandelt (wie ein 301); jeder verzögerte Meta-Refresh wird als temporär behandelt.
- JavaScript-Weiterleitungen — letzte Option.
Googles Worte: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (Übersetzung) „Verwenden Sie JavaScript-Weiterleitungen nur, wenn Sie keine serverseitigen oder Meta-Refresh-Weiterleitungen durchführen können.“ Dauerhafte Weiterleitungen geben das kanonische Signal an das Ziel weiter; temporäre behalten das Original in den Ergebnissen. (Wie das mit der Kanonisierungsauswahl zusammenspielt, erfahren Sie unter Canonicalization.)
Wird Link-Equity weitergegeben?
Googles eigene Redirect-Dokumentation listet die JavaScript-Standortnavigation unter ihren permanenten Weiterleitungsmethoden auf und besagt, dass das Ziel zum Canonicalisierungssignal wird, sobald Google es interpretiert hat – die pauschale Behauptung “JS redirects don’t pass PageRank” (Übersetzung) „JS-Redirects geben keinen PageRank weiter“ ist also falsch. Was die Dokumentation nicht belegt, ist, dass das Ergebnis identisch, unmittelbar oder so zuverlässig wie ein serverseitiger 301 ist – sie beschreibt das kanonische Signal, keine Garantie für einen übereinstimmenden PageRank-Fluss, ein übereinstimmendes Ranking oder Timing. Die ehrliche Einordnung: Ein 301 gibt das Signal zum Crawl-Zeitpunkt mit nahezu absoluter Sicherheit weiter; ein JS-Redirect gibt es nur dann und nur dann weiter, wenn und sobald das Rendering gelingt, und Google verspricht nicht, dass das Ergebnis eins zu eins dem eines 301 entspricht. Diese Lücke – nicht verlorene Equity – sind die tatsächlichen Kosten der Wahl von JavaScript.
Dies ist auch der Grund, warum JS-Weiterleitungen für sich genommen keinen Strafauslöser darstellen. Sie werden erst dann zu einem Spam-Problem, wenn sie für Cloaking verwendet werden – wenn Crawlern eine Seite gezeigt wird und Nutzer auf etwas anderes weitergeleitet werden oder wenn Mobilnutzer auf eine nicht zusammenhängende Domain umgeleitet werden. Die Richtlinie von Google zu sneaky redirects bezieht sich auf diese Absicht, nicht auf die Technik selbst.
Wann ein JavaScript-Redirect das richtige Werkzeug ist
Es gibt legitime Fälle:
- Eingeschränkte Plattformen. Einige Shared-Hosting-, CDN- oder CMS-Setups gewähren Ihnen keinen Zugriff auf serverseitige Weiterleitungsregeln. Eine JS-Weiterleitung ist ein gültiger Fallback – und bemerkenswerterweise verwendete Google JS-Weiterleitungen auf ihrem eigenen Webmaster-Blog, weil, wie Gary Illyes es ausdrückte, “that was the only thing we could use for 1:1 redirects, and it works on Google” (Übersetzung) „das war das Einzige, was wir für 1:1-Weiterleitungen verwenden konnten, und es funktioniert bei Google” (OnCrawl).
- SPA-Fehlerbehandlung. Google befürwortet dies ausdrücklich: “Use a JavaScript redirect to a URL for which the server responds with a
404HTTP status code.” (Übersetzung) „Verwenden Sie eine JavaScript-Weiterleitung zu einer URL, für die der Server mit einem404-HTTP-Statuscode antwortet.” (Google Search Central) Eine Single-Page-App, die eine ungültige Route auflöst, kann zu einem echten 404-Endpunkt weiterleiten, sodass Google den Fehler korrekt verarbeitet, anstatt einen Soft-404 zu indexieren.
Für dauerhafte URL-Weiterleitungen ist dies nicht das richtige Werkzeug – verwenden Sie einen 301. Denselben Punkt mache ich auch in Site-Migrationen: JavaScript-Weiterleitungen sind die letzte Option, und Google sieht sie möglicherweise nie.
Statische Site-Generatoren: Die Hugo-Aliase-Falle
Eine häufige Überraschung: Hugos aliases:-Frontmatter hat historisch gesehen
Meta-Refresh-HTML-Seiten generiert, keine serverseitigen 301er – und andere
statische Generatoren haben ähnliche Dinge standardmäßig getan. Die
Generator-Standardeinstellungen ändern sich zwischen Versionen, also überprüfen
Sie die tatsächliche Ausgabe Ihrer aktuell bereitgestellten Version, anstatt
Annahmen zu treffen; wenn aliases: Ihnen keine 301er liefert, benötigen Sie
Redirect-Regeln auf Plattformebene (Netlify _redirects, Cloudflare Workers,
Vercel vercel.json) plus (bei Hugo) disableAliases: true. Ich behandle dies
detailliert in Hugo SEO.
Best Practices für die Implementierung
Wenn ein JavaScript-Redirect wirklich Ihre einzige Option ist:
- Verwenden Sie
window.location.replace(), nicht.href. Wie Search Engine Journal es ausdrückt, JS-Redirects “typically usewindow.location.replace()function rather thanwindow.location.hrefto avoid UX redirect loops” (Übersetzung) „verwenden typischerweise die Funktionwindow.location.replace()anstelle vonwindow.location.href, um UX-Redirect-Schleifen zu vermeiden“ (SEJ). - Platzieren Sie es im
<head>, nicht im<body>. Browser parsen HTML sequenziell und führen Skripte aus, sobald sie darauf stoßen, daher “position JavaScript redirects in the<head>tag rather than<body>to minimize delay” (Übersetzung) „platzieren Sie JavaScript-Redirects im<head>-Tag anstelle von<body>, um Verzögerungen zu minimieren“ (OnCrawl). - Leiten Sie in einem Sprung zum endgültigen Ziel weiter. Ein JS-Redirect auf eine Seite, die selbst anderswohin 301t, erzeugt eine Kette; Ketten verschwenden Crawl-Budget und können in der GSC als Redirect-Fehler auftauchen.
- Entfernen Sie die Quell-URL aus Ihrer XML-Sitemap. Sitemaps sollten kanonische, indexierbare URLs auflisten – keine weiterleitenden.
- Richten Sie interne Links auf das Ziel aus, damit sie den Redirect gar nicht erst durchlaufen.
- Stellen Sie sicher, dass Googlebot das JS abrufen kann. Wenn der Redirect in
einem externen Skript lebt, das durch
robots.txtblockiert wird, kann Google es nicht rendern und den Redirect nicht sehen.
So erkennen Sie JavaScript-Redirects
Sie kündigen sich nicht wie ein 301 in einem Header an, also müssen Sie rendern:
- Ein Crawler mit aktiviertem JS-Rendering. OnCrawl empfiehlt, mit
“JavaScript rendering enabled (5-second timeout minimum)” zu crawlen;
(Übersetzung) „JavaScript-Rendering aktiviert (mindestens 5 Sekunden
Timeout)“; Screaming Frog und Ahrefs Site Audit können beide rendern. Ohne
Rendering sieht eine Seite mit JS-Redirect einfach wie ein normaler
200aus. - Chrome DevTools. Der Netzwerk-Tab (mit „Protokoll beibehalten“) zeigt die clientseitige Navigation; die Redirect Path-Erweiterung kennzeichnet sie ebenfalls.
- In der Search Console erscheint ein erfolgreich verarbeiteter JS-Redirect unter Seite mit Redirect – derselbe Status wie bei jeder weitergeleiteten URL, was für nicht-kanonische Quellen normal ist. Diese Bezeichnung ist bei einer bestimmten Prüfung jedoch nicht garantiert: Sie spiegelt wider, was Google zu dem Stichprobenzeitpunkt abgerufen, gerendert, interpretiert und kanonisiert hat, sodass eine URL zwischen Prüfungen einen anderen Status (oder noch keinen Redirect-Status) zeigen kann, ohne dass dies ein Fehler auf Ihrer Seite ist.
Was ich tatsächlich tun würde
Serverseitig zuerst, jedes Mal. Meta-Refresh (0 Sekunden), wenn Sie HTML bearbeiten
können, aber keine Serverkonfiguration. JavaScript nur, wenn beides nicht in Frage
kommt – und dann mit window.location.replace() im <head>, einer sauberen
Sitemap und einer Überprüfung, dass der Redirect für Googlebot tatsächlich rendert.
Für alles Dauerhafte oder Hochwertige ist die zusätzliche Zuverlässigkeit eines
301 fast jede Mühe wert.
KI-Zusammenfassung
Eine komprimierte Darstellung der erweiterten Version:
- Ein JavaScript-Redirect ist clientseitig (
window.location.replace(),.href,.assign()). Er wird erst nach dem Rendering verarbeitet – Phase drei von Crawl → Render → Index –, während ein serverseitiger 301 zum Crawl-Zeitpunkt sichtbar ist. - Die Render-Warteschlange ist das Risiko: Eine Seite “kann einige Sekunden in dieser Warteschlange bleiben, aber es kann auch länger dauern”, ohne feste Service-Level-Zeitvorgabe, und das Rendering kann vollständig fehlschlagen, in welchem Fall Google den Redirect möglicherweise nie sieht und die Quellseite indexiert lässt.
- Die Präferenzreihenfolge von Google: serverseitig (301/302/307/308) → Meta-Refresh → JavaScript. Dokumentation: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (Übersetzung) „Verwenden Sie JavaScript-Redirects nur, wenn Sie keine serverseitigen oder Meta-Refresh-Redirects durchführen können.“
- Das Ziel wird zu einem Kanonisierungssignal, sobald Google einen JS-Redirect interpretiert – der Mythos “JS-Redirects übertragen kein PageRank” ist also falsch –, aber Google dokumentiert nicht, dass das Ergebnis exakt dem PageRank-Fluss, Ranking oder Timing eines serverseitigen Redirects entspricht. JS-Redirects sind kein Penalty-Auslöser, es sei denn, sie werden für Cloaking (heimliche Redirects) verwendet.
- Legitime Verwendungen: eingeschränkte Plattformen (Google selbst hat sie in ihrem Blog verwendet) und SPA-Fehlerseiten, die auf eine echte 404 weiterleiten (von Google unterstützt).
- Meta-Refresh ≠ JS-Redirect: Es ist auf HTML-Ebene; 0s = permanent, jede Verzögerung =
temporär.
history.pushState()/replaceState()sind keine Redirects – kein HTTP-Signal, Crawler folgen ihnen nicht. - Hugo
aliases:sind Meta-Refresh, keine 301er – eine häufige Falle bei statischen Generatoren. - Implementierung:
window.location.replace()im<head>, einzelner Sprung zum Ziel, Quelle aus der Sitemap entfernen, interne Links umbiegen, sicherstellen, dass Googlebot das JS abrufen kann. - Erkennung: Crawlen mit aktiviertem JS-Rendering, Chrome DevTools / Redirect Path sowie “Page with redirect” (Übersetzung) „Seite mit Weiterleitung“ in der Google Search Console.
Offizielle Dokumentation
Primärquellen-Anleitung zu Redirects und JavaScript.
- Weiterleitungen und Google-Suche – die Präferenzhierarchie (serverseitig → Meta-Refresh → JavaScript), permanente vs. temporäre Behandlung und die Meta-Refresh-Verzögerungsregeln.
- Grundlagen der JavaScript-SEO – die Render-Pipeline und der von Google unterstützte SPA-404-Redirect-Anwendungsfall.
- Suchbezogene JavaScript-Probleme beheben – Soft-404s, Rendering und Debugging von JS, das Google nicht verarbeiten kann.
- Irreführende Weiterleitungen (Spamrichtlinien) – wann ein Redirect in Cloaking übergeht und zu einer Richtlinienverletzung wird.
Bing / Microsoft
- Bing Webmaster Help – Einstiegspunkt für Bings aktuelle Anleitung. (Zum Zeitpunkt des Schreibens hatte Bing keine dedizierte Redirect-Hilfeseite unter einer stabilen URL; Bingbot rendert JavaScript weniger zuverlässig als Googlebot, was JS-only-Redirects für die Bing-Indexierung riskanter macht.)
Zitate aus der Quelle
Offizielle Aussagen von Google und den Personen, die an der Suche arbeiten. Jeder Google-Docs-Link ist ein Deep-Link, der direkt zur zitierten Passage springt.
Google – die Präferenzreihenfolge und das Rendering-Risiko
- “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (Übersetzung) „Verwenden Sie JavaScript-Redirects nur, wenn Sie keine serverseitigen oder Meta-Refresh-Redirects durchführen können.“ – Google Search Central Dokumentation. Zum Zitat springen
- “While Google attempts to render every URL Googlebot crawled, rendering may fail for various reasons. This means that if you set a JavaScript redirect, Google might never see it if rendering of the content failed.” (Übersetzung) „Während Google versucht, jede von Googlebot gecrawlte URL zu rendern, kann das Rendering aus verschiedenen Gründen fehlschlagen. Das bedeutet, dass Google einen JavaScript-Redirect möglicherweise nie sieht, wenn das Rendering des Inhalts fehlgeschlagen ist.“ – Google Search Central Dokumentation. Zum Zitat springen
Google – der unterstützte SPA-Anwendungsfall
- “Use a JavaScript redirect to a URL for which the server responds with a
404HTTP status code (for example/not-found).” (Übersetzung) „Verwenden Sie eine JavaScript-Weiterleitung auf eine URL, für die der Server mit einem404-HTTP-Statuscode antwortet (z. B./not-found).“ — Google Search Central-Dokumentation. Zum Zitat springen
Gary Illyes, Google
- Zu JS-Weiterleitungen allgemein: “Js redirects are probably not a good idea though.” (Übersetzung) „JS-Weiterleitungen sind wahrscheinlich trotzdem keine gute Idee.“ (8. Juli 2020)
- Dazu, dass Google sie trotzdem verwendet, wenn nichts anderes funktionierte: “We used JS redirects on webmasters.googleblog.com because that was the only thing we could use for 1:1 redirects, and it works on Google.” (Übersetzung) „Wir haben JS-Weiterleitungen auf webmasters.googleblog.com verwendet, weil es das Einzige war, was wir für 1:1-Weiterleitungen nutzen konnten, und es funktioniert bei Google.“ Abdeckung
Search Engine Journal – Implementierung und Link-Equity
- “JavaScript redirects typically use
window.location.replace()function rather thanwindow.location.hrefto avoid UX redirect loops.” (Übersetzung) „JavaScript-Weiterleitungen verwenden typischerweise die Funktionwindow.location.replace()anstelle vonwindow.location.href, um UX-Weiterleitungsschleifen zu vermeiden.“ Lesen - “JavaScript redirects are not SEO-friendly and should be avoided when alternatives exist… Only implement JavaScript redirects when server-side alternatives are genuinely unavailable.” (Übersetzung) „JavaScript-Weiterleitungen sind nicht SEO-freundlich und sollten vermieden werden, wenn Alternativen existieren … Implementieren Sie JavaScript-Weiterleitungen nur, wenn serverseitige Alternativen wirklich nicht verfügbar sind.“ Lesen
Weiterleitungstypen – Spickzettel
Wann Google es sieht und wie es behandelt wird
| Methode | Wann Google es sieht | Behandelt als | Zuverlässigkeit |
|---|---|---|---|
Serverseitig 301 / 308 | Beim Crawlen | Dauerhaft | Höchste |
Serverseitig 302 / 307 | Beim Crawlen | Vorübergehend | Höchste |
Meta-Refresh, 0 Sekunden | Beim HTML-Parsen | Dauerhaft | Hoch |
Meta-Refresh, verzögert (>0s) | Beim HTML-Parsen | Vorübergehend | Hoch |
| JavaScript-Weiterleitung | Nach dem Rendern | Folgt der Navigation | Niedrigste |
history.pushState() / replaceState() | — | Keine Weiterleitung | n/a |
JavaScript-Weiterleitungsmethoden
| Code | Verlauf-Verhalten | Verwenden? |
|---|---|---|
window.location.replace("url") | Entfernt Quelle aus dem Verlauf | Ja – empfohlen |
window.location.href = "url" | Behält Quelle (Zurück-Schleife) | Für Weiterleitungen vermeiden |
window.location.assign("url") | Wie .href | Für Weiterleitungen vermeiden |
document.location.href = "url" | Alias für .href | Für Weiterleitungen vermeiden |
Schnelle Fakten
- Googles Reihenfolge: serverseitig → Meta-Refresh → JavaScript. Verwenden Sie JS nur, wenn die ersten beiden unmöglich sind.
- Sobald interpretiert, ist das Ziel einer JS-Weiterleitung ein Kanonisierungssignal – der Mythos „JS-Weiterleitungen geben kein PageRank weiter“ ist falsch. Google dokumentiert dieses Ergebnis nicht als identisch mit einem 301, daher ist das reale Risiko Verzögerung / Rendering- Fehler, nicht eine dokumentierte PageRank-Strafe.
- JS-Weiterleitungen sind keine Strafe, es sei denn, sie werden für Cloaking verwendet.
- Hugo
aliases:= Meta-Refresh, nicht 301. - Eine verarbeitete JS-Weiterleitung erscheint als „Seite mit Weiterleitung“ in GSC.
Sollte ich eine JavaScript-Weiterleitung verwenden? – Entscheidungscheckliste
Gehen Sie diese von oben nach unten durch; stoppen Sie beim ersten „Ja“.
- Kann ich ein serverseitiges
301/302/307/308setzen? → Tun Sie das. Stoppen Sie hier. - Kann ich das HTML-
<head>bearbeiten, aber nicht die Serverkonfiguration? → Verwenden Sie einen 0-Sekunden- Meta-Refresh für dauerhafte Umzüge. Stoppen Sie hier. - Beides ist nicht möglich (eingeschränkte Plattform), oder es ist eine SPA-Fehlerseite, die einen echten 404 erreichen sollte? → Eine JavaScript-Weiterleitung ist akzeptabel. Fahren Sie fort.
Wenn Sie eine JavaScript-Weiterleitung verwenden
- Verwenden Sie
window.location.replace()(nicht.href/.assign()). - Platzieren Sie das Skript im
<head>, so früh wie möglich. - Leiten Sie direkt zum endgültigen Ziel um – keine Kette über eine weitere Weiterleitung.
- Entfernen Sie die Quell-URL aus Ihrer XML-Sitemap.
- Verweisen Sie interne Links auf das Ziel um.
- Bestätigen Sie, dass das JavaScript der Weiterleitung nicht in
robots.txtblockiert ist, damit Googlebot es rendern kann. - Sie zeigen Crawlern nicht eine Seite und leiten Benutzer woanders hin (Cloaking).
- Überprüfen Sie durch Crawlen mit aktiviertem JavaScript-Rendering und prüfen Sie “Page with redirect” in der GSC.
Die empfohlene JavaScript-Weiterleitung
Platzieren Sie dies im <head>, damit es so früh wie möglich in der Parse-Reihenfolge ausgeführt wird:
<head>
<script>
window.location.replace("https://example.com/new-page/");
</script>
</head>replace() ist die entscheidende Wahl – es entfernt die weiterleitende URL aus dem Sitzungsverlauf,
so dass die Zurück-Taste den Benutzer nicht direkt zurück in die Weiterleitung springen lässt.
Der 0-Sekunden-Meta-Refresh (zweitbeste Option, wenn Sie kein serverseitiges Redirect durchführen können)
Nicht JavaScript, aber der richtige Fallback, wenn Sie HTML bearbeiten können, aber keine Serverkonfiguration. Eine Verzögerung von 0 Sekunden wird von Google als permanente Weiterleitung behandelt:
<head>
<meta http-equiv="refresh" content="0; url=https://example.com/new-page/">
</head>Was Sie NICHT als Weiterleitung verwenden sollten
history.pushState() schreibt die Adressleiste um, führt jedoch keine Navigation durch und sendet kein HTTP-Signal – Crawler folgen dem nicht:
// NOT a redirect — only changes the URL bar, no navigation happens
history.pushState({}, "", "/new-page/");Wenn Sie eine SPA-Routenänderung crawlbar machen müssen, geben Sie ihr einen echten <a href>-Link oder eine echte Navigation, nicht nur einen History-API-Aufruf.
SPA-Fehlerseite → echte 404 (von Google unterstütztes Muster)
Wenn eine Single-Page-App eine unbekannte Route auflöst, leiten Sie die Anfrage an einen Endpunkt weiter, der eine echte 404 zurückgibt, damit Google den Fehler verarbeitet statt einer Soft-404:
// On an unresolved route in your SPA:
window.location.href = "/not-found"; // /not-found must return HTTP 404 Tools zum Finden und Prüfen von JavaScript-Weiterleitungen
- Screaming Frog SEO Spider – aktivieren Sie JavaScript-Rendering (mit einem ausreichenden
Rendering-Timeout), damit Seiten mit JS-Weiterleitung nicht wie einfache
200s aussehen. - Ahrefs Site Audit – rendert Seiten und zeigt Weiterleitungen, Ketten und weitergeleitete interne Links an.
- Chrome DevTools – Netzwerk-Tab – aktivieren Sie “Protokoll speichern” und beobachten Sie, wie die clientseitige Navigation ausgelöst wird.
- Redirect Path (Chrome-Erweiterung) – markiert clientseitige Weiterleitungen neben serverseitigen in einem schnellen Popup.
- Google Search Console – URL-Inspektion – sehen Sie, wie eine einzelne URL gecrawlt und gerendert wurde und ob Google den Status “Page with redirect” (Übersetzung) „Seite mit Weiterleitung“ gemeldet hat.
- GSC – Seitenindexierungsbericht – “Page with redirect” (Übersetzung) „Seite mit Weiterleitung“ listet weitergeleitete URLs auf; “Redirect error” (Übersetzung) „Weiterleitungsfehler“ zeigt Ketten und Schleifen an.
Fehler, die Sie bei JavaScript-Weiterleitungen vermeiden sollten
- Verwendung von
window.location.href(oder.assign()) anstelle von.replace()..hrefbehält die weiterleitende Seite im Verlauf der Sitzung, sodass die Zurück-Taste den Benutzer direkt zurück in die Weiterleitung führt – eine Schleife. Stattdessen: Verwenden Siewindow.location.replace(), das die Quelle aus dem Verlauf entfernt. - Verwendung einer JS-Weiterleitung bei einer dauerhaften, wichtigen Migration, wenn eine 301 verfügbar ist. JS-Weiterleitungen werden erst nach dem Rendering verarbeitet, was verzögert werden oder vollständig fehlschlagen kann – das falsche Risiko für eine Seite, die wichtig ist. Stattdessen: Verwenden Sie eine serverseitige 301; sparen Sie JavaScript für eingeschränkte Plattformen und SPA-Fehlerseiten.
- Verkettung der JS-Weiterleitung mit einer weiteren Weiterleitung, anstatt in einem Schritt am endgültigen Ziel zu landen. Ketten verschwenden Crawl-Budget und können als Weiterleitungsfehler in der GSC erscheinen. Stattdessen: Richten Sie die JS-Weiterleitung direkt auf die Ziel-URL.
- Belassen der Quell-URL in der XML-Sitemap. Sitemaps sollten kanonische, indexierbare URLs auflisten, keine weiterleitenden. Stattdessen: Entfernen Sie die Quelle aus der Sitemap, sobald die Weiterleitung aktiv ist.
- Blockieren des Skripts, das die Weiterleitung auslöst, durch
robots.txt. Wenn Googlebot das JS nicht abrufen kann, kann es die Weiterleitung nicht rendern, und die Quellseite kann unbegrenzt indexiert bleiben. Stattdessen: Stellen Sie sicher, dass das Skript crawlbar ist – der robots.txt-Tester prüft genau dies. - Annahme, dass Hugos
aliases:-Frontmatter eine 301 liefert. Es hat historisch eine Meta-Refresh-HTML-Seite generiert, keine serverseitige Weiterleitung – überprüfen Sie die tatsächliche Ausgabe Ihrer bereitgestellten Version, anstatt anzunehmen. Stattdessen: Verwenden Sie plattformweite Weiterleitungsregeln (Netlify_redirects, Cloudflare Workers, Vercelvercel.json) plusdisableAliases: true, wie in Hugo-SEO beschrieben. - Behandlung von
history.pushState()/replaceState()als Weiterleitung. Sie überschreiben nur die Adressleiste – keine Navigation, kein HTTP-Signal, und Crawler folgen ihnen nicht. Stattdessen: Verwenden Sie einen echten<a href>-Link oder eine echte Navigation für alles, was crawlbar sein muss. - Crawlern eine Seite zeigen und Benutzer woanders hin schicken (Cloaking). Das macht aus einer legitimen JS-Weiterleitung eine heimliche Weiterleitung – eine Richtlinienverletzung; es geht um die Absicht, nicht um die Technik. Stattdessen: Schicken Sie alle, einschließlich Bots, an dasselbe Ziel.
Häufige Probleme mit JavaScript-Weiterleitungen
Die Quell-URL bleibt lange nach der Weiterleitung indexiert
- Wahrscheinliche Ursache: Die Seite befindet sich noch in der Render-Warteschlange von Google, oder das Rendering ist vollständig fehlgeschlagen.
- Behebung + Überprüfung: Führen Sie einen Live-Test im URL-Inspektion-Tool der Google Search Console
für die Quell-URL durch. Wenn sie noch nicht gerendert wurde, warten Sie – Google
gibt keine feste Zeitleiste für die Render-Warteschlange an, also überprüfen Sie regelmäßig, anstatt
ein bestimmtes Zeitfenster anzunehmen. Wenn das Rendering weiterhin fehlschlägt, bestätigen Sie, dass das
Weiterleitungsskript nicht blockiert ist (siehe das
robots.txt-Problem unten).
Die Zurück-Taste führt direkt zur weiterleitenden Seite
- Wahrscheinliche Ursache: Die Weiterleitung verwendet
window.location.hrefoder.assign()anstelle von.replace(), sodass die Quell-URL im Verlauf der Sitzung bleibt. - Behebung + Überprüfung: Ändern Sie das Skript auf
window.location.replace(). Bestätigen Sie, indem Sie am Ziel landen und die Zurück-Taste drücken – es sollte die Weiterleitungsquelle vollständig überspringen.
GSC zeigt „Gecrawlt – derzeit nicht indexiert“ anstelle von „Seite mit Weiterleitung“
- Wahrscheinliche Ursache: Google hat die Seite noch nicht gerendert, oder das Rendering schlägt für diese URL fehl.
- Behebung + Überprüfung: Crawlen Sie die URL mit einem JS-Rendering-Crawler (Screaming Frog oder Ahrefs Site Audit, mit aktiviertem Rendering), um zu bestätigen, dass die Weiterleitung tatsächlich clientseitig ausgelöst wird. Überprüfen Sie außerdem, ob das Weiterleitungsskript nicht in
robots.txtblockiert ist – der robots.txt-Tester bestätigt, ob Googlebot es abrufen kann.
Eine unaufgelöste SPA-Route erscheint in der GSC als Soft 404
- Wahrscheinliche Ursache: Die Route leitet irgendwohin weiter, aber das Ziel gibt tatsächlich keinen HTTP-
404-Status zurück. - Behebung + Überprüfung: Richten Sie die Weiterleitung auf einen Endpunkt, der tatsächlich mit
404antwortet (das von Google empfohlene Muster), und führen Sie dann erneut die URL-Inspektion aus, um die Statusänderung von Soft 404 zu einem sauberen 404 zu sehen.
Eine Seite mit JS-Weiterleitung erscheint in einem Crawl-Bericht weiterhin als einfacher 200
- Wahrscheinliche Ursache: Der Crawler wurde ohne aktiviertes JavaScript-Rendering ausgeführt, sodass er nur die anfängliche HTML-Antwort sah, nicht die clientseitige Navigation.
- Behebung + Überprüfung: Crawlen Sie erneut mit aktiviertem JS-Rendering (ein Timeout von mindestens 5 Sekunden ist ein vernünftiger Ausgangspunkt) und bestätigen Sie, dass die Weiterleitung jetzt angezeigt wird.
Nachweisen, dass die Weiterleitung tatsächlich wirksam wurde
| Durchzuführender Test | Erwartetes Ergebnis | Fehlerinterpretation | Überwachungszeitraum | Rollback-Auslöser |
|---|---|---|---|---|
| robots.txt-Tester auf der URL des Weiterleitungsskripts | Skript ist für Googlebot Erlaubt | Nicht erlaubt – Google kann das Skript nicht abrufen, daher kann es die Weiterleitung nie rendern | Sofort | Beheben oder entfernen Sie die blockierende robots.txt-Regel, bevor Sie sich auf die Weiterleitung verlassen |
| Crawlen Sie die Quell-URL mit aktiviertem JS-Rendering (Screaming Frog / Ahrefs Site Audit) | Crawler meldet eine clientseitige Navigation zum gewünschten Ziel | Seite meldet weiterhin einen einfachen 200 ohne Navigation – Rendering wird nicht ausgelöst | Sofort (einzelner Crawl) | Wenn es nach der Behebung von robots.txt immer noch nicht ausgelöst wird, verwenden Sie stattdessen einen 0-Sekunden-Meta-Refresh oder eine serverseitige Weiterleitung |
| GSC-URL-Inspektion – Live-Test auf der Quell-URL | Gerendertes Ergebnis zeigt die Weiterleitung zum Ziel | Rendering schlägt fehl, oder das gerenderte HTML zeigt keine Navigation | Sofort für den Live-Test selbst | Wenn der Live-Test wiederholt nicht rendert, behandeln Sie diese Plattform als unfähig, eine JS-Weiterleitung zu unterstützen – erhalten Sie Serverzugriff oder verwenden Sie Meta-Refresh |
| GSC – Seitenindexierungsbericht für die Quell-URL | Quell-URL ist unter „Seite mit Weiterleitung“ aufgeführt | Wird weiterhin als indiziert, „Gecrawlt – derzeit nicht indiziert“ oder als doppelter Inhalt angezeigt | 2–4 Wochen (Indexierungsstatus aktualisiert sich nach Googles eigenem Zeitplan) | Wenn nach 4+ Wochen immer noch nicht als Weiterleitung klassifiziert, überprüfen Sie die oben genannten Render-blockierenden Prüfungen erneut |
| Manuelle Zurück-Button-Prüfung im Browser nach dem Landen auf dem Ziel | Zurück-Button überspringt die Quellseite vollständig | Zurück-Button kehrt zur Quellseite zurück | Sofort | Wechseln Sie das Skript von .href/.assign() zu window.location.replace() |
Testen Sie sich selbst: JavaScript-Weiterleitungen
Fünf kurze Fragen dazu, wie JavaScript-Weiterleitungen funktionieren und wann deren Einsatz sinnvoll ist. Wählen Sie für jede eine Antwort und überprüfen Sie dann.
Ressourcen, die Ihre Zeit wert sind
Meine verwandten Artikel
- JavaScript-SEO-Probleme und Best Practices – die Rendering-Seite, weshalb JS-Weiterleitungen ihr Timing-Risiko mit sich bringen.
- Der Anfängerleitfaden für technisches SEO – wo Weiterleitungen und Rendering im größeren Bild einzuordnen sind.
Meine Vorträge
- Wie die Suche funktioniert (SlideShare) – meine Erläuterung von Crawling, Rendering, Indexierung und Ranking – die Pipeline, die eine JS-Weiterleitung zu einem Ereignis der dritten Phase macht. Mein üblicher Haftungsausschluss gilt: “This is my understanding of systems… not going to be 100% complete or accurate.” (Übersetzung) „Dies ist mein Verständnis von Systemen… nicht zu 100 % vollständig oder genau.“
Aus der Branche
- Redirects und Google-Suche (Google Search Central) – die offizielle Präferenzhierarchie und der Umgang mit permanenten vs. temporären Weiterleitungen.
- Irreführende Weiterleitungen (Google Search Central) – die Spam-Richtlinie, die eine legitime Weiterleitung von Cloaking unterscheidet.
- JavaScript-Weiterleitungen und SEO: Wann und wie man sie verwendet (Search Engine Journal) – praktische Implementierungsanleitung und die Unterscheidung zwischen
replace()und.href. - Sind JavaScript-Weiterleitungen SEO-freundlich? (Search Engine Journal) – die Zusammenfassung „vermeiden, wenn Alternativen existieren”.
- JavaScript-Weiterleitungen und SEO: Der ultimative Leitfaden (OnCrawl) – Anleitung zur Platzierung im Head, Erkennungstools und das vollständige Zitat von Gary Illyes.
- Sind JavaScript-Weiterleitungen schlecht für SEO? (Conductor) – eine prägnante FAQ-Antwort für die informative Suchanfrage.
- Leitfaden zu Weiterleitungstypen (Lumar) – eine breitere Redirect-Taxonomie mit JS-Redirects im Kontext.
Änderungsprotokoll
Aktualisiert am 22. Aug. 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.
Aktualisiert am 18. Juli 2026.
Redaktionelle Zusammenfassung und aufgezeichnete Änderungsdetails.Änderungsdetails
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
-
Detaillierte Änderungsangaben sind derzeit auf Englisch verfügbar.
Vollständiger Vergleich nicht verfügbar — für diese Version wurde kein früherer Schnappschuss archiviert.