301 vs. 302: dauerhafte und vorübergehende Weiterleitungen
Ein 301 sagt, dass die Ressource dauerhaft umgezogen ist und die neue URL die alte überall ersetzen soll; ein 302 sagt, dass der Umzug vorübergehend ist und die ursprüngliche URL weiterhin die eigentliche bleibt. Suchmaschinen richten sich nach diesem Unterschied, weshalb der falsche Code Sie Rankings kostet.
Was die beiden Codes einem Client mitteilen
Beide Codes schicken den Client zur Adresse im Location-Header, und für einen Besucher sehen sie identisch aus. Der Unterschied liegt darin, was alles andere mit dieser Information anfängt. Ein 301 lädt Clients und Crawler ein, ihre Aufzeichnungen zu aktualisieren: das Lesezeichen zu ersetzen, den Link umzuschreiben, das Ziel statt der Quelle zu indexieren. Ein 302 bittet sie, weiterhin die ursprüngliche URL zu verwenden und diesmal nur einen Umweg zu nehmen. Browser dürfen einen 301 cachen und den Server danach gar nicht mehr fragen; ein 302 ist standardmäßig nicht cachefähig, sofern die Antwort nichts anderes sagt.
Wann welchen verwenden
- Verwenden Sie 301 für einen Domainwechsel, eine Migration von HTTP zu HTTPS, eine Kanonisierung von non-www zu www, eine dauerhafte URL-Umstrukturierung, eine zusammengeführte oder umbenannte Seite, oder eine abgeschaltete Produktseite, die auf ihren nächstliegenden Ersatz zeigt.
- Verwenden Sie 302 für eine Wartungsseite, einen A/B-Test, eine geografische oder sprachliche Landingpage-Wahl, die Sie noch ändern können, eine kurzlebige Kampagnen-URL, oder ein vorübergehendes "kommen Sie später wieder"-Ziel.
Setzen Sie nie einen 301 für etwas, das Sie später rückgängig machen wollen. Da Clients ihn cachen, können wiederkehrende Besucher noch lange, nachdem Sie die Regel gelöscht haben, auf dem vorübergehenden Ziel landen, und es gibt keine Möglichkeit, in ihre Caches einzugreifen. Der umgekehrte Fehler: Bleibt ein 302 auf einem dauerhaften Umzug stehen, bleibt die alte URL indexiert, die neue konkurriert mit ihr, und die Signale bleiben aufgeteilt.
Auswirkungen auf SEO
Googles Dokumentation besagt, dass eine dauerhafte Weiterleitung ein Signal ist, das Ziel der Weiterleitung als kanonische URL zu behandeln, während eine vorübergehende Weiterleitung das nicht ist, die ursprüngliche URL also ihren Platz im Index behält. In der Praxis:
- Ein 301 bündelt den Linkwert am Ziel und ersetzt mit der Zeit die alte URL im Index durch die neue.
- Ein 302 lässt die Quell-URL in der Regel indexiert. Suchmaschinen versuchen zwar, die Absicht zu interpretieren, ein lange bestehender 302 kann also irgendwann als dauerhaft behandelt werden, aber Sie sollten sich nicht darauf verlassen, dass richtig geraten wird.
- Weiterleitungsketten verwässern den Nutzen und verlangsamen das Crawling. Leiten Sie alte URLs direkt auf das endgültige Ziel.
- Werden viele abgeschaltete Seiten auf die Startseite umgeleitet, wird das eher als soft 404 behandelt denn als Umzug. Leiten Sie auf die nächstliegende gleichwertige Seite um, oder liefern Sie einen 410, wenn es keine gibt.
- Was auch immer Sie wählen, halten Sie es im Einklang mit Ihren Canonical-Tags und Ihrer Sitemap. Widersprüchliche Signale sind schlimmer als ein leicht suboptimales.
307 und 308: die methodenerhaltenden Versionen
Die ursprünglichen Definitionen von 301 und 302 waren bei der HTTP-Methode uneindeutig, und Clients haben sich auf ein Verhalten eingespielt, das der Standard inzwischen als historisch beschreibt: Folgen viele Clients einem 301 oder 302 nach einem POST, ändern sie die Methode zu GET und verwerfen den Body. Für eine Seite ist das harmlos. Für einen Formular-Endpunkt oder eine API zerstört das die Anfrage und meldet nichts davon.
307 Temporary Redirect bedeutet dasselbe wie 302, und 308 Permanent Redirect bedeutet dasselbe wie 301, mit einer zusätzlichen Anforderung für beide: Methode und Body müssen erhalten bleiben. Für URLs, die ausschließlich GET-Anfragen erhalten, sind 301 und 302 also in Ordnung und das, was die meisten Tools erwarten. Für alles, was POST, PUT, PATCH oder DELETE akzeptiert, verwenden Sie 308 für einen dauerhaften Umzug und 307 für einen vorübergehenden. Wollen Sie gezielt, dass auf ein POST ein GET auf einer anderen URL folgt, ist dafür 303 See Other da.
So prüfen Sie, welchen Code eine URL zurückgibt
- Lesen Sie die Statuszeile und das Ziel, ohne der Weiterleitung zu folgen:
Die Statuszeile zeigt 301, 302, 307 oder 308, undcurl -sI https://example.com/old-page | grep -Ei "^(HTTP|location|cache-control)"Locationzeigt, wohin sie führt. - Folgen Sie der gesamten Kette und zählen Sie die Sprünge, damit Sie sehen, ob aus einer Weiterleitung drei geworden sind:
curl -sIL -o /dev/null -w "%{num_redirects} hops, final %{http_code}, %{url_effective}\n" https://example.com/old-page - Testen Sie mit einem POST, falls der Endpunkt das akzeptiert. Kommt die Anfrage als GET ohne Body beim Ziel an, stellen Sie die Regel auf 307 oder 308 um.
- Ändern Sie den Code dort, wo er erzeugt wird. Das kann die Anwendung sein, die Webserver-Konfiguration, eine
.htaccess-Regel oder das CDN. Leiten beide Ebenen um, gewinnt die äußerste, und die innere Regel bleibt unsichtbar. - Verifizieren Sie mit einem kalten Cache. Ein Browser, der einen 301 bereits gecacht hat, gehorcht ihm weiterhin, bestätigen Sie das Ergebnis also über curl oder ein privates Fenster, bevor Sie entscheiden, dass die Änderung nicht griff.
- Lassen Sie die Weiterleitung nach einem dauerhaften Umzug bestehen. Entfernen Sie sie später, kappen Sie jeden Link und jedes Lesezeichen, das noch auf die alte URL zeigt.
Eine Weiterleitung nach dem Einrichten beobachten
Eine Weiterleitung, die den Code wechselt, in eine Schleife gerät oder ihr TLS-Zertifikat verliert, lässt die Quell-URL weiterhin antworten, nichts wirkt also defekt, bis der Traffic einbricht. Externe Prüfungen, die den genauen Statuscode aufzeichnen und der Kette folgen, zeigen das beim nächsten Durchlauf, und sie von vielen Netzwerken aus laufen zu lassen unterscheidet eine globale Regeländerung von einem regionalen CDN-Problem. HostTracker überwacht Websites seit 2004 und führt Prüfungen von über 300 Prüfpunkten in 158 Städten aus. Sehen Sie mit dem HTTP-Prüfungstool, was eine URL gerade jetzt zurückgibt, und lesen Sie die vollständige Anleitung zur 3xx-Weiterleitungsfamilie für die Codes auf beiden Seiten dieser beiden.