Serveur Apache HTTP Version 2.5
mod_rewrite
permet de modifier les requêtes
entrantes dynamiquement, en fonction de règles manipulant des expressions rationnelles. Vous pouvez
ainsi relier des URLs arbitraires à votre propre structure d'URLs
interne comme vous le souhaitez.
Il fournit un mécanisme de manipulation d'URL particulièrement souple et puissant en supportant un nombre illimité de règles et de conditions attachées à chaque règle. Les manipulations d'URLs peuvent dépendre de tests variés : les URLs peuvent être finement caractérisées en fonction de variables du serveur, de variables d'environnement, d'en-têtes HTTP, de repères temporels, de recherches dans des bases de données externes, ou même de requêtes vers des bases de données externes et de différents gestionnaires ou programmes externes.
Les règles de réécriture peuvent agir sur l'ensemble des URLs (la partie chemin
et la chaîne de paramètres) et peuvent être utilisées dans le contexte du serveur principal
(httpd.conf
), mais aussi dans le contexte des
serveurs virtuels (sections <VirtualHost>
), ou dans le
contexte des
répertoires (fichiers .htaccess
et blocs
<Directory>
. Le résultat
réécrit peut conduire vers d'autres règles à un
traitement secondaire interne, une redirection vers une requête
externe ou même l'envoi vers un serveur mandataire, en fonction
des drapeaux que vous attachez aux
règles
mod_rewrite étant très puissant, il peut par conséquent être très complexe. Ce document complète la documentation de référence du module mod_rewrite, et est sensé alléger un peu cette complexité, et présenter des exemples largement commentés, ainsi que des situations courantes que vous pourrez traiter avec mod_rewrite. Mais nous voulons aussi vous montrer des situations où vous ne devrez pas utiliser mod_rewrite, et lui préférer d'autres fonctionnalités standard d'Apache, évitant ainsi d'entrer dans une complexité inutile.