Module de réécriture d'URL pour le serveur Web Apache. Il est couramment utilisé pour les soi-disant «jolies URL», mais offre également la puissance et la flexibilité nécessaires pour effectuer diverses tâches de traitement des demandes au-delà de simples substitutions.

Introduction à mod_rewrite

mod_rewriteest un module apachequi permet de transformer les demandes du côté serveur. Il peut être utilisé pour effectuer des redirections internes et externes, et peut fournir des crochets conditionnels dans les fonctionnalités fournies par d'autres modules (comme mod_proxy). Référence complète et documentation supplémentaireavec plusieurs exemples sont disponibles sur le site Web de documentation Apache , en plus des nombreuses solutions aux problèmes courants et avancés de mod_rewrite disponibles ici.

Une introduction complète à mod_rewrite

Tout ce que vous avez toujours voulu savoir sur les règles Mod_Rewrite, mais avez-vous eu peur de demander?

Scénarios et questions d'utilisation courants de mod_rewrite

Comment fonctionne mod_rewrite?

Mod_rewrite opère sa magie en appliquant une série de règles et conditions à l'URL demandée, en effectuant des substitutions lorsque la correspondance réussit. La majorité de ce travail est effectuée par les directives RewriteRule et RewriteCond qui peuvent être définies dans des configurations de serveur (ou d'hôte virtuel) ou dans . htaccess. Cela permet à mod_rewrite d'être utilisé dans une variété de scénarios de déploiement, y compris l'hébergement partagé où il est souvent installé par défaut.

En utilisant les directives et les variables * disponibles, il est possible de conditionner les réécritures à un ensemble de conditions raisonnablement complexes - y compris les expressions régulières inversées et les correspondances littérales. À titre d'exemple simple pour illustrer certaines de ces fonctionnalités, envisagez d'effectuer une redirection interne vers un autre fichier d'index si un sous-domaine a été demandé:

RewriteEngine On                           # Turn on the engine

RewriteCond %{HTTP_HOST}    =s.example.com # Test for subdomain
RewriteCond %{REQUEST_URI} !^/.+$          # Test if the request URI is empty
RewriteRule ^ /index-alt.html [QSA]        # Internal rewrite with QSA flag*

* Une liste complète des variables est disponible dans la RewriteCondsection de la Documentation. De plus, une liste d'indicateurs de règles est disponible dans la RewriteRulesection.

Mod_rewrite n'est pas sans ses bizarreries, surtout quand il s'agit de différences entre la définition de règles dans une configuration de serveur et dans un fichier .htaccess. Lorsque cela est possible, utilisez la RewriteLogdirective pour voir ce qui se passe sous la hotte, et en cas de doute, demandez à la communauté Stack Overflow!

Ai-je besoin de mod_rewrite?

Mod_rewrite est un outil complexe et puissant. En tant que tel, pour certains cas d'utilisation simples, il existe des alternatives plus simples et parfois plus rapides. Le wiki Apache documente certains de ces cas d'utilisation dans leur page Quand ne pas utiliser la réécriture.

Poser une nouvelle question mod_rewrite

Il y a beaucoup d'utilisateurs ici qui sont heureux d'aider à démystifier mod_rewrite. Pour obtenir les meilleures réponses possibles, il est recommandé que les questions incluent toutes les règles, une mention indiquant si elles sont définies dans httpd.conf ou .htaccess, un exemple de ce qui devrait se produire (mais ce n'est pas le cas, par exemple "{{X0} } devrait aller à home.php ") et, enfin, une description de ce qui" ne fonctionne pas "(par exemple," Apache renvoie un message d'erreur 404 "). Bonne réécriture!

Ressources et liens