Url rewriting par .htaccess
Jeudi 7 février 2008Url rewriting
L’”url rewriting” ou “ré-écriture d’url” vous permet de modifier l’adresse de vos pages internet sans modifier votre code. Cela est très utile pour les pages dynamiques, ainsi une page ayant pour url “http://www.monsite.com?do=show&id=25&id_cat=3&id_marque=7” pourra être accessible par une url de la forme “http://www.monsite.cat/appareils-photos/canon/ixus-v3.html”
A quoi ça sert ?
Mis à part la satisfaction d’avoir un site acec des urls plus “propres”, l’intérêt essentiel se trouve dans le référencement de votre site internet. Ainsi si on reprend l’exemple précédent, un moteur de recherche risque de ne pas indexer une page ayant pour url “http://www.monsite.com?do=show&id=25&id_cat=3&id_marque=7” car ils limitent leur indexation à un certain nombre de paramètres. Et même si cette page est indexée, le robot comprendra plus facilement le thème de la page avec une url de la forme “http://www.monsite.cat/appareils-photos/canon/ixus-v3.html“.
Comment ça marche ?
Je ne parlerai ici que d’url rewriting avec un fichier “.htaccess”. Cela signifie que vous devez avoir un site hébergé sur un serveur Apache (cela est faisable différemment avec IIS), pouvoir uploder un fichier texte à la racine du site et que votre hébergeur accepte l’url rewriting (de nombreux hébergeurs l’acceptent, le mieux est de consulter leurs FAQ ou de leur demander directement).
Si toutes ses conditions sont remplies, vous n’avez plus qu’à mettre un fichier texte appelé “.htaccess” à la racine de votre site.
Le fichier “.htaccess”
La première ligne à mettre dans votre fichier “.htaccess” est
RewriteEngine on
pour signifier que vous souhaitez utiliser le module de réécriture d’url.
Les règles de réécritures se présentes ensuite ainsi
RewriteRule url_de_depart url_d_arrivee [L]
La réécriture d’url utilse les expressions régulières pour définir les urls de départ, n’étant pas spécialiste (et n’étant pas passionné par la chose) je me contenterai de vous exposer des exemples courants.
Changer le dossier d’une url simple
RewriteRule ^sitemap\.xml$ /robot/sitemap.xml [L]
L’url http://www.monsite.com/robot/sitemap.xml est transformée en http://www.monsite.com/sitemap.xml
Supprimer un paramètre dans une url
RewriteRule ^textes\.html$ /index.php?do=texts [L]
L’url http://www.monsite.com/index.php?do=texts est transformée en http://www.monsite.com/textes.html
Expression régulière avec des chiffres
RewriteRule ^auteurs-([0-9]+)\.html$ /index.php?do=users&p=$1 [L]
L’url http://www.monsite.com/index.php?do=user&p=5 est transformée en http://www.monsite.com/auteurs-25.html
_ L’expression [0-9]+ signifie “au moins un chiffre entre 0 et 9” (si on voulait “0 ou plus chiffres entre 0 et 9, on aurrait remplacé le “+” par “*”)
_ Le “$1″ signifie la première expression régulière (donc ici le [0-9]+)
Si on avait plusieurs expressions régulières, on aurrait $1, $2, $3, …
Expression régulière avec des lettres
Pour les lettres, il faut utiliser l’expression [a-z]+ (ou [a+z]*) qui signifie “une lettre entre a et z”
Expression régulière “n’importe quoi sauf un point”
RewriteRule ^t/([^.]*)\.html$ /index.php?do=text&url=$1 [L]
Toutes les urls “html” dans le dossier “http://www.monsite.com/t/” sont réécrites en “http://www.monsite.com/index.php?do=text&url=$1” avec “$1” qui est le nom de fichier “html”
La plupart des exemples sont tirés du site ObiSong.com: chanson, poeme, poesie , vous pouvez consulter directement sur le site le “.htaccess“