Les redirections

Rare doivent être les webmasters qui non jamais eu besoin un jour ou l'autre d'effectuer une redirection et pourtant nombreuses sont les raisons qui nous y amènent. Erreur dans le titre d'une page, mauvaise architecture, page supprimé, changement de serveur, etc...

Avant tout, c'est quoi une redirection?

Une redirection est un bout de code qui permet de rediriger l'internaute et/ou les robots des moteurs de recherches vers une autre page ou partie d'un site. Il existe plusieurs types de redirections ayant des conséquences différentes, encore faut il savoir la quelle utiliser !

Rediriger une page vers une autre page en PHP :

<?php   
  header('Location: ma-page.php');   
?>
Cette redirection permet uniquement de rediriger une page vers une autre page suite à une action comme par exemple, un espace membre nécessitant une inscription. L'internaute s'inscrit et est ensuite redirigé vers son espace perso par l'intermédiaire de ce code.
Ce type de redirection redirige uniquement le visiteur et ne permet pas de rediriger les moteurs de recherches!

Redirection 301 en PHP

Une redirection 301 indique aux moteurs de recherches un changement permanent de l'adresse de la page.
<?php
header("Status : 301 Moved Permanently");
header("Location: http://www.votresite.com/nouvelle-page.php");
exit();
?>
Ce type de redirection est utile quand une page comporte des liens vers elles. Pour éviter une erreur de type 404 et de perdre les liens acquis, on utilise alors ce type de redirection.

Redirection 302 en PHP

Une redirection 302 indique aux moteurs de recherches que la page est temporairement déplacée.
<?php
header("Status: 302 Moved Temporarily", false, 302);
header("Location: http://www.votresite.com/page-temporaire.php");
exit();
?>

Supprimer définitivement une page

Pour supprimer une page définitivement, il faut renvoyer un code HTTP 410 qui indique que la ressource n'est plus disponible :
<?php
header("Status: 410 Gone", false, 410);
exit();
?>
Rien ne vous empêche d'utiliser en plus une redirection le temps que la page soit désindexée des moteurs :
<?php
header("Status: 410 Gone", false, 410);
header("Location: http://www.votresite.com/nouvelle-page.php");
exit();
?>

Redirection au moyen d'une méta-tags

La redirection au moyen d'une balise méta se fait de la façon suivante :
<meta http-equiv="refresh" content="1;url=page.html" />
Ce type de redirection redirige uniquement le visiteur et ne permet pas de rediriger les moteurs de recherches!

Redirection Javascript

Une redirection en JavaScript est réalisée de la façon suivante :
<script type="text/javascript">location.href = 'nouvelle-page.html';</script>
ou encore :
<script language="javascript" type="text/javascript">
<!-- window.location.replace("http://www.votresite.com/nouvelle-page.htm"); -->
</script>
Ce type de redirection redirige uniquement le visiteur et ne permet pas de rediriger les moteurs de recherches!

Redirection par .htaccess

Rediriger définitivement une page :
RedirectPermanent /ma-page.php http://www.votresite.com/nouvelle-page.php

Rediriger définitivement une page contenu dans un dossier vers une autre page :
RedirectPermanent /dossier/ma-page.php  http://www.votresite.com/nouvelle-page.php

Rediriger définitivement un répertoire et toutes ses pages vers un autre répertoire :
RedirectPermanent /repertoire   http://www.votresite.com/dossier/nouveau-repertoire
ou :
RewriteRule /repertoire  /dossier/nouveau-repertoire [R=301]

Rediriger temporairement un répertoire vers une page :
RewriteRule /repertoire  /ma-page.php [R=302]

Rediriger définitivement un répertoire vers un site :
RedirectPermanent /repertoire   http://www.votresite.com/

Rediriger définitivement un site vers un autre site :
Redirect 301 / http://www.nouveau-site.com/
ou :
RedirectPermanent / http://www.nouveau-site.com/

Si la racine du site d’origine est située dans un répertoire :
Redirect 301 /dossier-du-site/ http://www.nouveau-site.com/
Lorsque pour une raison ou une autre on est ammené à rediriger un site en entier vers un autre, cela implique que l'architecture du nouveau site soit identique à l'ancien site.

Rediriger les www d'un site

L'adresse d'un site comporte 3w (http://www.votresite.com) et il est donc utile d'un point de vu référencement de rediriger cette adresse en prenant en compte ou pas les 3w de celui-ci pour éviter d'accéder au site par 2 adresses différentes. Cette action se réalise par l'intermédiaire du fichier .htaccess.

Adresse du site sans 3w :
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.votresite.com$
RewriteRule ^(.*)   http://votresite.com/$1  [QSA,L,R=301]
Adresse du site avec 3w :
RewriteEngine on
RewriteCond %{HTTP_HOST} ^votresite.com$
RewriteRule ^(.*)   http://www.votresite.com/$1  [QSA,L,R=301]

Rediriger l'index ou page d'accueil d'un site

La page d'accueil d'un site est généralement accessible par l'intermédiaire d'une page nommé "index.php", ce qui signifie alors que l'adresse principal du site est accessible par 2 url pour un même contenu (duplicate content) soit : "http://votresite.com et http://votresite.com/index.php". Pour éviter cela, insérez ce code tout en haut de votre fichier "index.php" :
<?php
//Redirige index.php
if($_SERVER['REQUEST_URI'] == "/index.php") 
{ 
header("HTTP/1.1 301 Moved Permanently"); 
header("Location: http://".$_SERVER['HTTP_HOST']."/"); 
exit; 
}
?>
Note : une redirection PHP, donc par "header location" doit être placé avant tout renvoi de texte sous peine d'obtenir un beau message d'erreur!
Voir/déposer un commentaire (6) | Signaler un problème