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?
 couche  lldp  convertisseur  image  avec  trou  regex  gd  nuls  menu  fading  resize  sunyday  synop  sunyday.net  web  +  anim%C3%A9  d%27ozone  photovoltaique  browser  script  ad  magn%C3%A9tique  et  map  active  regexp  en  conversion  longitude  champ  google  dans  mercator  ajax  latitude  cli  url  la  convertir  www.sunyday.net  coordonn%C3%A9es  line  PAGE  php  directory  une  explication  de  CODE  html  gps  snmp  module  ldap  un  fade  pour  terrestre  javascript  authentification  le  ntfs  metar  les  protocole  SUR  adresse  des  

Sunyday.net