Apache mod rewrite
Auteur
mod_rewrite
Le module Apache de rewriting d’url se nomme mod_rewrite. Il permet d’indiquer simplement des règles de réécriture, selon l’url demandé par l’utilisateur. Cela se fera dans le fichier .htaccess.
Pour l’activer, il faut ajouter ces quelques lignes dans le fichier /etc/apache2/apache2.conf
(si elles n’y sont pas déjà) :
<ifModule mod_rewrite.c> RewriteEngine On </ifModule>
Il faut alors redémarrer le serveur Apache :
sudo /etc/init.d/apache2 restart
Diagnostic
- Si le module rewrite est présent, un fichier
mod_rewrite.so
doit exister. Cela se vérifie par la commande suivante :
ls -l /usr/lib/apache2/modules/
- Cette commande permet de recréer les liens entre Apache et le mod_rewrite :
sudo a2enmod rewrite
Fichier .htaccess
- Le mode rewriting est d’abord activé avec
RewriteEngine on
. - ^ correspond au début d’une expression rationnelle, $ à la fin de celle-ci. Les symboles utilisés sont décrits sur cette page : [1].
- Les drapeaux de réécriture sont décrits ici : [2].
- Les différentes directives utilisables sont recensées dans la documentation : [3].
%{<NOM_DE_VARIABLE}
permet d'accéder aux variables de serveur.
Exemple
Nous allons explorer l'exemple d'une règle de redirection à l'aide des directives RewriteCond et RewriteRule, utilisées comme suit :
RewriteCond <chaîne de test> <expression de comparaison> RewriteRule <modèle> <substitution> [<Drapeaux>]
.htaccess :
RewriteEngine on RewriteCond %{REQUEST_URI} ^/$ RewriteRule (.*) /app [R=301,L]
- On active d’abord le moteur de redirection.
- Ensuite, on définit une condition d’accès à la règle,
%{REQUEST_URI}
indiquant la variable serveur correspondant à l'uri auquel on essaie d'accéder, l’uri spécifié étant/
(par l'expression rationelle^/$
). - Enfin, la règle de réécriture s’applique à tout l’uri (
.*
), et le remplace par/app
. Une redirection est alors performée en indiquant un code de retour 301 (R=301
). Cette règle est indiquée comme la dernière à appliquer par le flagL
. - Si ce fichier
.htaccess
est utilisé pour un serveur hébergé à l'adressemonsite.fr
, tout accès àmonsite.fr/
sera redirigé versmonsite.fr/app
.
Sources
[1] https://httpd.apache.org/docs/2.2/fr/rewrite/intro.html#regex
[2] https://httpd.apache.org/docs/2.2/fr/rewrite/flags.html
[3] https://httpd.apache.org/docs/2.2/fr/mod/mod_rewrite.html#Solutions
[4] https://httpd.apache.org/docs/2.2/fr/rewrite/intro.html
[5] https://itx-technologies.com/fr/blog/28-installer-et-activer-le-module-mod_rewrite-sur-apache-et-ubuntu