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

Sunyday.net