Utilisation du module mod_rewrite de Apache

L’URL Rewriting est une méthode de réécriture des URLs devenue indispensable pour la simplification des URLs notamment lors du référencement des pages dynamiques.

Installation

Le but principal de l’URL Rewriting est d’éviter d’avoir un couplage entre le format des URL et les ressources techniques présentes sur le serveur, avec pour avantage d’améliorer l’indexation des moteurs de recherche et de présenter des URL moins techniques.
Le module mod_rewrite de Apache est habituellement présent à l’installation d’Apache :

Activons le module grâce à la commande a2enmod :

On va maintenant indiquer au serveur Apache d’utiliser le module en modifiant RewriteEngine :

Ajouter ce bout de configuration en fin de fichier et sauvegarder :

Redémarrer Apache pour la prise en compte de notre modification de configuration :


Configuration

Afin de tester le bon fonctionnement du module, nous créons un fichier PHP :

On fait de même avec le fichier .htaccess :

Votre page http://www.domaine.com/rewrite.php est désormais accessible via l’URL http://www.domaine.com/rewrite.html

Activation de la réécriture d’URL.

Définition de la règle de réécriture.

Regex de réécriture.

Chaine recherchée.

Paramètre Last afin d’indiquer que c’est la dernière règle à traiter.


Définition des règles

Maintenant, nous allons voir comment réécrire des URLs dynamiques composées de multiples paramètres.
Essayons de réécrire les URLs suivantes :

http://www.domaine.com/catalogue.php?page=panier&action=valider -> http://www.domaine.com/panier.valider.html
http://www.domaine.com/image.php?album=26&id=15 -> http://www.domaine.com/image/26/15


Règles conditionnelles

La réécriture conditionnelle des URLs permet de filtrer et protéger l’accès à une partie de votre site ou bannir une personne tentant d’y accéder.
Une règle conditionnelle suivra le format suivant :

D’autres exemples d’utilisation :

Les règles peuvent être dynamique en utilisant les variables contextuelles suivantes :

Domaine du serveur.

La page (si elle est renseignée) d’où vient votre visiteur

Navigateur et le système d’exploitation, …

Page demandée en requête HTTP/HTTPS.

Adresse IP faisant la requête.