Redirection permanente 308 — méthode HTTP

Comprenez la redirection HTTP 308, la conservation stricte de la méthode et du corps, son équivalence SEO avec la 301 et les cas adaptés aux API, formulaires et webhooks.

Première publication : 28 juin 2026 · Dernière mise à jour : 9 août 2026 · Advanced
Langues
1 indice probant sur cette page

Une 308 est une redirection permanente qui conserve la méthode HTTP et le corps de la requête. Elle est équivalente à une 301 pour le SEO, mais utile lorsqu’une requête POST, une API ou un webhook doit arriver intact à la nouvelle URL. Contrairement aux comportements historiques possibles avec 301 et 302, elle garantit la préservation de la méthode, comme la 307 temporaire.

TL;DR — Une 308 est la redirection permanente qui préserve strictement la méthode : elle envoie le même signal de canonisation qu’une 301 (la documentation de Google dit “Equivalent to 301.” (traduction) : « équivalente à 301 »), mais garantit que le client ne modifie pas la méthode à la nouvelle URL. Comme un client conforme répète la même requête, son corps est également transporté. Ce code existe parce que HTTP disposait d’un code temporaire qui préserve la méthode (307) bien avant d’avoir son équivalent permanent : la RFC 7538 (2015) a comblé cette lacune, et la RFC 9110 renvoie maintenant directement à la 308 dans sa définition de la 301. Pour le SEO, les deux sont interchangeables (Illyes dit que Google « fusionne » la 308 avec la 301 et Canel confirme la parité chez Bing). Choisissez une 308 lorsqu’une requête autre que GET doit survivre : migration d’API ou de version, URL de webhook, formulaire ou parcours d’authentification en POST. Vérifiez toutefois la conservation de la méthode et du corps avec votre propre client plutôt que de la supposer d’après la seule spécification. Sinon, la 301 reste le choix par défaut : la prise en charge des navigateurs est solide en 2026, mais certaines interfaces de CMS, règles edge et anciennes passerelles ne proposent encore que 301/302/307.

Ce que signifie mécaniquement une 308

Une redirection permanente 308 porte le même message qu’une 301 — la ressource se trouve désormais, définitivement, à une nouvelle URL — avec un ajout que la 301 n’a jamais garanti : le client ne doit pas modifier la méthode de la requête à la cible. Comme il répète la même requête plutôt que d’en émettre une nouvelle, le corps est envoyé avec elle pour un client conforme à la spécification. C’est une conséquence de la garantie sur la méthode, pas une promesse certifiée séparément ; vérifiez donc le comportement de bout en bout avec votre propre client et votre serveur. MDN décrit la 308 comme le code qui conserve la méthode de la requête (et, en pratique, le corps) pendant la redirection, contrairement à une 301 qui ne l’impose pas.

Voici la version en anglais que j’utilise dans le guide des redirections d’Ahrefs : “A 308 redirect is the same as a 301 redirect, except it retains the HTTP method of the original request, GET or POST, when performing the redirect.” (traduction) : « Une redirection 308 est identique à une redirection 301, sauf qu’elle conserve la méthode HTTP de la requête d’origine, GET ou POST, lors de la redirection. » Plus court, dans le guide des codes d’état HTTP : “308 Permanent Redirect – Has the same functionality as a 301 redirect, except you can’t switch between POST and GET.” (traduction) : « Une redirection permanente 308 fonctionne comme une 301, sauf qu’il est impossible de passer de POST à GET. » Evidence for this claim RFC 7538 defines 308 Permanent Redirect as a permanent move whose redirect follow-up must not change the request method. Scope: HTTP semantics for 308 responses. Confidence: high · Verified: IETF: RFC 7538 §3 — 308 Permanent Redirect

Rendons la différence concrète. Supposons qu’un client envoie une commande en POST à /api/orders, avec un corps JSON :

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

{ "sku": "A-100", "qty": 2 }

Si ce point d’accès répond par une 301 et que le client applique l’ancienne règle autorisant le passage à GET, la requête peut arriver à la nouvelle URL sous la forme d’un GET vide : le corps a disparu et la commande est perdue. Avec une 308, le client doit répéter le POST à la nouvelle URL ; un client conforme transporte le corps et la commande aboutit. Vérifiez ce comportement dans les journaux de votre propre client et de votre serveur (voir l’onglet Scripts) plutôt que de le supposer universel. C’est toute la différence pratique : elle ne se manifeste que lorsque la requête d’origine n’était pas un simple GET.

Pourquoi la 308 existe : l’historique de la spécification

C’est la partie que la plupart des explications rapides omettent, et la manière la plus claire de comprendre ce code.

Le 307 est arrivé en premier. HTTP possédait déjà une redirection temporaire qui préserve la méthode — la 307 — bien avant d’avoir un équivalent permanent. La spécification centrale d’origine (RFC 7231) n’a jamais défini de pendant permanent à la 307. Il existait donc un code temporaire qui conserve la méthode et un code permanent (301) qui peut la modifier, mais aucun code permanent qui la conserve.

La RFC 7538 a comblé cette lacune. La 308 a été ajoutée précisément pour devenir la 307 permanente manquante : d’abord sous la forme expérimentale de la RFC 7238 (juin 2014), puis standardisée par la RFC 7538 (avril 2015). Elle bouche un véritable trou de la spécification ; elle ne remplace pas la 301.

La spécification actuelle la désigne directement. La RFC 9110, spécification actuelle de la sémantique HTTP, documente toujours l’ambiguïté intégrée à la 301 et nomme ensuite la 308 comme solution dans sa définition de la 301 : un agent utilisateur “MAY change the request method from POST to GET for the subsequent request… If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead.” (traduction) : « Pour des raisons historiques, un agent utilisateur PEUT changer la méthode de POST en GET pour la requête suivante… Si ce comportement n’est pas souhaité, le code d’état 308 (redirection permanente) peut être utilisé. » Cette phrase explique à elle seule pourquoi la 308 existe, directement dans la spécification de référence. Dans sa propre section consacrée à la 308, la RFC 9110 ajoute la réserve honnête suivante : ce code “is much younger (June 2014) than its sibling codes and thus might not be recognized everywhere.” (traduction) : « est beaucoup plus récent (juin 2014) que ses codes frères et pourrait donc ne pas être reconnu partout. »

Le passage POST-vers-GET de la 301 n’est donc pas un bug : c’est une possibilité documentée « pour des raisons historiques », intégrée à la spécification. La 308 est la manière officiellement prévue de s’en affranchir.

301 ou 308 : la différence pratique en un tableau

Requête GET simplePOST/PUT/DELETE avec un corps
301Se comporte comme une 308Peut être convertie en GET ; le corps peut être perdu
308Se comporte comme une 301La méthode et le corps sont répétés tels quels
Signal SEOIdentique (permanent, consolidation)Identique (permanent, consolidation)

À retenir : pour l’immense majorité des redirections — qui sont de simples GET — une 301 et une 308 font exactement la même chose. La garantie n’a de valeur que lorsqu’une méthode autre que GET, accompagnée d’un corps, intervient. Pour la comparaison complète, consultez l’article dédié aux différences entre 301 et 308.

Google traite-t-il une 308 comme une 301 pour le SEO ?

Oui, sans ambiguïté, et c’est documenté. La documentation des codes d’état HTTP de Google présente la 301 comme une redirection que Google “use[s]… as a strong signal that the redirect target should be processed,” (traduction) : « utilise comme un signal fort indiquant que la cible de la redirection doit être traitée », et présente la 308 comme simplement “Equivalent to 301.” (traduction) : « équivalente à 301 ». Elle ajoute une réserve raisonnable : “While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (traduction) : « Même si Google traite ces codes d’état de la même manière, gardez à l’esprit qu’ils sont sémantiquement différents. Utilisez le code approprié afin que les autres clients puissent en bénéficier. » En clair, Google ne vous pénalisera pas pour avoir choisi le mauvais code, mais vous devez employer celui qui correspond réellement à la requête, car d’autres logiciels dépendent de cette distinction. Evidence for this claim Google treats 308 as equivalent to 301 for Search and groups both as permanent redirects. Scope: Google Search processing; the two status codes remain semantically different for HTTP clients. Confidence: high · Verified: Google: HTTP status codes and Search Google: Redirects and Google Search

La documentation de Google sur les redirections place les deux codes dans la même catégorie recommandée : “The 301 and 308 status codes mean that a page has permanently moved to a new location.” (traduction) : « Les codes d’état 301 et 308 signifient qu’une page a changé définitivement d’emplacement. » Les recommandations de migration de site citent d’ailleurs explicitement les redirections permanentes « telles que 301 et 308 », sans traiter la 308 comme une simple variante secondaire de la 301.

Il faut savoir que cette parité n’a pas toujours été documentée. Gary Illyes a expliqué que Google fusionne les 308 avec les 301 en interne, et la couverture de Search Engine Roundtable situe l’arrivée dans la documentation officielle au moment où une remarque informelle est devenue une information exploitable. Pour retrouver les formulations exactes de Google et de ses représentants, consultez l’onglet Citations.

Bing traite-t-il une 308 comme une 301 ?

Oui. Bing ne possède pas de page documentaire dédiée qui explique la 308 comme le fait Google, mais Fabrice Canel, de Microsoft, l’a confirmé directement sur X en septembre 2024, comme le rapporte Search Engine Roundtable : Bing traite les redirections 308 comme les redirections 301. C’est la déclaration de référence pour Bing ; l’onglet Citations en reprend la formulation exacte.

Quand utiliser réellement une 308

C’est ici que se trouve le cas d’usage propre à la 308 : presque toujours une requête autre que GET.

Migration de point d’accès ou de version d’API. Déplacer /v1/ vers /v2/ ou changer l’hôte d’une API est le cas classique. Les clients utilisent ces points d’accès avec POST/PUT/PATCH/DELETE et de vrais corps de requête. Une 308 garantit que la méthode et la charge utile survivent au saut ; une 301 risque une conversion silencieuse qui abandonne la requête.

Migration de site riche en POST. Les parcours de paiement, les points d’accès de connexion et les cibles d’envoi de formulaires transmettent tous des données en POST. Si l’une de ces URL change pendant une migration, une 308 conserve la soumission là où une 301 pourrait la modifier.

Changement d’URL de webhook. Lorsqu’un autre service envoie un POST vers un webhook que vous déplacez, une 308 indique à son client HTTP de refaire le POST à la nouvelle adresse avec le corps intact : exactement ce dont le consommateur du webhook a besoin.

Le point commun est simple : utilisez une 308 partout où perdre le corps ou convertir silencieusement la méthode en GET casserait une fonctionnalité, et pas seulement pour déplacer un peu de valeur SEO.

Avant d’activer l’une de ces redirections, testez-la comme une intégration, pas comme un simple code d’état :

  • Rejouez la méthode et la charge utile réelles contre une copie de test du nouvel endpoint.
  • Vérifiez si les en-têtes d’autorisation ou les cookies doivent être transmis, puis contrôlez qu’ils le sont effectivement.
  • Si la requête d’origine n’est pas idempotente (par exemple un POST qui crée une commande), surveillez les effets secondaires en double pendant le saut.
  • Vérifiez que la chaîne de requête et l’en-tête Content-Type sont conservés, pas seulement le corps.
  • Vérifiez que le client réel — émetteur du webhook, SDK d’API ou navigateur — suit automatiquement une 308 avant de retirer l’ancien endpoint. Tous les clients HTTP ne le font pas par défaut.

Pourquoi la 301 reste le choix pragmatique par défaut

Pour tout ce qui est un simple GET, la 301 reste le choix raisonnable :

  • Changements d’URL de pages ou de contenu ordinaire.
  • Migrations de HTTP vers HTTPS.
  • Changements de domaine et migrations de site classiques.
  • Normalisation de la barre finale et de www/sans www.

Ici, la requête est un simple GET : la garantie de la 308 ne vous apporte rien et la 301 gagne en universalité. Aucun coût SEO ne distingue les deux. Ne migrez pas en masse vos 301 existantes vers des 308 dans l’espoir d’améliorer le classement : ce bénéfice n’existe pas. Dans la hiérarchie des préférences de redirection du guide Ahrefs, les 308 et 301 occupent ensemble le niveau supérieur, devant les actualisations meta, JavaScript et autres contournements : ce sont des équivalents, pas des échelons.

Adoption et compatibilité : quel est le risque réel en 2026 ?

La prise en charge des navigateurs n’est plus le risque pratique d’autrefois. Selon le suivi actuel de caniuse, la 308 bénéficie d’environ 96,5 % ou plus de prise en charge mondiale — consultez le tableau en direct, car le chiffre évolue. Les lacunes visibles concernent surtout des navigateurs abandonnés depuis longtemps : versions antérieures à IE11, anciennes versions de Chrome, Firefox et Safari, et ancien navigateur Android. Si vous voyez encore l’avertissement « IE11 échoue avec la 308 », il est obsolète pour le trafic courant.

L’outillage constitue la réserve actuelle. En 2026, le véritable manque est que toutes les couches ne proposent pas une option 308. Certains plugins de redirection de CMS, certaines interfaces de règles CDN ou edge, ainsi que d’anciens reverse proxies et load balancers ne permettent encore de choisir que 301/302/307. Avant de retenir une 308, vérifiez que la couche qui sert réellement la redirection peut l’émettre et ne la dégrade pas silencieusement ; l’onglet Scripts donne une commande d’une ligne pour contrôler le code d’état transmis sur le réseau. La réserve de la RFC 9110 sur un code « beaucoup plus récent » concerne les déploiements en général, pas seulement les navigateurs.

Note non standard : « 308 Resume Incomplete »

Une particularité montre à quel point ce code reste jeune : dans la pratique, la 308 n’est pas uniquement un code de redirection. L’API d’envoi de Google Drive réutilise 308 avec un sens entièrement différent — « Resume Incomplete » — pour signaler qu’un envoi par morceaux s’est interrompu et que le client doit le reprendre. John Mueller l’a signalé (voir l’onglet Citations) et MDN documente le même usage non standard. Cela ne change rien à la 308 de redirection, mais illustre qu’elle est plus récente et moins stabilisée culturellement que la vénérable 301.

Les chaînes et les sauts de redirection fonctionnent de la même manière

Rien de ce qui précède ne change le fonctionnement des chaînes de redirections. Les robots de Google suivent par défaut jusqu’à 10 sauts — mais il s’agit d’une valeur par défaut, pas d’une constante universelle ; la documentation de Google précise que certains produits peuvent différer (son outil d’inspection d’URL, par exemple, ne suit aucune redirection). Vérifiez donc le chiffre actuel dans la documentation plutôt que de le considérer comme immuable. Cette limite est identique pour des sauts en 301 ou en 308. Si vous empilez les redirections, par exemple pour un ancien chemin d’API qui en traverse deux avant d’aboutir, appliquez la même hygiène contre les chaînes et les boucles : réduisez-les à un seul saut lorsque c’est possible. Consultez l’article consacré aux chaînes de redirections pour les détails techniques.

Try it live

This is a real endpoint on this site — not a simulation. Hit it from the button, open it in a new tab, or curl -i it from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.