L’url rewriting consiste à réécrire les urls de manière lisible et généralement mieux supportée par les moteurs de recherche.
La méthode présentée ici repose sur l’écriture d’un fichier .htaccess placé à la racine de votre site.
Un fichier .htaccess est un fichier texte qui contient des directives destinées au serveur Apache. Parmi les nombreuses fonctionnalités de ce fichier, il y en a au moins 2 qui sont très souvent utilisées :
- la protection de répertoires
- la réécriture d’urls
Très souvent, les sites dynamiques basés sur php par exemple, vont générer des urls du style
http://www.mondomaine.com/catalogue.php?id_collection=1&id-theme=1
Ce qui serait intéressant dans le cas ci-dessus serait d’avoir une url plus lisible du style
http://www.mondomaine.com/catalogue_1_1.html
le fichier .htaccess
On va d’abord voir un cas très simple, ceci vous permettra de tester si ça marche.
RewriteEngine on
RewriteRule ^index.html$ test.php
Le code ci-dessus réécrit la page test.php en tant que index.html, ce qui fait que maintenant, si vous tapez index.html dans la zone d’url de votre navigateur, celui-ci devrait afficher la page test.php
La ligne qui réécrit l’url ici est basée sur RewriteRule : Règle de réécriture.
A gauche de ce mot-clé, c’est le résultat escompté, à droite c’est l’url actuelle de votre page.
Les règles de réécriture utilisent les expressions régulières.
L’expression régulière doit être encadrée par les 2 délimiteurs ^ et
Voici un exemple avec des urls de site dynamique en php :
RewriteEngine on
# un commentaire
RewriteRule ^catalogue_([0-9]+)_([0-9]+).html$
catalogue.php?id_collection=$1&id_theme=$2
Les chiffres entre crochets avec le signe + après, signifient un nombre quelconque de chiffres
La première expression entre parenthèses est évaluée et on la récupère dans $1.
La deuxième dans $2 etc…
Dans notre cas, il y a 2 paramètres dans l’url, donc on n’a besoin que de 2 variables.
En cas de problème
Si ça ne marche pas, c’est peut-être lié à votre configuration Apache. Vérifiez d’abord que la directive AllowOverride est bien à All et pas à None dans le fichier httpd.conf de votre serveur.
Pour ceux qui ont le courage, voici l’adresse de la doc en ligne
Jacques VANNET
slt ! le gros prbleme est que l’url ne change pas , l’url reste tourjour celle de php?page=’1′
Heu… Peux-tu préciser un peu ?