Cette opération s'effectue à l'aide de la directive mod_rewrite dans votre fichier .htaccess. Pour cela, votre fichier .htaccess doit contenir les lignes suivantes, à raison d'une directive par ligne :
RewriteEngine On
RewriteRule ^blog/([0-9]+)/([a-z]+)$ /blog/index.php?year=$1&month=$2 [nc]
EXPLANATION:
RewriteEngine On
La première ligne permet de s'assurer que RewriteEngine est activé.
RewriteRule ^blog/([0-9]+)/([a-z]+)$ /blog/index.php?year=$1&month=$2 [nc]
La deuxième ligne s'explique comme suit :
^blog/ - garantit que la recherche porte sur le début de la chaîne commençant par blog
([0-9]+) - recherche une suite de chiffres de 0 à 9. Le + à la fin garantit la correspondance avec des chiffres répétés une ou plusieurs fois, comme dans le cas de 2007.
([a-z]+)$ - recherche une saisie en lettres minuscules. Le + à la fin garantit la correspondance avec des lettres répétées une ou plusieurs fois, comme dans le cas de Tree. Dans cet exemple, la casse n'a pas d'importance en raison de ce que nous avons ajouté à la fin de la règle. Le signe dollar à la fin indique simplement à la directive de rechercher la fin de la ligne.
/blog/index.php?year=$1&month=$2 - il s'agit de l'adresse en laquelle le site web traduira l'URL, où $1 correspond à la première valeur reçue, ici 2007, et $2 à la seconde valeur reçue, ici jan.
[nc] - Cette option signifie « no case » ou « insensible à la casse ». Lorsqu'elle figure à la fin de la règle, la casse de la saisie n'a aucune importance. Par exemple, http://www.example.com/blog/2007/JaN produira le même résultat que http://www.example.com/blog/2007/jan.
Cette règle peut facilement être étendue pour prendre en compte de nombreux types de saisies, de manière plus générale ou plus précise, à l'aide d'expressions régulières (regex/regexp). Vous trouverez plus d'informations sur les expressions régulières et leur utilisation à l'adresse suivante :
http://www.regular-expressions.info/tutorial.html
Vous trouverez également des informations plus complètes sur la directive mod_rewrite à l'adresse suivante :
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html