Les redirections HTTP 301 et 302, permanentes ou temporaires ?

Articledéveloppement

Publié par le (150 lectures)

Les redirections HTTP sont des mécanismes essentiels pour gérer le routage et la navigation. Comprendre les différences entre les codes 301 et 302 est important pour tout projet web, que ce soit pour intervenir en développement, référencement ou planification. Faisons le tour en détails.

Redirections 301 ou 302

Différences principales entre 301 et 302

Redirection 301 - Moved Permanently

La redirection 301 Moved Permanently indique que la ressource a été déplacée de manière permanente vers une nouvelle adresse, ou URL. Cette redirection signale aux navigateurs et aux moteurs de recherche que l'ancienne URL ne sera plus jamais utilisée.

  • Les navigateurs la mettent en cache par défaut
  • Les moteurs de recherche remplacent l'ancienne URL par la nouvelle dans leurs index
  • Elle transfère l'autorité SEO ce qui permet de "préserver" dans une certaine mesure les acquis et ne pas perdre en référencement

Meme relatif à HTTP 301

Quand utiliser une redirection 301 permanente ?

En cas de refonte de site web : vous souhaitez

  • Rediriger une page ou un groupe de pages vers de nouveaux chemins exemple.com/ancienne-page → exemple.com/nouvelle-page
  • Fusionner des pages similaires
  • Supprimer des pages obsolètes (attention dans ce cas l'erreur 404 est prévue à cet effet et bien plus "compréhensible")
  • Changer de domaine : monsite.fr → monsite.com

En cas de migration HTTPS, c'est une démarche purement technique et globale si votre site vient de passer du protocole non sécurisé HTTP, vers le HTTPS (recommandé) : http://exemple.com → https://exemple.com

Redirection 302 - Found (Temporary Redirect)

La redirection 302 Found (Temporary Redirect) indique une redirection temporaire. L'URL originale reste valide et pourrait être utilisée à nouveau dans le futur.

  • On conserve l'URL originale dans les index des moteurs de recherche
  • Généralement il n'y a pas de mise en cache
  • On ne transfère pas l'autorité SEO vers la nouvelle URL

Meme relatif à HTTP 302

Quand utiliser une redirection 302 temporaire ?

  • Pour une maintenance temporaire : site.com → site.com/maintenance
  • Pour effectuer des tests A/B : avec une redirection conditionnelle vers différentes versions
  • Redirections géographiques temporaires : site.com → site.com/fr (pour les visiteurs en langue française)
  • Promotions limitées dans le temps : produit.com → produit.com/promo-noel

Implémentation technique

Les redirections HTTP se font, comme leur nom et protocole l'indique, au niveau du serveur HTTP.

Avec Apache 🪶

Dans la configuration du serveur web Apache ou dans un fichier .htacess la syntaxe est historiquement toujours la même, grâce au module rewrite et aux instructions Redirect ou RewriteRule en précisant le code de redirection HTTP avec le paramètre R=xxx.

Redirection 301 :

# Redirection simple avec Redirect
Redirect 301 /ancienne-page /nouvelle-page

# Redirection simple avec RedirectPermanent
RedirectPermanent /ancienne-page /nouvelle-page

Ces deux directives s'utilisent hors du contexte de mod_rewrite contrairement à RewriteRule qui permet d'ajouter des expressions régulières, des conditions, etc. Pour cela, il faut utiliser RewriteRule dans un bloc avec RewriteEngine On :

# Avec RewriteRule
RewriteEngine On
RewriteRule ^ancienne-page$ /nouvelle-page [R=301,L]

# Migration HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# Changement de domaine
RewriteCond %{HTTP_HOST} ^ancien-domaine\.com$ [NC]
RewriteRule ^(.*)$ https://nouveau-domaine.com/$1 [R=301,L]

Redirection 302 :

# Redirection temporaire
Redirect 302 /maintenance /page-maintenance

# Avec RewriteRule
RewriteRule ^promo$ /page-promo-temporaire [R=302,L]

💡 Dans ces exemples le paramètre L signifie Last, soit la dernière règle à suivre : il ne doit pas appliquer les règles suivantes dans le même bloc ou le même fichier de configuration. Cela permet d'optimiser les performances et d'éviter des conflits entre plusieurs règles.

Avec PHP 🐘

Moult langages de programmation back-end permettent d'effectuer ces mêmes redirections en renvoyant l'en-tête HTTP correspondant. En PHP c'est très simple grâce à la fonction header() qu'il faut appeler avant tout autre envoi de contenu (par exemple pas d'appel à echo auparavant).

Redirection 301 :

<?php
// Redirection 301 basique
header("Location: https://exemple.com/nouvelle-page", true, 301);
exit;
?>

Redirection 302 :

<?php
// Redirection 302 (par défaut)
header("Location: https://exemple.com/page-temporaire");
exit;

// Explicitement 302
header("Location: https://exemple.com/page-temporaire", true, 302);
exit;
?>

Avec Nginx

Configuration Nginx : avec une syntaxe un peu plus "moderne" que le vétéran Apache, cela reste assez lisible et explicite.

server {
    # Redirection 301
    location /ancienne-page {
        return 301 /nouvelle-page;
    }

    # Redirection 302
    location /page-temporaire {
        return 302 /autre-page;
    }

    # Migration HTTPS
    if ($scheme != "https") {
        return 301 https://$server_name$request_uri;
    }
}

Avec JavaScript (côté client)

⚠️ Attention : Les redirections JavaScript ne sont pas idéales pour le SEO car elles ne sont pas des redirections HTTP natives, dans ce cas elles ne sont pas du tout interprétées de la même façon par les navigateurs ou les robots d'indexation des moteurs de recherche.

// Redirection simple (équivalent à 302)
window.location.href = '/nouvelle-page';

// Ou
window.location.replace('/nouvelle-page');

Impact référencement / SEO

Toutes ces redirections ont toujours une signification pour les outils qui exploitent le protocole HTTP, à savoir les robots des moteurs de recherche en particulier. Vous pouvez aussi consulter la documentation Google Search Central à ce sujet.

Redirections 301

Avantages :

  • Transfert d'autorité : 90-99% du Page Rank est transféré
  • Consolidation des backlinks : Les liens pointant vers l'ancienne URL bénéficient à la nouvelle
  • Mise à jour des index : Les moteurs de recherche remplacent l'ancienne URL
  • Évite le contenu dupliqué

Précautions :

  • Éviter les chaînes de redirections (A → B → C)
  • Vérifier que la nouvelle page est pertinente par rapport à l'ancienne
  • Surveiller les erreurs 404 après implémentation

Redirections 302

Caractéristiques SEO :

  • Pas de transfert d'autorité : L'URL originale conserve son Page Rank
  • Conservation de l'indexation : L'ancienne URL reste dans les résultats de recherche
  • Risque de contenu dupliqué : Si utilisée de manière inappropriée

Bonnes pratiques :

  • Utiliser uniquement pour des redirections réellement temporaires
  • Éviter pour des changements permanents d'URL

Impact sur le cache navigateur

Le cache des navigateurs peut être sensible aux redirections.

Avec une redirection 301 (Permanente), les navigateurs et les moteurs de recherche mettent à jour leur cache pour pointer directement vers la nouvelle URL. Après la première redirection, le navigateur stocke la nouvelle URL et l’utilise directement pour les requêtes suivantes, sans repasser par la redirection. Ce qui peut être gênant pour tester à nouveau cette redirection, la reconfigurer avec une autre adresse, bref, utilisez le mode navigation privée pour ne pas influencer votre cache local.

La nouvelle URL est généralement cachée longtemps, selon les en-têtes Cache-Control ou Expires renvoyés par le serveur.

Avec une redirection 302 (Temporaire), l'impact est limité : les navigateurs ne mettent pas à jour leur cache pour la redirection. À chaque visite, le navigateur recontacte le serveur pour vérifier si la redirection est toujours active. La redirection est toujours exécutée, même après plusieurs visites.

Outils de diagnostic et debug

Outils de développement navigateur

Les Chrome DevTools ou Firefox Developer Tools sont vos meilleurs amis. Ouvrez le panneau, et utilisez l'onglet Réseau (ou Network). Cochez l'option Preserve log avant de naviguer pour conserver les traces de chaque requête (sinon elles sont vidées à chaque changement de page ou redirection) et visualiser toutes les étapes avec leurs codes de statut 301 ou 302. Cliquez sur chaque requête pour examiner les en-têtes HTTP en détails.

Devtools redirections pour le site adsl.free.fr

Sur cette capture on peut constater de multiples redirections successives (qui auraient pu être fusionnées en une seule) :

  • adsl.free.fr → 302 → free.fr
  • free.fr → 301 → www.free.fr
  • www.free.fr/freebox → 301 → www.free.fr/freebox/
  • finalement résultat HTTP 200 OK pour www.free.fr/freebox/ et livraison de la page

Outils en ligne

Capture d'écran du site httpstatus.io

Outils en ligne de commande

Curl

Le célèbre outil en ligne de commande cURL est très pratique pour analyser les redirections grâce à l'option -L.

curl -L --max-redirs 10 -v https://exemple.com/page 2>&1 | grep "Location:"

L'option -I (ou --head) permet d'envoyer une requête HEAD au serveur, plutôt qu'une requête GET complète ce qui est utile pour vérifier le statut HTTP de la réponse du serveur, sans télécharger le corps de la page (le contenu HTML, les images, etc.).

curl -I https://exemple.com/page

Si on combine, le tout en ajoutant encore -v pour avoir plus de détails, cela nous permet de suivre les redirections avec curl -L -I -v https://exemple.com/page

Cas d'erreurs courantes

Il est fréquent de se mélanger les pinceaux, outre le piège d'utiliser un code 302 au lieu de 301 pour un changement permanent, ce sont des bugs vite repérés et signalés par votre navigateur :

  • Les chaînes trop longues : en passant par A → B → C → D → E cela ralentit le chargement et rend difficile l'analyse du réseau et des bugs, cela alourdit le back-end "pour rien".

  • Les boucles de redirection : si votre script ou configuration provoque une boucle infinie A → B → A et ainsi de suite, il n'est plus possible de s'en sortir. En général le navigateur s'arrête au bout de 20 redirections et renvoie le code ERR_TOO_MANY_REDIRECTS pour éviter de saturer le réseau, la machine ou les attaques par déni de service.

Capture d'écran d'erreur de redirections

Bonnes pratiques

Avant Après
✅ Vérifier si la redirection est vraiment nécessaire ✅ Tester avec différents outils
✅ Choisir le bon type (301 vs 302) ✅ Vérifier les logs du serveur (par exemple dans /var/log/apache2)
✅ Tester sur un environnement de développement ✅ Surveiller via des outils externes tels que Google Search Console
✅ Vérifier l'absence de boucles

Les redirections HTTP 301 et 302 sont présentes depuis bien longtemps dans le protocole HTTP et restent très pertinentes, utilisées correctement : elles améliorent l'expérience utilisateur et préservent le référencement de votre site. Désormais vous savez tout sur le sujet et faire le choix entre une redirection permanente ou temporaire.

Commentaires

Dans les exemples de redirection 302, les noms de page choisis prêtent à confusion. Dans l'exemple Nginx, elles induisent même complètement en erreur. Au lieu de "page-temporaire" on s'attend putôt à y trouver quelque chose du genre "page-habituelle" et à retrouver "page-temporaire" (au lieu de "autre-page") comme page cible de la redirection.

Commenter

Vous devez être inscrit et identifié pour utiliser cette fonction.

Connectez-vous (déjà inscrit)

Oubli de mot de passe ? Pas de panique, on va le retrouver

Pas encore inscrit ? C'est très simple et gratuit.