Rediriger une page Web

Il est parfois nécessaire de rediriger vos visiteurs sur une autre page.

Exemples :

  • une page d'accueil rapide à charger redirige après un certain laps de temps le visiteur vers une page plus complète.
  • après un test d'autentification, le visiteur atteint soit une page d'accès privé soit une page dont les informations sont accessibles à tous.
  • utiliser des pages différentes en fonction du navigateur du visiteur, ou en fonction de la langue de son système.
  • rediriger le visiteur vers un nouveau site, et signaler aux moteurs de recherche que l'ancien site n'est plus valide.
  • etc.

Il existe plus d'une technique de redirection, et le choix d'une méthode ou d'une autre sera dépendant des motivations (voir exemples ci-dessus).

Contents Haut

Redirection avec les Meta-Tags

Ce type de redirection présente l'avantage de pouvoir spécifier un délais pendant lequel la page sera affichée avant de renvoyer le visiteur vers une autre page. Dans le cas où la valeur du délais vaut zéro, la redirection est immédiate, mais le client doit quand-même charger les en-têtes de la page pour que le navigateur puisse déterminer la page à charger.

  1. <meta http-equiv="refresh" content="20; URL=http://www.gaudry.be/infobrol.html" />
  2. <title>Accueil rapide</title>
  3. </head>
  4. <h1>Bienvenue sur le site</h1>
  5. <p>Vous allez bientôt &ecirc;tre redirig&eacute;s vers la page d'accueil compl&egrave;te</p>
  6. </body>
  7. </html>

La portion de code qui nous intéresse est la suivante :

  1. <meta http-equiv="refresh" content="20; URL=http://www.gaudry.be/infobrol.html" />

Contents Haut

Redirection en JavaScript

Si vous désirez tester une valeur en JavaScript, puis rediriger le visiteur en fonction de cette valeur, vous pouvez utiliser du code JavaScript.

Comme nous l'avons vu dans la partie consacrée au langage JavaScript, ce code est exécuté côté client (sur la machine du visiteur). Cela signifie que la page doit être chargée avant d'interpréter le code (ce qui pose des problèmes si vous désirez cacher une partie de la page aux visiteurs qui ne sont pas habilités à consulter ce contenu).
Un autre problème intervient avec ce genre de code : certains internautes désactivent la prise en charge du JavaScript, et nous ne sommes donc pas assurés de son exécution.

  1. <script language="javascript" type="text/javascript">
  2. //Recherche de l'information de langage
  3. if (navigator.browserLanguage)
  4. var language = navigator.browserLanguage;
  5. else
  6. var language = navigator.language;
  7. //Redirections en fonction du langage
  8. if (language.indexOf('fr') > -1)
  9. document.location.href = 'page_francais.html';
  10. else if (language.indexOf('nl') > -1)
  11. document.location.href = 'page_neerlandais.html';
  12. else if (language.indexOf('en') > -1)
  13. document.location.href = 'page_anglais.html';
  14. else if (language.indexOf('de') > -1)
  15. document.location.href = 'page_allemand.html';
  16. else
  17. //si la langue n'est pas dans celles citées ci dessus
  18. document.location.href = 'page_francais.html';
  19. </script>

La portion de code qui nous intéresse est la suivante :

  1. document.location.href = 'xxx.html';

Contents Haut

Redirection en PHP : la fonction header()

Si le visiteur ne doit pas avoir accès au contenu du reste de la page, il est nécessaire d'utiliser un traitement côté serveur.
Un autre avantage de ce type de fonction est que l'effet est plus rapide : la nouvelle page est immédiatement envoyée par le serveur au lieu de l'ancienne.


Code php (Redirection PHP) (4 lignes) :
  1. <?php
  2. header("Location: https://www.gaudry.be/infobrol.html");
  3. exit();
  4. ?>

Retenons en passant qu'il est possible de signifier que le document est définitivement déplacé :


Code php (Redirection permanente en PHP) (5 lignes) :
  1. <?php
  2. header("Status: 301 Moved Permanently");
  3. header("Location: https://www.gaudry.be/infobrol.php");
  4. exit();
  5. ?>

Contents Haut

English translation

You have asked to visit this site in English. For now, only the interface is translated, but not all the content yet.

If you want to help me in translations, your contribution is welcome. All you need to do is register on the site, and send me a message asking me to add you to the group of translators, which will give you the opportunity to translate the pages you want. A link at the bottom of each translated page indicates that you are the translator, and has a link to your profile.

Thank you in advance.

Document created the 07/04/2005, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/html-redirections.html

The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.