Comment faire une redirection (redirect) en PHP ?

En PHP, il est possible d'effectuer des redirections pour changer de page web avant qu'elle ne s'affiche. Voici comment faire.

Le langage PHP est un langage exécuté par le serveur, notamment pour afficher des pages web. Il est possible d'effectuer des redirections pour changer de page web avant qu'elle ne s'affiche.

Pour effectuer une redirection en PHP, on utilise la fonction header(). Cette fonction envoie des entêtes HTTP au serveur. Pour effectuer une redirection, il faut envoyer l'entête Location : suivi de l'URL de la nouvelle page. Pour que cela fonctionne, il est conseillé d'utiliser une URL absolue. Une URL relative sera cependant prise en compte dans la plupart des cas. Il ne faut pas afficher de texte ou du HTML auparavant sinon cela déclenchera l'affichage d'une erreur. Il est conseillé d'utiliser systématiquement la fonction die() ou exit() juste après, afin d'éviter le cas de robots ne comprenant pas les redirections HTTP et qui continuent l'exécution du code.

header(Location : . $monUrl);
Exit();

La fonction header() peut utiliser deux autres paramètres. Le deuxième paramètre indique si l'entête s'ajoute aux entêtes précédemment envoyés (false) ou s'il les remplace (true, la valeur par défaut). Le dernier paramètre est le code de statut HTTP envoyé au navigateur. Par défaut, une redirection génère le code HTTP 302. Il est cependant possible d'utiliser le code 301 pour indiquer une redirection permanente, ou bien 303 pour indiquer une redirection autre (ce code n'est pas compatible avec certains robots).

//redirection permanente
header(Location : . $monUrl, true, 301);
Exit();

Si vous avez la PECL pecl_http installée sur votre serveur, vous pouvez faire appel à la fonction http_redirect() qui effectue directement une redirection HTTP.

Si vous avez déjà affiché du texte ou du HTML sur votre page Web, les fonctions PHP ne fonctionneront plus et provoqueront une erreur. Vous pouvez dans ce cas utiliser une balise HTML meta qui indique la redirection :

<meta http-equiv=Location content=http://monsite.fr/>

Le langage JavaScript peut également effectuer des redirections. Il faut pour cela utiliser la méthode window.location.replace().

window.location.replace(http://monsite.fr/);

PHP