HTTPQUERY
Deutsch

308 Permanent Redirect

Verwendung

Wird der Statuscode 308 Permanent Redirect empfangen, sollen Clients gespeicherte Links auf die neue URI aktualisieren. Die neue URI wird im Location-Header angegeben und vom Client für die automatische Weiterleitung verwendet.

Diese Antwort ist üblich, wenn Server auf eine neue Domain umziehen oder ihre interne Dateistruktur umorganisieren, ohne eine Rückkehr zur früheren URI zu planen.

Der Statuscode 308 Permanent Redirect unterscheidet sich vom 301 in einem entscheidenden Punkt: Der Client muss die ursprüngliche Anfragemethode beibehalten. Eine 301-Antwort erlaubt dem Client, bei der Weiterleitung eine POST-Anfrage in eine GET-Anfrage zu ändern. Ein 308 Permanent Redirect verlangt, dass die Folgeanfrage dieselbe Methode wie die ursprüngliche verwendet. Damit ist 308 die richtige Wahl, wenn die Beibehaltung der Methode wichtig ist, etwa bei API-Endpunkten und Formularübermittlungen. Der Statuscode 308 war ursprünglich in einer eigenen Spezifikation definiert, bevor er in den HTTP-Kernstandard aufgenommen wurde.

SEO-Auswirkung

Google behandelt 308 genauso wie 301. Beide sind permanente Weiterleitungen und ein starkes Signal dafür, dass das Weiterleitungsziel kanonisch ist. Ranking-Signale werden von der alten URL auf die neue übertragen. Google folgt bis zu 10 Weiterleitungssprüngen. Inhalte zwischengeschalteter Weiterleitungs-URLs werden ignoriert. Der einzige Unterschied zwischen 301 und 308 ist die Beibehaltung der Methode, was für API-Endpunkte relevant ist, nicht jedoch für das Crawling durch Suchmaschinen. Werden gelöschte URLs per 308 auf die Startseite oder eine allgemeine Kategorieseite weitergeleitet, erkennt Google dies als Soft 404.

Beispiel

Der Client sendet eine POST-Anfrage an einen API-Endpunkt. Der Server antwortet mit 308 Permanent Redirect, um anzuzeigen, dass der Endpunkt verschoben wurde. Der Client muss die POST-Anfrage einschließlich des ursprünglichen Bodys an der neuen Location wiederholen.

Anfrage

POST /api/v1/orders HTTP/1.1
Host: example.com
Content-Type: application/json
Content-Length: 35

{"item": "widget", "quantity": 10}

Antwort

HTTP/1.1 308 Permanent Redirect
Location: http://example.com/api/v2/orders
Content-Type: text/html; charset=UTF-8
Content-Length: 118

<h1>API endpoint moved</h1>
<body>
The orders endpoint has moved to
<a href=/api/v2/orders>/api/v2/orders</a>.
</body>

Code-Referenzen

.NET

HttpStatusCode.PermanentRedirect

Rust

http::StatusCode::PERMANENT_REDIRECT

Rails

:permanent_redirect

Go

http.StatusPermanentRedirect

Symfony

Response::HTTP_PERMANENTLY_REDIRECT

Python3.5+

http.HTTPStatus.PERMANENT_REDIRECT

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_PERMANENT_REDIRECT

Angular

@angular/common/http/HttpStatusCode.PermanentRedirect