Vollständiger Leitfaden zu HTTP-Statuscodes: 300er-Serie
Die HTTP-Statuscodes 300 sind für Weiterleitungen reserviert. Die meisten Weiterleitungen sind für den Endnutzer transparent und werden vollständig vom User-Agent abgewickelt.

Um besser zu verstehen, warum Weiterleitungen so wichtig sind, hilft es zu verstehen, warum man überhaupt eine Weiterleitung einsetzt.
Weiterleitungen entstehen in der Regel aus einer Änderung. Das kann eine Änderung der Rechenressourcen sein, eine Änderung der Marketing-Terminologie, eine Änderung der Richtlinien, eine Änderung der SEO-Strategie oder eine Änderung im Geschäftsbetrieb. Irgendwo hat sich etwas geändert und verlangt, dass dieselbe URI an einem anderen Ort erreichbar ist.
Wenn Änderungen vorgenommen werden, behalten Suchmaschinen und andere Quellen die alten Links, bis die Website neu indexiert ist.
Die Alternative zu einer Weiterleitung wäre ein 404-Fehler «document not found».
Ein extremes Szenario, das die Weiterleitung eines User-Agents erzwingt, wäre ein Unternehmen, das seine Produktlinie neu organisiert. Nehmen wir zum Beispiel an, ACME Co. hat die Widgets-Linie zu ACME Labs verschoben. Die aktuelle Richtlinie von ACME schreibt eine Webstruktur der Form acmeco/{division}/{productline} vor.
ACME könnte also haben:
www.acme.com
www.acme.com/marketing/seotechnologies/
www.acme.com/marketing/billboards/
www.acme.com/consumergoods/sports/
www.acme.com/consumergoods/clothing/
www.acme.com/consumergoods/widgets/
www.acme.com/labs/widgets/
www.acme.com/labs/foobars/
www.acme.com/labs/betaproducts/
ACME Widgets lag die letzten 5 Jahre unter www.acme.com/consumergoods/widgets/ und erhält an diesem Ort Zehntausende Zugriffe pro Stunde.
Können Sie sich vorstellen, wie viel Umsatz dieser einfache Umzug ACME Co. kosten könnte, an entgangenen Verkäufen, an Kundenservice, der Beschwerden beantwortet, und an Führungskräften, die am Telefon offizielle Pressestatements zur beliebten Widget-Linie abgeben?
Und die Suchmaschinen? Ein guter Teil der Widget-Verkäufe von ACME Co. stammt aus Suchmaschinenzugriffen. Ganz zu schweigen von der Google-Ads-Kampagne und der URL auf Broschüren und Visitenkarten.
Eine Weiterleitung der 300er-Serie kann das Problem für alle bei ACME Co. lösen. ACME kann den Webserver einfach so konfigurieren, dass alle Anfragen an www.acme.com/consumergoods/widgets/ auf www.acme.com/labs/widgets/ weitergeleitet werden.
(hr)
Beispiel einer 301-Weiterleitung aus der Praxis
Bei EuroVPS verwenden wir eine 301-Weiterleitung, um sicherzustellen, dass Besucher das sichere HTTPS-Protokoll verwenden.
So genau stellt die 301-Weiterleitung sicher, dass jeder Besucher beim Aufruf von EuroVPS HTTPS verwendet:
- der User-Agent fordert http://www.eurovps.com/ an
- der Webserver antwortet mit dem Statuscode 301
- der Webserver setzt einen Location-Header auf die https-Version
- die meisten User-Agents leiten automatisch auf die neue URL weiter

Weiterleitungen lassen sich in Skriptsprachen wie Python Django, PHP und ASP .Net umsetzen. Eine robustere Lösung ist jedoch, die Weiterleitungen dem Webserver mit einer Rewrite-Regel zu überlassen.
Weiterleitung in PHP:
<?php // Permanent 301 Redirect via PHP
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://eurovps.com/");
exit; // stop the script once the redirect is sent
Das Problem mit Weiterleitungen auf dieser hohen Ebene ist, dass wir am Ende 100 Seiten bearbeiten könnten! Oder schlimmer noch, in einem Content-Management-System am Code herumbasteln, das Weiterleitungen vielleicht nicht so umsetzt, wie wir es möchten.
Eine viel elegantere Lösung ist, den Webserver die gesamte Weiterleitung für uns erledigen zu lassen.
Im Apache könnten Weiterleitungen so umgesetzt werden:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
In nginx ist dieselbe Weiterleitung eine Zeile im Server-Block, der auf Port 80 lauscht:
server {
listen 80;
server_name www.example.com;
return 301 https://$host$request_uri;
}
(hr)
Weiterleitungen mit Statuscode 300
300 Multiple Choices
300 Multiple Choices ist eine Weiterleitung, die in der Praxis selten verwendet wird. 300 Multiple Choices tritt auf, wenn eine angeforderte Ressource auf mehrere Ziele für dasselbe angeforderte Dokument verweist. Dem Endnutzer wird eine Auswahl an Aktionen angeboten, aus der er die gewünschte wählen kann.
301 Moved Permanently
301-Weiterleitungen sind verbreitet, weil Suchmaschinen eine 301 als dauerhaften Umzug behandeln: Sie aktualisieren ihren Index auf die neue URI und übertragen die Ranking-Signale.
Wenn ein Client auf eine 301 trifft, sollten Lesezeichen und automatisierte User-Agents auf die neue URI aktualisiert werden.
302 Found
302-Weiterleitungen sollten verwendet werden, wenn eine angeforderte URI vorübergehend an einem neuen Ort liegt. Der User-Agent folgt dem Location-Header zur vorübergehenden URI. Aus historischen Gründen machen die meisten Clients aus einem POST ein GET, wenn sie einer 302 folgen. Verwenden Sie eine 307, wenn die Methode beibehalten werden muss.
Anders als bei einer 301 sollten User-Agents die ursprüngliche URI weiter verwenden, denn es handelt sich um eine vorübergehende Weiterleitung.
303 See Other
303 ist hauptsächlich für POST- und PUT-Anfragen gedacht, die auf eine andere URI geführt werden als die, die der User-Agent in seiner POST- oder PUT-Anfrage ursprünglich angefordert hat.
Ein Beispiel wäre das Hochladen einer größeren Datei, das einige Minuten dauern kann:
- der User-Agent übermittelt eine große Datei per PUT oder POST
- die Datei ist für die ursprüngliche URI bestimmt
- der Webserver gibt eine 303 zurück und leitet auf eine Upload-Statusseite weiter
- der User-Agent verwendet über die 303 ein GET und fordert eine Upload-Statusseite an
304 Not Modified
304 Not Modified wird für Caching-Zwecke verwendet. Die 304 wird als Status an einen User-Agent gesendet, der eine Prüfung des aktuellen Stands einer zwischengespeicherten Seite anfordert.
Ist die angeforderte Seite noch aktuell, antwortet der Server mit 304 und ohne Body, und der User-Agent zeigt dem Endnutzer seine zwischengespeicherte Kopie.

305 Use Proxy (veraltet)
305 Use Proxy ist veraltet. Die aktuelle HTTP-Spezifikation, RFC 9110, führt ihn als nicht mehr verwendet, und Browser reagieren nicht darauf. Verwenden Sie ihn nicht.
307 Temporary Redirect
Die 307 ähnelt der 302, verlangt aber, dass dieselbe Anfragemethode für die weitergeleitete URI verwendet wird. Sie würde zum Beispiel verwendet, wenn eine POST-Anfrage an eine andere URI gesendet werden muss.
Bei einer 302 wechseln die meisten Clients zu einer GET-Anfrage, um die weitergeleitete URI abzurufen.
308 Permanent Redirect
308 ist das dauerhafte Gegenstück zur 307. Wie eine 301 teilt sie den Clients mit, dass die Ressource endgültig umgezogen ist. Wie eine 307 verlangt sie, dass der Client die Anfrage mit derselben Methode wiederholt. Verwenden Sie sie, wenn ein dauerhafter Umzug ein POST als POST erhalten muss.
Die Statuscodes in diesem Leitfaden sind in RFC 9110 (HTTP Semantics) definiert.
Verwandter Artikel: Vollständiger Leitfaden zu HTTP-Statuscodes: 400er-Serie
Aus dem Blog-Archiv von EuroVPS, erstmals veröffentlicht am 12. Dezember 2019.
Alle Notizen aus der Praxis