Ressources pour développeur web

Théme de la semaine : Snippets utiles

Redirection HTTP en PHP : Le guide complet pour débutant

Temps de lecture estimé : 6 minutes
Accueil PHP 8 Redirection HTTP en PHP : Le guide complet pour débutant

Vous avez sûrement déjà été redirigé automatiquement d’une page à une autre sans même vous en rendre compte. Vous tapez une URL… et hop, vous arrivez ailleurs. La solution tient en un mécanisme simple mais essentiel : la redirection HTTP. En PHP, elle permet de diriger automatiquement vos utilisateurs vers la bonne page.

Que ce soit pour corriger un lien cassé, sécuriser votre site en HTTPS ou gérer une connexion utilisateur, la redirection PHP devient rapidement indispensable. Bien maîtrisée, elle améliore à la fois l’expérience utilisateur et le référencement naturel.

  • Fonctionne une redirection HTTP et savoir quand l’utiliser pour améliorer l’expérience utilisateur et le SEO.
  • Mettre en place une redirection PHP fiable et sans erreurs, même en étant débutant.
  • Utiliser les redirections dans des cas concrets (connexion, formulaire, HTTPS) pour rendre votre site plus professionnel et sécurisé.

Dans ce tutoriel, vous allez apprendre à maîtriser la redirection PHP de A à Z avec des exemples concrets que vous pourrez utiliser immédiatement sur vos projets.

Comprendre la redirection HTTP (sans se prendre la tête)

Avant de coder quoi que ce soit, prenons 2 minutes pour comprendre ce qu’il se passe réellement.

Quand un utilisateur accède à une page web, son navigateur envoie une requête à un serveur. Le serveur répond… mais il ne renvoie pas toujours une page. Il peut aussi dire :

“Cette page a changé d’adresse, va plutôt ici.”

C’est exactement ça, une redirection HTTP.

Redirection HTTP en PHP

En pratique, le serveur renvoie un code HTTP (comme 301 ou 302) + une nouvelle URL.

👉 Pour en savoir plus : Les codes de statut HTTP.

Pourquoi utiliser une redirection PHP ?

La redirection PHP est utilisée dans énormément de cas. Vous allez vite reconnaître des situations que vous avez déjà rencontrées :

  • Vous avez changé l’URL d’un article ou d’une page sur votre site web → vous devez rediriger l’ancienne URL vers la nouvelle.
  • Vous avez un formulaire de contact → après validation, vous redirigez vers une page de confirmation.
  • Vous gérez une connexion utilisateur → si l’utilisateur n’est pas connecté, vous le redirigez vers la page login.

Vous voyez le point commun ? On guide l’utilisateur sans qu’il s’en rende compte.

Et ça, c’est à la fois du confort… et du SEO.

Les bases de la redirection en PHP

Entrons maintenant dans le vif du sujet. En PHP, une redirection se fait avec la fonction header().

Voici la version la plus simple :

header("Location: https://example.com");
exit;

Oui, c’est tout.

Mais attention… derrière cette simplicité se cachent deux règles extrêmement importantes :

Règle n°1 : Aucune sortie avant header()

C’est l’erreur classique du débutant. Si vous avez ne serait-ce qu’un espace, un echo ou du HTML avant le header, ça casse tout.

❌ Mauvais exemple :

echo "Bonjour";
header("Location: page.php");

Résultat : erreur “headers already sent”

Parce que PHP a déjà commencé à envoyer la page au navigateur. Il est trop tard pour modifier les en-têtes HTTP.

Règle n°2 : Toujours utiliser exit()

Après une redirection PHP, il faut arrêter le script.

header("Location: page.php");
exit;

Sinon, votre code continue de s’exécuter… et peut provoquer des comportements étranges (voire dangereux).

Les codes de redirection HTTP (très important pour le SEO)

Toutes les redirections HTTP ne se valent pas. Et ça, Google y est très sensible.

Redirection 301 (permanente)

C’est LA redirection SEO par excellence.

header("Location: nouvelle-page.php", true, 301);
exit;
  • Cela signifie : “Cette page a changé définitivement”.

Google transfère le SEO vers la nouvelle page.

Redirection 302 (temporaire)

header("Location: page-temporaire.php", true, 302);
exit;
  • Cela signifie : “C’est temporaire”

Google garde l’ancienne URL en mémoire.

Petit conseil simple

Si vous hésitez :

  • Changement définitif → redirection 301
  • Test ou redirection temporaire → redirection 302

Exemple concret : rediriger après un formulaire

Imaginez que vous avez un formulaire de contact.

  • Sans redirection, si l’utilisateur recharge la page… le formulaire se renvoie (et ça peut faire des doublons).

Il faut donc utiliser une redirection après traitement :

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // traitement du formulaire
    
    header("Location: merci.php");
    exit;
}

Ainsi, l’expérience utilisateur est propre et professionnelle.

Redirection conditionnelle : Le vrai pouvoir de PHP

Là, on commence à faire des choses intéressantes.

Prenons le cas d’un espacé privé, il faut effectuer une redirection si l’utilisateur est non connecté :

session_start();

if (!isset($_SESSION['user'])) {
    header("Location: login.php");
    exit;
}

Très utilisé dans les espaces membres, admin, …

Formation web et informatique - Alban Guillier - Formateur

Des formations informatique pour tous !

Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…

Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.

Découvrez mes formations Qui suis-je ?

Il existe aussi la redirection selon l’âge :

if ($age < 18) {
    header("Location: interdit.php");
    exit;
}

Simple… mais redoutablement efficace.

Mais également la redirection selon la langue :

$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

if ($lang === 'fr') {
    header("Location: /fr/");
} else {
    header("Location: /en/");
}
exit;

Idéal pour internationaliser votre site.

Redirection interne vs externe

C’est une subtilité importante.

Redirection externe

header("Location: https://google.com");
  • On envoie l’utilisateur vers un autre site.

Redirection interne

header("Location: /contact.php");
  • On reste sur votre site.

Petit conseil : privilégiez les chemins absolus (/page.php) pour éviter les bugs.

Attention aux erreurs courantes

On va gagner du temps en évitant les pièges classiques.

1. Oublier exit()

Votre script continue… et peut casser la logique.

2. Espaces avant <?php

   <?php
header("Location: page.php");

Ces espaces peuvent suffire à casser votre redirection HTTP.

3. Mauvais encodage (BOM)

Certains éditeurs ajoutent un BOM invisible. Cela provoque une erreur incompréhensible.

Solution : enregistrer en UTF-8 sans BOM.

Le BOM (pour Byte Order Mark) est une sorte de signature invisible placée tout au début d’un fichier texte. Elle sert de « carte d’identité » pour indiquer au logiciel qui ouvre le fichier deux choses importantes : que le texte est encodé en Unicode (souvent en UTF-8) et dans quel sens les octets doivent être lus. Le petit bémol : Certains programmes anciens ou certains langages de programmation ne le comprennent pas et peuvent afficher des symboles étranges au tout début du document.

Redirection PHP vs .htaccess : que choisir ?

C’est une excellente question qui mérite quelques précision :

Redirection PHP

✔ Dynamique
✔ Basée sur des conditions
✔ Idéale pour les logiques métier

Redirection .htaccess

✔ Très rapide
✔ Gérée côté serveur
✔ Parfaite pour le SEO massif

Exemple .htaccess

Redirect 301 /ancienne-page /nouvelle-page
  • Si vous avez 100 redirections SEO → .htaccess
  • Si vous avez une logique métier → PHP

👉 Découvrez comment utiliser le fichier le fichier .htaccess pour les redirections 301, 302, 307,…

Redirection PHP avec paramètres

Parfois, vous devez transmettre des données.

$id = 42;
header("Location: page.php?id=" . $id);
exit;

Sur la page cible :

echo $_GET['id'];

Ce principe est souvent utilisé dans les applications web.

Sécurité : attention aux redirections ouvertes

Voici un piège classique.

header("Location: " . $_GET['url']);

Danger !

Un utilisateur peut injecter une URL malveillante.

Solution sécurisée

$allowed = ['page1.php', 'page2.php'];

if (in_array($_GET['url'], $allowed)) {
    header("Location: " . $_GET['url']);
    exit;
}

Pensez à toujours valider les URLs avant d’effectuer une redirection PHP.

Astuce UX : redirection avec message

Vous pouvez améliorer l’expérience utilisateur. Prenons le cas d’un formulaire :

header("Location: merci.php?success=1");
exit;

Puis, affichez un message de confirmation :

if (isset($_GET['success'])) {
    echo "Votre message a bien été envoyé !";
}

Simple… mais efficace.

Cas pratique : forcer la redirection vers le HTTPS

Très utile pour le SEO et la sécurité.

if (!isset($_SERVER['HTTPS']) || $_SERVER['HTTPS'] !== 'on') {
    header("Location: https://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], true, 301);
    exit;
}

Votre site passera automatiquement en HTTPS.

Cas pratique : rediriger une ancienne URL

if ($_SERVER['REQUEST_URI'] === '/ancien-article') {
    header("Location: /nouvel-article", true, 301);
    exit;
}

Cette redirection PHP est parfaite pour garder votre SEO intact.


La redirection HTTP en PHP est l’un de ces outils simples en apparence… mais absolument indispensables dès que vous créez un site sérieux. Elle vous permet de contrôler le parcours de vos visiteurs, d’éviter des erreurs frustrantes, et surtout de préserver votre référencement.

En réalité, maîtriser la redirection PHP, c’est un peu comme apprendre à guider vos utilisateurs sans qu’ils s’en rendent compte. Et quand c’est bien fait, tout semble fluide, naturel, presque invisible. C’est exactement ce qu’on recherche dans une bonne expérience web.