HTTPQUERY
Français

308 Permanent Redirect

Utilisation

Lorsque le code de statut 308 Permanent Redirect est reçu, les clients sont censés mettre à jour les liens qu’ils ont enregistrés vers le nouvel URI. Le nouvel URI est indiqué par l’en-tête Location et sert au client pour la redirection automatique.

Cette réponse est courante lorsque des serveurs migrent vers un nouveau domaine ou réorganisent leur structure de fichiers interne sans prévoir de revenir à l’ancien URI.

Le code de statut 308 Permanent Redirect diffère du 301 sur un point essentiel : le client est tenu de préserver la méthode de requête d’origine. Une réponse 301 permet au client de transformer une requête POST en requête GET lors de la redirection. Un 308 Permanent Redirect exige que la requête de suivi utilise la même méthode que la requête initiale. Cela fait du 308 le choix correct lorsque la préservation de la méthode compte, comme pour les points de terminaison d’API et les soumissions de formulaires. Le code de statut 308 a initialement été défini dans une spécification distincte avant d’être intégré au standard HTTP principal.

Impact SEO

Google traite le 308 de façon identique au 301. Tous deux sont des redirections permanentes et un signal fort indiquant que la cible de la redirection est canonique. Les signaux de classement sont transférés de l’ancienne URL vers la nouvelle. Google suit jusqu’à 10 sauts de redirection. Le contenu des URL de redirection intermédiaires est ignoré. La seule différence entre 301 et 308 est la préservation de la méthode, qui compte pour les points de terminaison d’API mais pas pour le crawl des moteurs de recherche. Rediriger des URL supprimées vers la page d’accueil ou vers une page de catégorie générique avec un 308 est détecté par Google comme un soft 404.

Exemple

Le client envoie une requête POST à un point de terminaison d’API. Le serveur répond 308 Permanent Redirect pour indiquer que le point de terminaison a été déplacé. Le client est tenu de répéter la requête POST, corps d’origine inclus, à la nouvelle Location.

Requête

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

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

Réponse

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>

Références de code

.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