A quoi sert l’url Rewriting ?
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. L’url Rewriting est également très utile pour le référencement naturel (SEO).
Installation de l’url Rewriting sur Apache avec mod_rewrite
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 :
ls -l /usr/lib/apache2/modules/ | grep rewrite
Activons le module grâce à la commande a2enmod :
sudo a2enmod rewrite
On va maintenant indiquer au serveur Apache d’utiliser le module en modifiant RewriteEngine :
vim /etc/apache2/apache2.conf
Ajouter ce bout de configuration en fin de fichier et sauvegarder :
<ifModule mod_rewrite.c> RewriteEngine On </ifModule>
Redémarrer Apache pour la prise en compte de notre modification de configuration :
service apache2 restart
Configuration url Rewriting sous Apache
Afin de tester le bon fonctionnement du module, nous créons un fichier PHP :
cat > rewrite.php << EOF EOF
On fait de même avec le fichier .htaccess :
cat > .htaccess <<'EOF' Options +FollowSymLinks RewriteEngine on RewriteRule ^rewrite\.html$ /rewrite.php [L] EOF
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 de réécriture d’url
Maintenant, nous allons voir comment réécrire des URLs dynamiques composées de multiples paramètres.
Activation de la réécriture d’url avec Rewritengine On
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
RewriteEngine on ### 1er exemple - http://www.domaine.com/catalogue.php?page=panier&action=valider RewriteRule ([a-z]+)\.([a-z]+)\.html$ /catalogue.php?page=$1&action=$2 ### 2ème exemple - http://www.domaine.com/image.php?album=26&id=15 RewriteRule ([0-9]+)/([0-9]+)$ /image.php?album=$1&id=$2 [L]
Règles conditionnelles de réécriture d’url
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 :
RewriteEngine on RewriteCond CONDITION VARIABLE RewriteRule REGLE
D’autres exemples d’utilisation :
RewriteEngine on ### Rediriger une IP vers une autre adresse RewriteCond %{REMOTE_ADDR} ^1.2.3.4$ RewriteRule ^(.*)$ http://www.autre-domaine.com/ ## Rediriger les utilisateurs en provenance d'un domaine banni RewriteCond %(HTTP_REFERER) ^http://(www.)?domaine_banni.com RewriteRule .* http://www.google.fr/ ### Rediriger les utilisateurs de Internet Explorer :) RewriteCond %{HTTP_USER_AGENT} MSIE RewriteRule .* http://www.google.fr/chrome [L]
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.