L'URL Rewriting avec Apache, pour de belles adresses Les drapeaux, pour modifier le comportement d'une directive

Les drapeaux permettent de modifier partiellement le comportement d'une directive d'Apache. Un drapeau est placé entre crochets à la fin d'une directive. Vous pouvez cumuler les drapeaux en les séparant par des virgules.

Voici la liste des principaux drapeaux :

NC : permet de rendre la règle insensible à la casse (c'est à dire qu'aucune différence ne sera faite entre les minuscules et les majuscules),

L : permet d'indiquer à Apache que la règle appliquée est la dernière. En effet, tant que Apache ne rencontrera pas ce drapeau, il tentera de réécrire à nouveau l'adresse obtenue. Par exemple :

   1. RewriteRule accueil\.html$ accueil.php
  2. RewriteRule accueil\.php$ index.php?page=accueil


En demandant l'adresse accueil.html, celle-ci sera réécrite deux fois.
Elle sera en premier transformée en accueil.php, puis en index.php?page=accueil. Pour interdire la deuxième réécriture, vous ajouterez le drapeau [L] à la fin de la première règle :

   1. RewriteRule accueil\.html$ accueil.php [L]
  2. RewriteRule accueil\.php$ index.php?page=accueil


G : Permet d'indiquer que la page n'est définitivement plus disponible (gone), ceci correspond au statut HTTP 410,

F : envoie le statut HTTP 403 indiquant que l'accès à la page est interdit,

R ou R=n : envoie le code statut HTTP n, par exemple, pour indiquer qu'une page à changé d'adresse, vous pouvez écrire une règle comme celle-ci :

 1. RewriteRule article_urlrewriting.html$ /post/Url-Rewriting [R=301,L]

 

N : Apache reprendra l'analyse de l'adresse depuis le début, en utilisant la dernière adresse transformée obtenue. Attention, l'utilisation de ce drapeau peut causer une boucle infinie (une règle dirigeant Apache vers une autre et vice-versa, pensez alors à utiliser le drapeau L),

C : lorsqu'une règle comportant ce drapeau est vérifiée, Apache analysera l'adresse transformée avec la requête suivante, si celle-ci possède également ce drapeau, si la règle n'est pas vérifiée, Apache passera à la première règle suivante ne comportant pas se drapeau.

 

Adresse de base

Dans certains cas, il peut être nécessaire de préciser à Apache le répertoire de base dans lequel nous travaillons à l'aide de la directive RewriteBase.

 

Conclusion


Pour en savoir plus sur les expressions régulières, je vous invite à consulter le manuel de PHP qui offre une introduction à la syntaxe des expressions régulière très complète.