JAN
18
PHP et mod_rewrite, réécriture d'URL
18.01.2007 | | Auteur : Ayashi | Catégorie : Programmation


Afin d'augmenter la visibilité d'un site sur internet via les moteurs de recherche, il peut être intéressant de faire appel à une fonction d'Apache appelée mod_rewrite. Ce module qui n'est pas nativement activé permet de faire de la redirection d'URL de façon transparente pour le browser ou en renvoyant un code HTTP 302 -Object Moved-. Outre le fait de n'utiliser que des URL propres ( sans paramètres &x=y?a=z ), l'indexation des moteurs de recherche est facilitée, en effet certains n'accèdent pas aux adresses comportant trop de paramètres.

Ce tutorial a été réalisé sur un serveur web apache 2.0, la démarche est légèrement différente pour une 1.3x. La configuration décrite ci-dessous est appliquée sur le serveur web ou est hébergé ce site, vous pouvez le voir en action en sélectionnant un article, une catégorie, le flux RSS,...

La première étape consiste à décommenter la ligne suivante dans le fichier httpd.conf d'apache :

LoadModule rewrite_module modules/mod_rewrite.so

Il faut ensuite redémarrer apache afin que cette modification soit prise en compte, mais attendez un peu, nous allons définire quelques règles de réécriture. Pour écrire ces règles, deux méthodes sont possibles :

  • Les placer dans un fichier .htaccess
  • Utiliser la directive <Directory.. dans le fichier httpd.conf

Nous allons créer une règle qui va rediriger l'adresse http://www.monsite.com/rss vers le fichier http://www.monsite.com/rss.php. L'intéret? Purement esthétique :o) Pour ce faire, ajoutez les lignes suivantes à la fin de votre fichier httpd.conf :

<Directory X:/Path/To/My/Webroot/>
  <IfModule mor_rewrite.c>
    RewriteEngine on
    Options +FollowSymlinks
    RewriteRule ^rss$ rss.php [last]
  </IfModule>
</directory>

La directive RewriteRule accèpte des expressions régulières de type POSIX ( version d'apache supérieur à 1.2.x ). Vous pouvez trouver plusieurs tutoriaux sur internet dont celui ci : Regular expression - Small tutorial que j'utilise. Il est important de mettre le flag [last] ou [l] à la fin de la dernière règle de réécriture. Dans ce mode, le navigateur ne se rends pas compte de la redirection. Vous pouvez également envoyer un code HTTP 302 en ajoutant le flag [redirect], bien que cette solution soit moins esthétique elle a l'avantage de permettre la redirection vers un autre serveur web.

Ce premier exemple n'avait qu'un but esthétique, nous allons maintenant voir comment appliquer la réécriture sur des URLs avec paramètres. Prenons par exemple la page article.php?ArticleID={0123-4540-4564-4564}. Son potentiel de référencement -par mot clef- sur un moteur de recherche est quasiment nul. En ajoutant à votre base de données d'articles une colonne "ShortName" ou vous mettrez le titre de votre article épuré de ses caractères spéciaux ( les accents, les espaces, ... ) nous pourrons créer une adresse virtuelle article-le-nom-de-l-article.html qui redirigera de façon transparente vers la page article.php?ShortName=le-nom-de-l-article ou ShortName serait la nouvelle colonne. Essayez d'éviter le caractère _ ( underscore ) qui ne permet pas de séparer les mots clefs. L'indexation des moteurs de recherche sera améliorée par les mots clef de l'URL. Le code associé devient :

<Directory X:/Path/To/My/Webroot/>
  <IfModule mor_rewrite.c>
    RewriteEngine on
    Options +FollowSymlinks
    RewriteRule ^article-(.+)\.html$ article.php?ShortName=$1
    RewriteRule ^rss$ rss.php [last]
  </IfModule>
</directory>

L'expression régulière ^article-(.+)\.html$ permet d'isoler le nom de l'article et de le mettre dans la variable $1 qui est ensuite utilisée afin de réécrire l'adresse. Il est possible d'isoler plusieurs variables en modifiant l'expression régulière..

Le plus compliqué reste de définir un plan d'adressage pour votre site qui ne nécessite pas de repenser votre base de données ou vos pages existantes. Ne perdez pas de vue que moins votre site comportera de pages avec paramètres ( &,? ) plus sa visibilité sur les moteurs de recherche sera grande.

Liens Complémentaires

Tags : mod_rewrite, reecriture, url | Digg!
Commentaires  | Ajouter un commentaire
Kilouf
12.04.07 / 20:34
Et pourquoi pas !
Merlin
23.01.07 / 14:05
bravo !
Rechercher sur internet  ?  | Rechercher!
Trackback
Utilisez le lien http://www.sunyday.net/trackback-PHP-et-mod_rewrite-reecriture-d-URL pour faire un trackback vers cette article depuis votre site web. Les trackbacks sont soumis à une approbation mutuelle et susceptibles d'être supprimés si jugés indésirables.
Retrieve RSS feed. Get notified by eMail. Meteo Parser.
Computing widgets...
Jean-Damien POGOLOTTI© 2k6-2k7 | Design // Code

Qui suis-je?

Touche à tout restant bouche bée devant la complexité et la cohérence de ce monde je m'évertue à essayer d'en comprendre les rouages. En passant par la météorologie, la physique ou bien l'informatique, tout est une raison d'apprendre!
Comment les gens arrivent-il ici?
 directory  line  javascript  mercator  conversion  active  des  convertir  longitude  le  ldap  gps  CODE  terrestre  SUR  url  ajax  metar  image  sunyday  une  cli  menu  trou  PAGE  regexp  anim%C3%A9  snmp  www.sunyday.net  et  convertisseur  regex  avec  d%27ozone  authentification  protocole  map  pour  lldp  sunyday.net  anomalie  fade  de  explication  coordonn%C3%A9es  web  fading  find  +  adresse  ntfs  latitude  script  nuls  couche  un  dans  en  synop  la  champ  photovoltaique  html  module  php  browser  google  les  ad  magn%C3%A9tique  

Sunyday.net