1. Première étape, vous devez configurer Apache pour autoriser l'URL Rewriting.
  • Pour Apache 1.33 :

Editez /etc/apache/modules.conf

Vérifiez que la ligne :

LoadModule rewrite_module /usr/lib/apache/1.3/mod_rewrite.so

est bien décommentée.

Relancez Apache :

/etc/init.d/apache restart

ou

/etc/init.d/apache-ssl restart
  • Pour Apache 2 :

Vous devez ajouter le module rewrite dans /etc/apache2/mods-enabled

cd /etc/apache2/mods-enabled
ln -s /etc/apache2/mods-available/rewrite.* .

Relancez Apache2

/etc/init.d/apache2 restart
  1. Deuxième étape, créez votre .htaccess pour activer l'URL Rewriting
RewriteEngine on
  1. Troisième étape, configurez vos règles de réécriture d'URL. (Toujours dans le .htaccess).

Le format d'une règle est :

RewriteRule Page_tapée Page_à_afficher [Options]

Exemple : Réécrire www.aide.sivit.fr en aide.sivit.fr, mais sans changer la page :

RewriteCond %{HTTP_HOST} ^www\.aide\.sivit\.fr$
RewriteRule ^(.*)$ http://aide.sivit.fr/$1 [R=301,L]

Explication de la règle :

  • RewriteCond -> Condition pour appliquer la règle suivante
  • %{HTTP-HOST} -> Variable Apache (Apache2) pour récuperer le nom d'hote tapé dans le navigateur.

Nous allons décomposer le dernier paramètre de cette ligne :

  • ^ -> Le début de ligne
  • www\.aide\.sivit\.fr -> Le nom www.aide.sivit.fr (le "." étant un caractère spécial pour Apache, il faut donc le proteger avec le "\")
  • $ -> La fin de la ligne.

Nous avons donc écrit au serveur :

Si l'hote est www.sivit.fr, alors

RewriteRule -> Indique au serveur qu'il devra réécrire l'adresse (ne prends pas en compte le nom d'hote)

  • ^ -> Toujours le début de la ligne
  • $ -> Toujours la fin de la ligne
  • () -> Je preds cette valeur dans une variable (la première occurence sera $1, puis $2 ...)
  • . -> Un caractère quelquonque
  • * -> 0 ou n fois.

^(.*)$ -> Je prends tous les caractères de l'adresse

http://aide.sivit.fr/$1 -> La nouvelle adresse est : http://aide.sivit.fr/ suivit de toute l'adresse qui avait été tapée.

Pour finir, les options :

  • R=301 -> Cette redirection est permanente (information pour les moteurs de recherches)
  • L -> Ceci est la dernière règle à appliquer.

Un autre exemple :

RewriteRule ([0-9]{4,4})/([0-9]{2,2})/([0-9]{2,2})/(.*) index.php?annee=$1&mois=$2&jour=$3&titre=$4 NC

Réécrit une adresse du genre http://aide.sivit.fr/aaaa/mm/jj/titre en http://aide.sivit.fr/index.php?annee=aaaa&mois=mm&jour=jj&titre=titre

Le paramètre NC signifie de ne pas taire attention à la casse de l'URL tapée (TiTrE = titre = TITRE).

Bonne semaine,

(La suite, au prochain épisode.)