308 Permanent Redirect : un 301 qui respecte la méthode
308 Permanent Redirect déplace définitivement une ressource vers une nouvelle URL et oblige les clients à y répéter la même méthode de requête.
308 Permanent Redirect indique qu’une ressource a été déplacée définitivement et que le client doit répéter la même requête, avec la même méthode et le même corps, à la nouvelle URL. Voyez-le comme un 301 strict sur les méthodes.
Définition et historique
Le 308 a été spécifié pour la première fois en 2014 (RFC 7238, puis RFC 7538) et fait désormais partie de la RFC 9110, section 15.4.9. La cible a un nouvel URI permanent, les clients doivent l’utiliser à l’avenir, et un agent utilisateur qui suit la redirection ne doit pas changer la méthode de la requête. Comme un 301, un 308 est mis en cache par défaut.
La seule différence avec le 301 tient à la gestion de la méthode : avec un 301, les clients peuvent transformer un POST en GET pour des raisons historiques ; avec un 308, un POST reste un POST. Son pendant temporaire est le 307.
Impact SEO
La documentation de Google sur les codes de statut HTTP présente le 308 comme équivalent au 301 : Googlebot le suit et y voit un signal fort que la cible est l’URL canonique. Les signaux se regroupent sur la nouvelle adresse, et l’ancienne URL disparaît peu à peu des résultats. Les conseils généraux de Google sur les redirections restent valables : un seul saut plutôt qu’une chaîne, une destination pertinente, et des redirections conservées au moins un an après une migration de site.
Google précise aussi que, même s’il traite plusieurs codes de redirection de la même façon, ils n’ont pas la même signification : choisissez donc le code qui décrit ce qui se passe, au bénéfice des autres clients. Pour les déplacements permanents de pages, 301 et 308 sont tous deux corrects.
D’où viennent les 308
- Next.js : les redirections avec
permanent: trueet la normalisation automatique de la barre oblique finale utilisent 308. - Les API qui ont déplacé un point d’accès et ont besoin que les clients continuent d’envoyer POST ou PUT.
- Les règles écrites à la main où un développeur a choisi 308 volontairement.
Quelques très anciens clients ne reconnaissaient pas le 308. C’est rarement un souci aujourd’hui, mais si vous devez prendre en charge des appareils anciens, le 301 est le choix le plus sûr pour de simples déplacements de pages.
Comment envoyer un 308
# Nginx : conserver le reste du chemin et la chaîne de requête
location ~ ^/api/v1/(.*)$ {
return 308 https://api.example.com/v1/$1$is_args$args;
}
# Apache mod_alias (accepte n’importe quel code 3xx)
Redirect 308 /api/v1/ https://api.example.com/v1/
# Apache mod_rewrite
RewriteRule ^docs/(.*)$ https://docs.example.com/$1 [R=308,L]
Comment vérifier
Tracez les sauts avec le vérificateur de redirections et confirmez que la chaîne aboutit en une seule étape à une page en 200. Pour un lot d’URL migrées, le vérificateur de statut HTTP liste chaque code et chaque cible. Vérifiez ensuite que la destination est auto-canonique avec le vérificateur de balise canonical. Une réponse 308 :
HTTP/2 308
location: https://www.example.com/docs/
content-type: text/plain
content-length: 0 Questions fréquentes
Une redirection 308 vaut-elle un 301 pour le SEO ?
Oui. La documentation de Google présente le 308 comme équivalent au 301 : tous deux sont des signaux forts que la cible doit être canonique.
Pourquoi mon site renvoie-t-il 308 au lieu de 301 ?
Votre framework ou votre hébergeur l’a probablement choisi. Next.js, par exemple, utilise 308 pour les redirections permanentes et la normalisation de la barre oblique finale. Ce n’est pas un problème pour le SEO.
Les navigateurs mettent-ils en cache les redirections 308 ?
Oui : comme les 301, elles sont mises en cache par défaut, et une erreur peut donc rester dans le navigateur des visiteurs. Pendant les tests d’une nouvelle redirection, envoyez une durée Cache-Control courte.