sentimancho.'>

Eviter les conflits d’URL

Dans certaines situations, il peut arriver qu’une même page (ou un site entier) puisse être accessible de la même manière par deux URL différentes. Pour éviter les soucis d’indexation (Duplicate Content ou tout simplement mauvaise indexation) la solution la plus simple est une redirection vers l’adresse préférée. La suite de l’article propose quelques lignes php qui automatiseront la redirection sur toutes les pages d’un sous domaine.

La base des headers http:

Lors de l’envoi d’une page à un navigateur la première chose que fait le serveur est d’envoyé le header de la page. Ce header informe le navigateur sur la réussite ou non de la requête. L’erreur la plus célèbre que vous connaissez est sûrement l’erreur 404. Mais si la page renvoyée est trouvée convenablement, il faut aussi l’annoncer au navigateur; on envoit dans ce cas un code 200. Voici une liste des headers http qui peuvent être renvoyés par une page web.

Lorsqu’un robot de moteur de recherche (aussi appelés spider ou crawler) il reçoit quasiment les mêmes informations qu’un navigateur comme Mozilla Firefox ou Internet Explorer. Dans le cas d’une redirection, il est donc nécessaire d’avertir les visiteurs (et donc les crawlers) que votre page se situe dorénavant à une autre URL (l’officielle). Ceci est l’office l’entête 301 : redirection permanente.

Le code de la redirection :

Prenons l’exemple du site que j’héberge sur les serveurs de l’Ecole Centrale Marseille. Comme de nombreuses universités, l’école offre un espace web à ses étudiants, et celui-ci est accessible à l’adresse principale :

http://perso.ec-marseille.fr/~nom_eleve

On remarquera tout d’abord le sous domaine ‘perso‘ qui permet de traiter les pages des élèves par un serveur dédié à cela (le site de l’école et les autres services comme l’email se trouvent sur un autre serveur). Chaque étudiant possède un répertoire accessible par ~nom_eleve. Ceci est possible grâce au module userdir de Apache. Ce module sera étudié dans un autre post.

Dans notre cas, les administrateurs de l’Ecole ont décidé de simplifier l’accès à une page en créant des URL rewrite qui pointent vers cette adresse principale. Ces adresses sont de la forme :

http://nom_eleve.perso.ec-marseille.fr

Le problème à présent, c’est que les moteurs de recherche peuvent accéder aux pages par ces deux adresses. Comment forcer l’accès uniquement par l’adresse principale? Voilà le script utilisé en début de chacune de mes page :

<?php
	$cond_uri="www.perso.ec-marseille.fr";
	$access=$_SERVER['HTTP_HOST'];
	if ($access == $cond_uri){
		$new_uri="http://perso.ec-marseille.fr".$_SERVER['REQUEST_URI'];
		header("Status: 301 Moved Permanently", false, 301);
		header("Location: $new_uri");
		exit();
	}
?>


Explications :

La variable $cond_uri contient l’adresse URL que je veux rediriger ailleurs. Pourquoi ne ressemble-t-elle pas simplement à “perso.ec-marseille.fr” ? Je n’ai pas compris, mais pour savoir quelle adresse choisir, il vous suffit de faire une page avec un petit :

<?php
     echo ($_SERVER['HTTP_HOST']);
?>


Rendez-vous alors sur cette page par l’adresse à rediriger et notez la valeur affichée. C’est avec elle qu’il faut remplir la variable $cond_uri.

$_SERVER['HTTP_HOST'] : adresse de l’hôte

$_SERVER['REQUEST_URI'] : page appelée (avec options éventuelles)

La commande header( ) permet d’envoyer un header particulier au navigateur. Cela renseignera le moteur qu’il doit dorénavant ne plus considérer que l’adresse officielle (redirection permanente).

Remarque importante : la fonction header( ) doit toujours être placé en début de page. Aucune information ne doit être affichée avant. Le script ci-dessus doit donc être placé en début de vos page web.

Posts similaires

  • Aucun posts relatifs pour le moment

3 Responses to “Eviter les conflits d’URL”

  1. Florian Says:

    Tu évoques les erreurs 301 pour signaler au moteur de ne plus prendre en compte une url plutôt qu’une autre et j’ai une question à ce sujet : est-ce que ça permet de conserver son référencement si on change de nom de domaine et que l’on met une redirection 301 sur l’ancien ndd ou bien est-ce qu’on perd tout le référencement gagné sur le premier ndd ?


  2. Jice Says:

    Normalement, c’est justement fait pour conserver “un minimum” le référencement déjà gagné sur la page d’avant.

    Je dit minimum car les moteurs ne peuvent pas allouer, juste avec une 301, la même notoriété (pagerank) par exemple à ta nouvelle adresse. En effet, il suffirait au spammeur de faire rediriger une ferme de blogs (en multitude) en 301 vers un nouveau site pour qu’il gagne automatiquement un bon PR.

    Il y a d’autre considération à prendre en compte, mais à savoir : si tu ne fais pas de redirection tu risque d’une part d’avoir du “duplicate content”, et d’autre part, tu n’auras aucun référencement sur ton nouveau ndd.

    A bon entendeur…


  3. réserver un nom de domaine Says:

    J’adore vraiment ce que vous faites, bravo !!! Merci bien de partager avec nous cet article.


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">