De jolies URLs pour optimiser votre référencement

Je vais vous présenter ici une technique de ré-écriture d’URL en PHP. Nous l’appellerons URL Rewriting via PATH_INFO. Celle-ci est un peu particulière, elle est indépendante d’Apache. Elle fonctionnera même si votre hébergeur désactive le ModRewrite ou si vous utilisez un serveur web alternatif.

Prenons une page imaginaire nommée http://monsite.com/recette.php?cat=tomate&id=2 et intitulée Mon plat secret qui détaillera notre succulente recette de pâtes à la tomate.
L’URL que nous souhaitons obtenir est http://monsite.com/recette/tomate/2-plat-secret.

Mais un exemple vaut mieux qu’un long discours… Rendez-vous sur le catalogue de l’Âne qui butine pour une démonstration.

Cette adresse présente trois avantages face à la première :

Ceci est un exemple de code que vous allons ensuite modifier :


<?php
/* Inclusion imaginaire... */
require ('init.php');

/* Requête dans la base de donnée et affichage... */
displayArticle ($_GET['cat'], $_GET['id']);

(Note : même en conservant l’extension la technique présentée ci-dessous fonctionnera.)Première opération, supprimer l’extension de la page. Si vous utilisez la configuration par défaut d’Apache c’est très facile, il n’y a rien à faire ! Si http://monsite.com/recette?cat=tomate&id=2 ne fonctionne pas il va falloir activer l’option MultiViews d’Apache. Il vous faudra ajouter à votre fichier .htaccess :
Options +MultiViews
Entrons dans le vif du sujet, la ré-écriture d’URL en PHP ! Pour ce faire nous utiliserons la variable d’environnement CGI nommée PATH_INFO. Cette variable contient tout ce qui est contenu dans l’adresse après le nom du fichier, y compris le « / » initial. Avec notre adresse http://monsite.com/recette.php/tomate/2-plat-secret, PATH_INFO contiendra /2-plat-secret. Nous y accèderons via le tableau super-global $_SERVER et en extrairons l’identifiant qui est séparé des mots clefs par le caractère « - ». Et maintenant, le code !


<?php
/* Inclusion imaginaire... */
require ('init.php');

/* On vérifie que l'adresse se poursuit après le nom du fichier */
if (array_key_exists ('PATH_INFO', $_SERVER)) {
/* On sépare les paramètres (à chaque occurence d'un slash) */
$para = explode ('/', $_SERVER['PATH_INFO']);

/* La catégorie est contenue dans la deuxième case du tableau $para. N'oublions pas que la première case ($para[0]) est vide à cause du slash initial */
$cat = $para[1];

/* On sépare l'identifiant des mots-clefs */
$p = explode ('-', $para[2]);

/* Ci-dessous l'identifiant */
$id = $p[0];

/* Et maintenant les mots-clefs (aucune utilité ici) */
$keywords = $p[1];

/* Requête dans la base de donnée et affichage... */
displayArticle (cat, $id);

Et nous voici avec notre jolie URL qui se référencera très bien dans les moteurs de recherche !

Partager :
  • RSS
  • Facebook
  • Google
  • del.icio.us
  • TwitThis
  • LinkedIn
  • Blogasty
  • Tutmarks
  • Wikio FR
  • Scoopeo
  • StumbleUpon
  • Digg
  • Zataz
  • Slashdot
  • Technorati
  • YahooMyWeb
  • Reddit France

Comments