301, 302, 307, 308 : quelle redirection utiliser
Choisir la mauvaise redirection peut laisser une ancienne URL dans Google pendant des mois, ou transformer l’envoi d’un formulaire en requête GET qui perd ses données. Voici la signification de chaque code de statut, lequel utiliser, et comment vérifier que vos redirections se comportent correctement.
Les quatre redirections en un coup d’œil
| Statut | Permanente ? | Conserve la méthode et le corps ? | À utiliser pour |
|---|---|---|---|
301 Moved Permanently | Oui | Non garanti (un POST peut devenir GET) | Pages déplacées, HTTP → HTTPS, changements de domaine |
302 Found | Non | Non garanti | Déplacements courts, tests A/B, maintenance |
307 Temporary Redirect | Non | Oui | Déplacements temporaires d’endpoints API et de formulaires |
308 Permanent Redirect | Oui | Oui | Déplacements permanents d’endpoints API qui reçoivent des POST |
Pour le SEO, Google considère les codes 301 et 308 comme des signaux forts indiquant que la nouvelle URL doit remplacer l’ancienne, et leur transmet les signaux de classement. Les codes 302 et 307 demandent à Google de conserver l’ancienne URL dans son index. Le détail de chaque code figure dans la référence Codes de statut HTTP.
Lequel choisir
- Page déplacée définitivement (nouveau slug, article fusionné, nouveau domaine) → 301.
- HTTP vers HTTPS, www vers sans www → 301 (ou 308).
- Temporaire (page de promotion, maintenance, redirection selon la géolocalisation ou la langue) → 302.
- Un endpoint API ou un gestionnaire de formulaire a été déplacé → 308 (permanent) ou 307 (temporaire), pour que les données POST ne soient pas perdues.
Éviter les chaînes et les boucles
Une chaîne est /a → /b → /c : chaque saut ajoute un aller-retour, et les robots d’indexation peuvent cesser de suivre après plusieurs sauts. Une boucle (/a → /b → /a) rend la page totalement inaccessible. Après une migration, pointez chaque ancienne URL directement vers sa destination finale. Vérifiez le chemin complet de n’importe quelle URL (chaque saut, statut et délai) avec le Redirect Checker, y compris pour vérifier que les versions http, https, www et sans www aboutissent toutes au même endroit.
Règles à copier-coller
Apache (.htaccess) :
Redirect 301 /old-page /new-page
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Nginx :
location = /old-page { return 301 /new-page; }
server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
Vercel (vercel.json) : "permanent": true envoie un 308, que Google traite comme un 301.
{ "redirects": [ { "source": "/old-page", "destination": "/new-page", "permanent": true } ] }
Transformez un tableur d’anciennes → nouvelles URL en règles pour n’importe quel serveur avec le Redirect Generator, ou générez une configuration Apache complète avec le .htaccess Generator.
Checklist de migration
- Associez chaque ancienne URL à la nouvelle la plus pertinente, et non toutes à la page d’accueil, que Google traite comme une soft 404.
- Utilisez 301 (ou 308) pour les déplacements permanents, et conservez-les pendant au moins un an.
- Mettez à jour les liens internes et le sitemap avec les nouvelles URL, pour que les redirections ne servent que de filet de sécurité.
- Testez un échantillon d’anciennes URL, puis surveillez les 404 dans le rapport Pages de la Search Console.