Référencement
de sites dynamiques: l'exemple du PHP (Deuxième partie)
Les robots peuvent avoir des difficultés pour suivre des URLs "exotiques". Le module Apache mod_rewrite permet de "réécrire" les URLs pour tenir compte du problème.
Dans notre précédent
article, nous avons souligné la nécessité,
dans certains cas, et notamment pour améliorer son référencement,
de "réécriture" d'URLs "dynamiques".
Nous avons présenté une méthode basée
sur un petit script PHP qui s'exécutait, dans un répertoire
précis, dès que l'URL saisie remplissait certaines
conditions.
Le but était qu'une URL de la forme:
http://www.mondomaine.org/forums/messages/4_3_12.html
(URL apparaissant dans la barre d'adresse du navigateur) engendre
le même résultat que l'URL:
http://www.mondomaine.org/forums/lire.php?forum=4&thread=3&post=12
Dans la méthode fournie, le script PHP "émulait",
en quelque sorte, le comportement résultant de cette deuxième
URL.
Mais il existe un deuxième moyen d'aboutir au résultat
relativement simplement pour peu que l'on sache utiliser les expressions
régulières. Il s'agit de tirer profit du module mod_rewrite
du serveur Apache. Très puissant, ce module permet d'envisager
tous les systèmes de redirection possibles, mais nous n'allons
pas, ici, en faire une présentation exhaustive. Nous allons,
simplement, introduire les directives qui vont permettre d'aboutir
au même résultat que notre script PHP.
La première chose est de préciser au serveur Apache
qu'il aura besoin du module mod_rewrite. Nous écrirons,
dans le fichier httpd.conf (fichier de configuration du serveur):
LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c
Puis nous allons démarrer notre "moteur de réécriture"
(également dans httpd.conf) par:
RewriteEngine On
Il nous reste alors à définir notre "règle
de réécriture" (toujours dans httpd.conf).
Ce sera la suivante:
RewriteRule ^/forums/messages/([0-9]*)_([0-9]*)_([0-9]*).html /forums/lire.php?forum=$1&thread=$2&post=$3
Cette règle repose sur deux expressions régulières.
La première définit la forme de l'URL qui est envoyée
au serveur, la seconde la forme de l'URL qui sera effectivement
traitée. La première URL, et non la deuxième,
apparaîtra dans la barre d'adresse du navigateur.
Pour comprendre ces expression régulières, il faut
se rappeller le points suivants:
- ^/forums/messages/... : tout "masque" commençant
par /forums/messages/;
- [0-9]* : toute combinaison de chiffres (caractères
appartenant à l'intervalle [0-9]), le méta-caractère
* signifiant un nombre quelconque d'occurences;
- Toute partie d'expression régulière encadrée
par des parenthèses est "mémorisée"
dans les variables $1 (pour la première paire de parenthèse),
$2 (pour la seconde), etc.
En bref, la technique est rapide à mettre en oeuvre (pour
que les modifications de configuration d'Apache soient prises en
compte, il faut cependant relancer le serveur), mais nécessite
de bien maîtriser les expressions régulières,
d'une part, et, surtout, d'avoir la main sur la configuration du
serveur Apache, d'autre part. Or, cette dernière condition
n'est pas remplie dans le cadre d'un hébergement mutualisé,
par exemple.
Pour plus d'information sur le potentiel de mod_rewrite,
vous pouvez consulter la page
suivante.
[Jérôme
Morlon, 13 avril 2002
, JDNet]
|