Un 301 (Moved Permanently) indique aux navigateurs et moteurs de recherche que l'ancienne URL est remplacée pour de bon : ils doivent utiliser et indexer la nouvelle. Un 302 (Found) indique que le contenu est à une autre URL seulement pour l'instant : l'ancienne doit donc rester en usage. Utilisez un 301 pour les changements de domaine, les migrations HTTPS et les URL restructurées ; utilisez un 302 pour les déplacements de courte durée, comme les pages de maintenance ou les tests.
En un coup d'œil
| Code | Nom | Signification | Méthode en suivant |
|---|---|---|---|
| 301 | Moved Permanently | Permanent | Peut changer POST en GET |
| 302 | Found | Temporaire | Peut changer POST en GET |
| 303 | See Other | Aller chercher avec GET | Toujours GET |
| 307 | Temporary Redirect | Temporaire | Même méthode et même corps |
| 308 | Permanent Redirect | Permanent | Même méthode et même corps |
301 et 302 en pratique
| 301 | 302 | |
|---|---|---|
| Cache du navigateur | Mis en cache agressivement | Généralement pas mis en cache |
| Moteurs de recherche | Traitent la nouvelle URL comme durable | Gardent l'ancienne URL indexée |
| Usage typique | HTTP vers HTTPS, changements de domaine ou d'URL | Maintenance temporaire, tests A/B, routage selon la localisation |
| Coût d'une erreur | Difficile à défaire à cause du cache | Les moteurs peuvent ne pas passer à la nouvelle URL |
Vérifiez ce que fait réellement une URL avec le traceur de chaîne de redirection HTTP, qui liste chaque saut et son code de statut, et cherchez les codes inconnus dans la recherche de code de statut HTTP. Pour écrire les règles de redirection d'un serveur Apache, utilisez le générateur de redirections .htaccess.
Lequel choisir ?
- Le contenu a déménagé pour de bon : 301 (ou 308 pour les requêtes autres que GET).
- Déplacement bref ou conditionnel : 302 (ou 307 pour conserver la méthode).
- Après l'envoi d'un formulaire, orienter vers une page de résultats : 303.
- En cas de doute : commencez par un 302 et passez à un 301 quand vous êtes certain, car les redirections permanentes sont mises en cache.
- Évitez les chaînes : pointez les anciennes URL directement vers la destination finale, pas via plusieurs redirections.
La liste complète des codes se trouve dans Aide-mémoire des codes d'état HTTP et Redirection définit le terme.