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

Sunyday.net