Url Rewriting
Par rdem, mardi 7 août 2007 à 16:03 :: [Dédiés] Apache :: #228 :: rss
Vous en avez marre des URLs du genre http://www.mon.domaine/index.php?page=test&view=2 ?? Voici la solution.
- 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
- Deuxième étape, créez votre .htaccess pour activer l'URL Rewriting
RewriteEngine on
- 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.)
Commentaires
1. Le mercredi 8 août 2007 à 05:42, par NiCoS
Ajouter un commentaire