Exemple d’utilisation de redirection d’URL


Web / dimanche, décembre 20th, 2009

Sur le web, vous trouverez de nombreux articles expliquant comment utiliser la redirection d’URL d’Apache pour améliorer le référencement de vos pages dans les moteurs de recherche.

Ce qu’il manque par contre partout, c’est une explication pour mettre à jour les moteurs de recherche. C’est ce que je vais tenter d’expliquer à partir d’un exemple simple.

Voici comment j’ai mis en place la solution principale :

Fichier .htaccess

#Rewrite URL
RewriteEngine On
RewriteRule ^(.*)-art-([0-9]+).html$  /article.php?idnews=$2 [L]

Ainsi, tout appel vers http://www.le-site-exemple/N-IMPORTE-QUOI-art-NUMERO.html sera transformé en interne en http://www.le-site-exemple/article.php?idnews=NUMERO

Autrement dit, vous pourrez mettre le titre de votre article dans l’URL et votre page sera mieux référencée.

C’est bien beau tout ça, mais encore faut-il :

  1. Utiliser cette redirection
  2. La signaler aux moteurs de recherches

Pour l’utiliser, il faut modifier tous les liens internes de votre site.

Pour le signaler aux moteurs de recherches, il faut utiliser une redirection HTTP (redirection de code 301)

Pour les deux cas, j’ai besoin d’une fonction PHP de ré-écritude correspondant à l’inverse de l’instruction du fichier .htaccess

function RewritedURI($type,$id,$title) {
    $title=substituteallspace(retireAccents($title));
    $title = eregi_replace(« [^A-Z0-9 ] », « -« , $title);
    $title= »$title-$type-$id.html »;
    return $title;
}

$type dans ce cas est toujours « art »

$id est le NUMERO d’article

$title est le titre de votre article

Voici en outre les deux fonctions dont la première dépend :

function substituteallspace($string,$substitutionstring=’-‘) {
    return preg_replace (‘/s{1,}/m’,$substitutionstring,$string);
}

function retireAccents($txt) {
    $masque = « [àâä] »;
    $txt = eregi_replace($masque, « a », $txt);

    $masque = « [éèêë€] »;
    $txt = eregi_replace($masque, « e », $txt);

    $masque = « [ïìî] »;
    $txt = eregi_replace($masque, « i », $txt);

    $masque = « [ôö] »;
    $txt = eregi_replace($masque, « o », $txt);

    $masque = « [ùûü] »;
    $txt = eregi_replace($masque, « u », $txt);

    $masque = « [ç] »;
    $txt = eregi_replace($masque, « c », $txt);

    return(strtolower($txt));
}

Pour modifier vos liens interne, il suffit d’utiliser cette fonction RewritedURI pour chacun de vos liens.

Pour être certain que les moteurs de recherches se mettent à jour, il faut veiller à ce que vos pages ne puissent être appelées QUE via la redirection. Dans le cas contraire, l’appel doit être redirigé vers la page avec la bonne syntaxe d’appel.

Il suffit de faire ça ainsi :

    $RewritedNewsTitle=RewritedURI(‘art’,$NewsIDdb,$NewsTitle); //Tel que ça devrait être
    $titlerewrited=substr($_SERVER[‘REQUEST_URI’], 1); //Tel que reçu
    if (strcmp($titlerewrited,$RewritedNewsTitle)) {
        header(« HTTP/1.1 301 Moved Permanently »);
        header(« Location: $base_url/$RewritedNewsTitle »);
        exit;
    }

 

5 réponses à « Exemple d’utilisation de redirection d’URL »

  1. Je ne suis même pas informaticien et j’ai implémenté un script identique sur mon site web il y a deux ans déjà…

    Bref, avez-vous enfin digéré que la JUSTICE ait été rendue dans l’affaire FORTIS ?

  2. Qu’il est lourd ce CM ! Dégage on veut pas de frustrés crétins ici !

    Je suis certain que tu n’as pas pigé la subtilité de ce qui différencie cette approche des autres explications à propos d’URL Rewriting ! Donne l’URL de ton site qu’on rigole !

  3. Je me demande franchement qui est le « frustré crétin » ici…

    Celui qui a compris dès le départ que l’opération BNP Paribas était une aubaine pour la Belgique ou bien celui qui n’a pas réussi ses études de droit et qui a voulu faire cracher le contribuable belge pour sauver les actionnaires héritiers ?

    Lire pour comprendre :

    http://www.lalibre.be/actu/belgique/article/550399/reynders-modrikamen-et-robin-des-bois.html

    Quant au site web, je gagne largement ma vie avec lui (je dois bosser puisque je n’ai pas hérité d’une tonne d’actions Solvay et Fortis)… Pas la peine de l’exposer à des personnes mal intentionnées.

  4. Bonjour,
    mon problème concerne le changement des permaliens sous WordPress. Le changement à partir du tabeau de bord donne toujours une erreur 404. Quelqu’un peut m’aider ?
    Merci d’avance
    Mario

Les commentaires sont fermés.