TL;DRUne redirection 301 indique un déplacement permanent : Google transfère l'indexation vers la nouvelle URL. Une 302 est temporaire : l'ancienne URL reste en général celle qui s'affiche dans les résultats. Les codes 308 et 307 en sont les équivalents qui conservent la méthode HTTP ; pour une refonte, utilisez des 301 directes, sans chaîne, maintenues au moins un an.

Une page change d'adresse, un site passe en HTTPS, une boutique est refondue : il faut rediriger. Le choix du code HTTP n'est pas un détail. Il indique aux navigateurs et à Google si le déplacement est définitif ou provisoire, et donc quelle adresse doit apparaître dans les résultats de recherche. Voici les différences entre 301, 302, 307 et 308, leur effet sur le référencement, et la mise en place sur les serveurs et CMS les plus courants.

301, 302, 307, 308 : le tableau de référence#

Toutes ces réponses appartiennent à la famille 3xx, définie par la RFC 9110 (sémantique HTTP). Le serveur renvoie le code et un en-tête Location contenant la nouvelle adresse ; le navigateur la charge aussitôt. Deux questions distinguent les codes : le déplacement est-il permanent, et la méthode HTTP de la requête (GET, POST…) est-elle conservée ?

CodeNomDuréeMéthode conservéeUsage typiqueLecture par Google
301Moved PermanentlyPermanenteNon garantie : un POST peut devenir GETURL modifiée pour de bon, passage en HTTPS, choix www ou sans wwwSignal fort : la cible devient l'URL canonique
302FoundTemporaireNon garantieMaintenance, page saisonnière, redirection provisoireSignal faible : la source reste en général affichée
303See OtherTemporaireNon : toujours GETPage de confirmation après l'envoi d'un formulaireTraitée comme temporaire
307Temporary RedirectTemporaireOuiRedirection provisoire d'une requête POST ou d'une APISignal faible, comme la 302
308Permanent RedirectPermanenteOuiDéplacement définitif d'une API ou d'un point d'envoi de formulaireSignal fort, comme la 301

La différence entre 301 et 308, ou entre 302 et 307, ne concerne donc que la méthode. Historiquement, les navigateurs transformaient un POST redirigé en 301 ou 302 en simple GET, et la RFC 9110 l'autorise toujours. Les codes 307 et 308 ont été créés pour interdire ce changement. Pour une page web classique consultée en GET, 301 et 308 ont le même effet pratique.

Dans les outils de développement de Chrome, vous verrez parfois une « 307 Internal Redirect » de http:// vers https:// que votre serveur n'a jamais envoyée. C'est le navigateur lui-même qui applique la politique HSTS du site. Pour savoir ce que répond réellement votre serveur, testez avec curl, comme expliqué plus bas.

Quel impact sur le SEO ?#

La documentation Google Search Central sur les redirections est claire : une redirection permanente (301 ou 308) est utilisée comme un signal fort que la cible doit devenir l'URL canonique, et c'est elle qui s'affiche dans les résultats. Une redirection temporaire (302, 303 ou 307) est un signal faible : Google suit la redirection, mais l'URL source a de bonnes chances de rester celle qui est indexée.

Conséquence directe : utiliser une 302 pour un déplacement définitif, par exemple après une refonte, retarde la consolidation sur les nouvelles URL. À l'inverse, une 301 posée pour une simple maintenance de quelques heures peut faire remplacer votre page par la page d'attente. Le bon code dépend de la question : « reviendrai-je un jour à l'ancienne adresse ? ».

SituationCode conseillé
Passage de HTTP à HTTPS, choix entre www et sans www301
Article ou fiche produit renommé, URL réécrite après refonte301
Changement de nom de domaine301, page par page
Produit temporairement indisponible, renvoyé vers sa catégorie302
Page de maintenance de courte durée302 ou 307
Point d'entrée d'API ou formulaire POST déplacé définitivement308
Page supprimée sans équivalentPas de redirection : 404 ou 410

Deux autres consignes de Google comptent pour une migration. Ne redirigez pas en bloc de nombreuses anciennes URL vers une destination sans rapport, comme la page d'accueil : Google peut les traiter comme des erreurs 404 « soft ». Et gardez les redirections le plus longtemps possible, en général au moins un an. Pour les pages sans équivalent, notre article sur l'erreur 404 explique comment les traiter proprement. Les redirections par balise meta refresh ou par JavaScript existent aussi, mais Google recommande les redirections côté serveur chaque fois que c'est possible.

Les chaînes de redirection, ennemies discrètes#

Une chaîne apparaît quand les redirections s'accumulent au fil des années : http:// vers https://, puis sans www vers www, puis l'ancienne URL vers la nouvelle. Chaque saut ajoute un aller-retour réseau avant l'affichage. Googlebot suit jusqu'à 10 redirections, mais Google recommande de viser directement la destination finale, et sinon d'en rester à 3 au plus. Au-delà, le risque de créer une boucle augmente à chaque nouvelle règle, jusqu'à l'erreur ERR_TOO_MANY_REDIRECTS.

Schéma comparant une chaîne de trois redirections 301 et une redirection unique vers la nouvelle URL
Schéma simplifié : trois sauts pour atteindre la page finale contre une seule redirection directe vers l'adresse définitive.

La règle pratique : chaque ancienne variante d'une URL doit pointer directement vers son adresse finale, en HTTPS et avec le bon nom d'hôte. Quand vous modifiez une redirection existante, mettez aussi à jour celles qui pointaient vers l'ancienne cible.

Mettre en place une redirection#

Apache : .htaccess#

Pour quelques URL, la directive Redirect du module mod_alias suffit. RedirectMatch accepte une expression régulière :

Redirect 301 /ancienne-offre /nouvelle-offre
RedirectMatch 301 ^/blog/[0-9]{4}/(.+)$ /blog/$1

Si le fichier contient déjà des règles mod_rewrite (c'est le cas de WordPress et PrestaShop), restez sur RewriteRule pour maîtriser l'ordre d'exécution, et placez vos règles au-dessus des blocs du CMS :

RewriteEngine On
RewriteRule ^ancienne-offre/?$ /nouvelle-offre [R=301,L]

nginx#

Dans nginx, la directive return est la plus simple et la plus rapide. rewrite … permanent envoie une 301 à partir d'une expression régulière :

location = /ancienne-offre {
    return 301 /nouvelle-offre;
}

rewrite ^/blog/[0-9]{4}/(.+)$ /blog/$1 permanent;

Pour une liste de dizaines d'URL après une refonte, un bloc map évite d'empiler les location :

# dans le bloc http
map $uri $redirection_cible {
    default         "";
    /ancienne-offre /nouvelle-offre;
    /contactez-nous /contact;
}

# dans le bloc server
if ($redirection_cible) {
    return 301 $redirection_cible;
}

Validez toujours avec nginx -t avant systemctl reload nginx.

WordPress#

Quand vous modifiez le slug d'un article publié, WordPress mémorise l'ancien et redirige automatiquement en 301. Pour le reste (pages supprimées, refonte de la structure des permaliens), deux options : une extension de gestion des redirections, pratique pour les équipes non techniques, ou quelques lignes dans le fichier functions.php d'un thème enfant :

add_action( 'template_redirect', function () {
    $path = trim( wp_parse_url( $_SERVER['REQUEST_URI'], PHP_URL_PATH ), '/' );
    if ( 'ancienne-offre' === $path ) {
        wp_safe_redirect( home_url( '/nouvelle-offre/' ), 301 );
        exit;
    }
} );

Pour un volume important, préférez les règles serveur ci-dessus : elles s'exécutent avant le chargement de WordPress.

PrestaShop#

Dans le back-office, la rubrique Paramètres de la boutique > Trafic et SEO propose l'option « Redirection vers l'URL canonique » : choisissez la 301 une fois la boutique en ligne. Sur une fiche produit désactivée, l'onglet SEO permet de choisir le comportement : redirection 301 ou 302 vers un autre produit ou une catégorie, ou page 404 ou 410. Pour des redirections personnalisées dans le .htaccess, placez-les en dehors du bloc délimité par les commentaires ~~start~~ et ~~end~~ : PrestaShop régénère ce bloc et conserve ce qui se trouve à l'extérieur. Notre équipe agence PrestaShop prend en charge ces plans de redirection lors des migrations de boutique.

Symfony#

Dans un contrôleur, le troisième argument de redirectToRoute() fixe le code. Sans redirection applicative, le RedirectController du FrameworkBundle redirige directement depuis la configuration des routes :

// dans un contrôleur
return $this->redirectToRoute('nouvelle_offre', [], 301);

# config/routes.yaml
ancienne_offre:
    path: /ancienne-offre
    controller: Symfony\Bundle\FrameworkBundle\Controller\RedirectController
    defaults:
        route: nouvelle_offre
        permanent: true

Avec permanent: true, Symfony renvoie une 301. Ajoutez keepRequestMethod: true pour obtenir une 308 (ou une 307 sans permanent).

Vérifier ses redirections avec curl#

Un navigateur met les 301 en cache : après une erreur de configuration, il peut continuer à appliquer l'ancienne redirection. curl n'a pas ce problème. Pour voir la réponse d'une URL, sans suivre la redirection :

curl -sI https://www.example.com/ancienne-offre | grep -iE '^(HTTP|location)'

Pour compter les sauts jusqu'à la page finale et afficher son code :

curl -sL -o /dev/null -w '%{num_redirects} saut(s), %{http_code}, %{url_effective}\n' http://example.com/ancienne-offre

Et pour contrôler toute une liste d'anciennes URL (une par ligne dans anciennes-urls.txt) après une migration :

while read -r url; do
  printf '%s -> ' "$url"
  curl -sL -o /dev/null -w '%{num_redirects} saut(s), %{http_code}, %{url_effective}\n' "$url"
done < anciennes-urls.txt

Chaque ligne doit afficher 1 saut et un code 200. Plusieurs sauts signalent une chaîne à raccourcir, un code 404 une correspondance oubliée. Astuce pendant la mise au point : testez d'abord en 302, que les navigateurs ne mémorisent pas durablement, puis passez en 301 une fois les règles validées.

Checklist pour une refonte ou une migration#

  1. Inventoriez les anciennes URL : sitemap, pages qui reçoivent du trafic dans la Search Console, pages qui ont des liens externes.
  2. Associez chaque ancienne URL à son équivalent le plus proche. Sans équivalent, laissez une 404 ou une 410 plutôt qu'une redirection vers l'accueil.
  3. Mettez en place des 301 directes, sans chaîne, au niveau du serveur de préférence.
  4. Mettez à jour les liens internes, les balises canonical et le sitemap pour qu'ils pointent vers les nouvelles URL, sans passer par une redirection.
  5. Vérifiez toute la liste avec curl le jour de la mise en ligne, puis suivez les rapports d'indexation de la Search Console pendant plusieurs semaines.
  6. Conservez les redirections au moins un an.

Pour la suite, notre audit SEO détaille les autres points techniques à contrôler après une migration.

Notre conseil#

Avant de toucher aux redirections, mesurez l'état de départ. Notre analyse de site web gratuite donne en moins d'une minute une note Lighthouse sur 100, les Core Web Vitals et un plan d'action, avec un appel de 45 minutes offert pour mettre en place les corrections. Si vous préparez une refonte ou un changement de domaine, faites-vous accompagner par un expert SEO : le plan de redirection se prépare avant la mise en ligne, pas après la chute du trafic.

Questions fréquentes#

Une redirection 301 fait-elle perdre du référencement ?#

Google utilise une 301 comme un signal fort pour indexer la nouvelle URL à la place de l'ancienne. La redirection doit pointer vers une page équivalente : rediriger vers une page sans rapport ou vers l'accueil peut être traité comme une erreur 404 soft.

Quelle est la différence entre une 302 et une 307 ?#

Les deux sont temporaires. Avec une 302, le navigateur peut transformer une requête POST en GET ; la 307 interdit ce changement de méthode. Pour une page consultée normalement, l'effet est le même.

Combien de temps faut-il garder une redirection 301 ?#

Google recommande de conserver les redirections d'un changement d'URL le plus longtemps possible, en général au moins un an. Les liens externes et les favoris des visiteurs continuent souvent de pointer vers les anciennes adresses bien plus longtemps.

Pourquoi mon navigateur suit-il encore une ancienne redirection ?#

Les navigateurs mettent les redirections 301 en cache. Testez avec curl ou en navigation privée, et utilisez une 302 pendant la mise au point des règles avant de passer en 301.

Faut-il rediriger une page supprimée qui n'a pas d'équivalent ?#

Non. Si aucun contenu ne la remplace, une réponse 404 ou 410 est plus juste qu'une redirection vers la page d'accueil, que Google peut considérer comme une erreur 404 soft.

Article publié le 13/11/2026 sous la signature de Jonathan Gutierrez, rédigé à partir des sources citées ci-dessus, puis relu avant publication. Une information vous semble inexacte ou datée ? Signalez-le nous, nous corrigeons.