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.
Langues
1 indice probant sur cette page
- Outil en ligne associéHTTP Status & Redirect Checker
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 redirection permanente 308 signifie que la ressource a changé d’adresse définitivement — exactement comme avec une 301 — mais avec une garantie supplémentaire : la méthode de la requête ne peut pas être modifiée à la nouvelle adresse. Comme le navigateur répète la même requête au lieu d’en créer une nouvelle, son contenu (notamment les données d’un formulaire) est généralement conservé. Une soumission de formulaire reste donc une soumission, au lieu de devenir discrètement une simple visite de page. Pour les moteurs de recherche, les deux codes sont équivalents : pour une page ordinaire déplacée, une 301 suffit. Choisissez une 308 pour une API, un formulaire ou un autre appel qui doit parvenir intact à la nouvelle URL.
Qu’est-ce qu’une 308, exactement ?
Lorsqu’un serveur envoie votre navigateur d’une URL vers une autre, il accompagne la réponse d’un nombre : un code d’état. Certains de ces nombres signifient que la page a changé d’adresse définitivement :
- 301 — « Déplacée définitivement ». Le code de redirection permanente d’origine, le plus ancien ; il existe depuis les débuts du Web.
- 308 — « Redirection permanente ». Un code plus récent (ajouté à la spécification en 2015) qui accomplit le même travail, avec une garantie supplémentaire que la 301 n’offrait pas.
Cette garantie explique toute l’existence de la 308. La plupart du temps, lorsque vous consultez une page, votre navigateur envoie une requête simple appelée GET : « veuillez me donner cette page ». Mais lorsque vous envoyez un formulaire ou vous connectez, il envoie une requête POST qui transporte des données — ce que vous avez saisi. Avec une 301 ancienne, le navigateur peut techniquement transformer ce POST en simple GET en se rendant à la nouvelle URL, ce qui fait généralement disparaître les données. Une 308 lui interdit cette modification. Comme le navigateur répète la même requête au lieu d’en créer une nouvelle, les données sont normalement conservées. Si cela compte pour ce que vous construisez (appel d’API ou parcours de paiement), ne vous contentez toutefois pas de la spécification : testez la requête réelle et vérifiez que le corps arrive à la nouvelle URL.
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 RedirectUne 308 nuit-elle au SEO ?
Non. La documentation de Google dit littéralement qu’une 308 est “Equivalent to 301.” (traduction) : « équivalente à 301 ». Les deux sont des redirections permanentes et transmettent les signaux de classement de la page vers la nouvelle URL de la même manière. Bing les traite également de la même façon. Il n’y a ni bonus ni pénalité de classement : le choix porte sur le comportement technique décrit plus haut, pas sur les positions dans les résultats. 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
Alors, quand faut-il utiliser une 308 ?
Pour une page ordinaire qui a changé d’adresse — nouvelle URL, passage de http à https ou changement de domaine — une simple 301 est le choix facile et universel. Tous les navigateurs, plugins et outils d’hébergement la comprennent.
Utilisez une 308 lorsque ce que vous redirigez n’est pas une simple page :
- Une API appelée par un autre logiciel.
- Un formulaire ou une page de connexion qui envoie des données.
- Un webhook, c’est-à-dire une URL vers laquelle un autre service envoie automatiquement des requêtes.
Dans ces cas, vous ne pouvez pas vous permettre que la requête soit discrètement convertie et que les données soient perdues ; une 308 garantit que la méthode sera conservée.
Vous voulez l’historique de la spécification, les citations exactes de Google et de Bing, ainsi que des extraits de configuration prêts à copier-coller ? Passez à l’onglet Avancé.
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 simple | POST/PUT/DELETE avec un corps | |
|---|---|---|
| 301 | Se comporte comme une 308 | Peut être convertie en GET ; le corps peut être perdu |
| 308 | Se comporte comme une 301 | La méthode et le corps sont répétés tels quels |
| Signal SEO | Identique (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-Typesont 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/sanswww.
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.
Résumé IA
Une synthèse de la version avancée :
- 308 = permanente et strictement conservatrice de la méthode. Même message de « déplacement définitif » qu’une 301, avec une garantie que la 301 n’offre pas : le client ne doit pas modifier la méthode de la requête à la nouvelle URL. Un client conforme répète la même requête, et son corps suit le mouvement — vérifiez ce comportement de bout en bout avec votre propre client plutôt que de le supposer d’après la seule spécification.
- Équivalence SEO avec la 301. La documentation de Google dit qu’une 308 est “Equivalent to
301” (traduction) : « équivalente à301» ; Gary Illyes dit que Google fusionne la 308 avec la 301, et Fabrice Canel confirme que Bing les traite de la même manière. Il n’y a ni avantage ni pénalité de classement. (Les déclarations d’Illyes, Mueller et Canel sont rapportées par Search Engine Roundtable : vérifiez les sources originales avant de les considérer comme définitives.) - Pourquoi elle existe : HTTP disposait d’une redirection temporaire qui préserve la méthode (307) bien avant d’avoir son équivalent permanent. La RFC 7538 (2015) a comblé la lacune. La RFC 9110 renvoie à la 308 dans la définition de la 301 : une 301 “MAY change the request method from POST to GET… for historical reasons,” (traduction) : « PEUT changer la méthode de POST en GET… pour des raisons historiques », et “if this behavior is undesired, the 308… can be used instead.” (traduction) : « si ce comportement n’est pas souhaité, la 308 peut être utilisée à la place ».
- Utilisez une 308 pour : migrations d’API ou de version, déplacement d’URL de webhook, formulaires et parcours d’authentification en POST — partout où la perte de la méthode ou du corps casserait une fonctionnalité. Avant de changer, rejouez la méthode et la charge utile réelles en environnement de test et confirmez les en-têtes d’authentification, l’idempotence et le suivi des redirections par le client réel.
- Utilisez une 301 pour : pages ordinaires, HTTP→HTTPS, changements de domaine et normalisation — toutes des requêtes GET simples où la garantie de la 308 n’apporte rien et où la 301 est plus universellement prise en charge.
- Adoption : la prise en charge des navigateurs est solide (caniuse suit actuellement environ 96,5 % ou plus, avec des lacunes surtout dans des navigateurs abandonnés), mais la RFC 9110 conserve une réserve générale : la 308 est plus jeune et pourrait ne pas être reconnue partout. En 2026, cette réserve concerne surtout l’outillage (certains plugins de CMS, interfaces CDN/edge et anciens proxies ne proposent que 301/302/307). Vérifiez que votre couche de redirection peut réellement émettre une 308 ; notez aussi qu’elle est susceptible d’être mise en cache, de sorte qu’une mauvaise règle peut persister après son annulation.
- À noter : Google Drive réutilise « 308 Resume Incomplete » pour les envois interrompus — un usage qui n’est pas une redirection et qui rappelle la jeunesse de ce code.
Documentation officielle
Documentation de première main sur la 308, fournie par les moteurs de recherche et par la spécification HTTP.
- Codes d’état HTTP, erreurs réseau et DNS, et recherche Google — indique que la 308 est “Equivalent to
301,” (traduction) : « équivalente à301», rappelle qu’elle est sémantiquement différente mais traitée de la même façon, et précise la limite de 10 sauts. - Redirections et recherche Google — “The
301and308status codes mean that a page has permanently moved to a new location.” (traduction) : « les codes301et308signifient qu’une page a changé définitivement d’emplacement ». - Migration de site avec changement d’URL — recommande les redirections HTTP permanentes « telles que 301 et 308 » pour un déplacement définitif.
Spécification HTTP
- RFC 9110 — Sémantique HTTP — la spécification actuelle. Le §15.4.9 définit la 308 et reprend la réserve “much younger… might not be recognized everywhere” (traduction) : « beaucoup plus jeune… pourrait ne pas être reconnue partout » ; le §15.4.2 définit la 301 et renvoie à la 308 pour éviter la conversion indésirable de POST en GET.
- RFC 7538 — Code d’état HTTP 308 (redirection permanente) — la norme qui a introduit la 308 (avril 2015) et remplacé la RFC expérimentale 7238 (juin 2014).
Références
- MDN — Redirection permanente 308 — sémantique de conservation de la méthode et du corps, ainsi qu’usage non standard de Google Drive sous le nom « Resume Incomplete ».
- caniuse — Code d’état HTTP 308 — tableau de compatibilité des navigateurs (environ 96,5 % ou plus dans le monde).
Citations de la source
Déclarations publiques de Google, de Bing et de la spécification HTTP. Chaque lien renvoie directement au passage cité sur la page source.
Google — l’équivalence fondamentale
- “301 (moved permanently): Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.” (traduction) : « 301 (déplacement permanent) : Google suit la redirection et ses systèmes l’utilisent comme un signal fort indiquant que la cible doit être traitée. » — Documentation Google Search Central. Voir la citation
- “308 (moved permanently): Equivalent to
301.” (traduction) : « 308 (déplacement permanent) : équivalente à301. » Voir la citation - “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, ils restent sémantiquement différents ; utilisez le code approprié afin que les autres clients puissent en bénéficier. » Voir la citation
- “The
301and308status codes mean that a page has permanently moved to a new location.” (traduction) : « Les codes d’état301et308signifient qu’une page a changé définitivement d’emplacement. » Voir la citation
Gary Illyes, Google
- Sur la manière dont Google traite une 308 : “we just merge that with 301 so we really don’t care iirc.” (traduction) : « nous la fusionnons simplement avec la 301, cela nous est donc égal, si je me souviens bien ». Relaté mot pour mot par Search Engine Roundtable dans Google traite officiellement les redirections 308 comme les 301 (juillet 2021) — à confirmer auprès de la source originale avant usage définitif.
John Mueller, Google
- Sur l’usage non standard : “Google Drive uses a 308 redirect as a Resume Incomplete response to indicate to the client when an incomplete upload stalled. So that is a bit different. But you can use it as a normal redirect.” (traduction) : « Google Drive utilise une redirection 308 comme réponse Resume Incomplete pour signaler au client qu’un envoi incomplet s’est interrompu. C’est donc un peu différent, mais vous pouvez l’utiliser comme une redirection normale. » Relaté par Search Engine Roundtable dans Google peut traiter les redirections 308 comme les 301 (mai 2018) — à confirmer auprès de la source originale.
Fabrice Canel, Microsoft Bing
- “I accidentally deleted my reply, so confirming again: Bing treats 308 redirects the same as 301 redirects.” (traduction) : « J’ai supprimé ma réponse par accident ; je confirme donc à nouveau que Bing traite les redirections 308 comme les redirections 301. » Fabrice Canel sur X (septembre 2024), rapporté par Search Engine Roundtable dans Bing traite les redirections 308 comme les 301 — à confirmer auprès de la source originale.
RFC 9110 — la spécification de la sémantique HTTP
- Sur la raison d’être de la 308, dans la définition de la 301 : “For historical reasons, a user agent 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é à la place. » Lire la RFC 9110
- Sur l’adoption : la 308 “is much younger (June 2014) than its sibling codes and thus might not be recognized everywhere.” (traduction) : « est beaucoup plus récente (juin 2014) que ses codes frères et pourrait donc ne pas être reconnue partout. » Lire la RFC 9110
Cette redirection doit-elle être une 308 ?
Puisque la 301 et la 308 sont équivalentes pour le SEO, ce n’est pas une décision de classement. Une seule question compte : une requête autre que GET, avec un corps, est-elle concernée et votre couche de redirection peut-elle réellement émettre une 308 ? Suivez l’arbre ci-dessous.
Should I use a 308 for this redirect?
En bref : GET simple → 301 ; requête autre que GET à préserver (et que votre stack sait émettre) → 308. Les deux codes sont interchangeables pour le SEO ; la méthode de la requête et la capacité réelle de votre outillage sont les seuls critères de décision.
Mythes et erreurs à propos de la 308
Voici les modes d’échec que je rencontre le plus souvent.
« La 308 est meilleure pour le SEO que la 301. » Faux. La documentation de Google dit “Equivalent to 301,” (traduction) : « équivalente à 301 », et Illyes, Mueller et Canel confirment la parité. Aucun moteur ne traite la 308 comme supérieure pour le SEO. Le choix concerne la justesse de la méthode et du corps, jamais un avantage de classement.
« Il faut migrer toutes vos 301 existantes vers des 308. » C’est un changement sans intérêt et sans gain de classement. Si les requêtes redirigées sont de simples GET — la grande majorité des redirections de page à page — une 301 se comporte déjà de la même façon en pratique. Réservez le changement aux redirections qui transportent réellement une méthode autre que GET.
« La 308 n’est pas sûre parce qu’elle est récente. » C’est exagéré pour les navigateurs : la RFC 7538 a plus de dix ans, Google et Bing confirment la prise en charge côté moteur, et caniuse indique environ 96,5 % ou plus de compatibilité, les lacunes concernant surtout des versions abandonnées. La RFC 9110 conserve bien une réserve générale sur une 308 « plus jeune » qui pourrait ne pas être reconnue partout ; en 2026, cela concerne surtout l’outillage — tous les plugins de CMS, interfaces CDN et anciens proxies ne peuvent pas l’émettre — plutôt que les clients ou les moteurs de recherche.
« Une 301 abîmera toujours mes requêtes POST ou d’API. » C’est exagéré. De nombreux clients modernes conservent correctement le comportement ; le risque documenté est plus précisément la conversion POST-vers-GET que la RFC 9110 autorise « pour des raisons historiques », lorsqu’un client applique cette règle ancienne. La 308 supprime ce risque, sans prétendre corriger un échec universel garanti.
« La 308 est toujours un code de redirection. » Pas exactement. L’usage non standard « 308 Resume Incomplete » de Google Drive réutilise ce code pour un envoi interrompu, avec un sens complètement différent. Cela rappelle que l’usage réel de la 308 est plus jeune et moins stabilisé que celui de la 301.
Contraste utile — « les redirections permanentes font perdre le PageRank ». Ce n’est pas le thème principal de l’article, mais cela mérite une phrase : les recommandations de Google regroupent les 301 et 308 comme redirections permanentes utilisées pour traiter la nouvelle URL comme cible canonique. Cela décrit une continuité de traitement, pas une perte de valeur. Présentez-le comme le comportement documenté de Google plutôt que comme la garantie absolue qu’aucun PageRank ne puisse jamais être perdu ; la formulation limitée au signal canonique est celle que la source actuelle permet réellement d’affirmer.
Vérifier et mettre en œuvre une 308
La chose la plus utile à faire avec une 308 est de vérifier le véritable code d’état transmis sur le réseau : l’échec le plus courant n’est pas un problème de navigateur, mais une couche d’outillage qui dégrade silencieusement votre 308 en 301 (ou n’émet aucune redirection).
Vérifier le code d’état avec curl
# Show only the response headers; -I sends a HEAD request.
curl -sI https://example.com/old-path | head -n 1
# → HTTP/1.1 308 Permanent Redirect (what you want)
# → HTTP/1.1 301 Moved Permanently (your layer downgraded it)Pour confirmer que la méthode est réellement conservée sur un POST — tout l’intérêt d’une 308 — suivez la redirection avec -L et observez ce qui arrive. -X POST et --data ne restent un POST pendant le saut que si le serveur a renvoyé une 308 ou une 307 :
curl -sIL -X POST --data '{"sku":"A-100"}' \
-H 'Content-Type: application/json' \
https://api.example.com/v1/orders
# Inspect each hop's request line; a 308 keeps it "POST", a 301 may show "GET".Suivre une chaîne complète
Si le chemin comporte plusieurs sauts, affichez chaque code d’état de la chaîne afin de repérer une dégradation ou un saut supplémentaire inattendu :
curl -sIL https://example.com/old-path \
| grep -iE '^HTTP/'
# Each line is one hop. Collapse chains to a single hop where you can.Vérifier la mise en cache d’une 308 avant de l’annuler
La RFC 9110 rend la 308 susceptible d’être mise en cache heuristiquement : un client ou un intermédiaire peut décider de la mettre en cache même sans en-tête Cache-Control explicite. Une 308 erronée, ou une 308 que vous devez retirer, peut donc continuer à être servie par un cache longtemps après la correction de la règle d’origine. Avant de conclure qu’une redirection est « bloquée » :
- Testez avec un client vierge (navigation privée ou mode incognito, sans visite précédente) et avec un client qui a déjà consulté l’ancienne URL : les comportements avec et sans cache peuvent différer.
- Vérifiez les en-têtes
Cache-Control,ExpiresetAgeaveccurl -sI. - Testez séparément un GET simple et une requête représentative autre que GET ; la mise en cache peut varier selon la méthode.
- Si vous devez annuler une 308, purgez explicitement le cache edge/CDN. Ne supposez pas que supprimer la règle d’origine suffit, et attendez-vous à ce que les clients qui ont déjà mis l’ancienne redirection en cache ne la redemandent pas spontanément.
Console Chrome DevTools : vérifier une redirection depuis le navigateur
Paste into le DevTools Console (F12 → Console) à voir le final URL et état sans leaving lune page. A manual-redirection récupérer reports le premier réponse’s état directement:
// Reports the status of the first response (the redirect itself), not the target.
fetch('https://example.com/old-path', { method: 'HEAD', redirect: 'manual' })
.then(r => console.log('type:', r.type, 'status:', r.status || '(opaqueredirect)'));
// Follow the chain and log where it lands:
fetch('https://example.com/old-path', { method: 'HEAD', redirect: 'follow' })
.then(r => console.log('final URL:', r.url, 'final status:', r.status));Bookmarklet : vérifier en un clic ce que renvoie une URL
Faites glisser un favori contenant cette URL, puis cliquez dessus depuis n’importe quelle page. Il vous demandera une URL et affichera son état final ainsi que l’URL d’arrivée :
javascript:(function(){var u=prompt('URL to check:',location.href);if(!u)return;fetch(u,{method:'HEAD',redirect:'follow'}).then(function(r){alert('Final status: '+r.status+'\nLanded on: '+r.url);}).catch(function(e){alert('Error: '+e);});})();Mettre en œuvre une 308 sur le serveur
Apache (.htaccess) — utilisez mod_rewrite avec un R=308 explicite :
RewriteEngine On
RewriteRule ^old-path/?$ /new-path [R=308,L]nginx — return 308 est précis et sans ambiguïté :
location = /old-path {
return 308 https://example.com/new-path;
}Express.js (Node) — transmettez le code d’état à redirect() :
app.all('/api/v1/orders', (req, res) => {
// 308 keeps the POST body intact on the way to /api/v2/orders
res.redirect(308, '/api/v2/orders');
});Next.js — définissez permanent: true ; Next émet alors une 308 (les redirections permanentes de Next sont des 308) :
// next.config.js
module.exports = {
async redirects() {
return [
{ source: '/api/v1/:path*', destination: '/api/v2/:path*', permanent: true },
];
},
};Le comportement d’un framework ou d’une couche d’hébergement varie selon les versions. La gestion des redirections par Next.js, par exemple, peut différer selon la version et selon l’endroit où la redirection est déclenchée : entrée redirects() de next.config.js, appel à permanentRedirect() dans une Server Action ou réponse en streaming ne produisent pas nécessairement le même code d’état. La même prudence vaut pour les versions des modules Apache/nginx et pour tout CDN ou proxy placé devant votre origine. Considérez chaque extrait comme un point de départ, pas comme une garantie, et vérifiez la documentation actuelle de votre version.
Après le déploiement, relancez la vérification curl -sI ci-dessus pour confirmer que le réseau transporte effectivement une 308 — c’est l’étape que beaucoup oublient, puis regrettent.
Outils pour confirmer une 308 sur le réseau
Outils gratuits de Patrick
- Redirect Checker — tracez une URL ou un petit lot d’URL ; confirmez que la première réponse est
308, que la destination est correcte et que la chaîne aboutit à une réponse finale saine. - Bulk HTTP Status Code Checker — vérifiez jusqu’à 500 URL migrées, filtrez les réponses 301/302/307 inattendues et exportez les chaînes ou boucles à corriger.
Prouver le comportement strict quand c’est important
curlavec une charge utile de test sûre — rejouez la méthode réelle contre un endpoint de test ou non destructif, puis suivez la redirection. Confirmez que la source émet une 308.- Journaux de la passerelle applicative ou d’API — vérifiez que la cible a reçu la même méthode, le même type de contenu et le même corps. Un vérificateur de redirection prouve le code et la destination ; les journaux de réception prouvent la conservation de la méthode de bout en bout.
- Panneau Réseau de Chrome DevTools — utile pour les formulaires et l’authentification, mais testez séparément les clients de webhook et d’API : l’interopérabilité est précisément la raison de choisir une 308 plutôt qu’une 301.
- Inspection d’URL de Google Search Console — pour les URL indexables, confirmez que le déplacement permanent est traité comme une 301 et que la destination est la canonique sélectionnée.
Testez vos connaissances : redirection permanente 308
Cinq questions rapides sur la nature de la 308, sa raison d’être et la manière dont les moteurs de recherche la traitent. Choisissez une réponse, puis vérifiez.
Ressources utiles
Mes articles
- 11 types de redirections et leur impact SEO (avec Joshua Hardwick) — ma définition de la 308, l’idée qu’elles sont identiques pour le SEO mais différentes pour les formulaires, et la hiérarchie où 308 et 301 occupent le premier niveau.
- Codes d’état HTTP et leur impact SEO — l’explication selon laquelle une 308 « fonctionne comme une 301, sauf qu’elle ne permet pas de passer de POST à GET », et que les 308 sont traitées comme les 301 et consolident les signaux.
- Une migration de site réussie demande plus qu’une checklist — pourquoi choisir une 301 ou une 308 (et non 302/307) pour un déplacement permanent.
- Le guide du débutant en SEO technique — la place des redirections dans une stratégie plus large.
Dans le secteur
- Redirections et recherche Google — guide officiel de Google, qui nomme ensemble 301 et 308 comme options permanentes.
- Codes d’état HTTP, erreurs réseau et DNS, et recherche Google — documentation qui qualifie la 308 d’« équivalente à 301 » tout en rappelant leur différence sémantique.
- RFC 9110 — Sémantique HTTP — spécification actuelle ; sa définition de la 301 renvoie à la 308 pour éviter la conversion POST-vers-GET indésirable.
- RFC 7538 — Code d’état HTTP 308 (redirection permanente) — norme qui a introduit la 308.
- MDN — Redirection permanente 308 — sémantique de la méthode et du corps, et note sur l’usage « Resume Incomplete » de Google Drive.
- caniuse — Code d’état HTTP 308 — tableau de compatibilité qui permet de relativiser le mythe d’une 308 fragile.
- Bing traite les redirections 308 comme les 301 (Search Engine Roundtable) — confirmation de Fabrice Canel en 2024.
- Google traite officiellement les redirections 308 comme les 301 (Search Engine Roundtable) — contexte de la déclaration de Gary Illyes et de sa confirmation dans la documentation.
Journal des modifications
Mis à jour le 9 août 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 8 août 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
Mis à jour le 17 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.
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.