Utilisation d'Url Rewriting avec .htaccess

Voilà un sujet qui va plaire a certains qui souhaitent changer le nom de leurs page ou améliorer le référencement.

Imaginons que vous avez un site web avec des liens tel que :
- index.php?page=accueil
- index.php?page=contact
etc...

Votre page index.php va inclure une page "accueil.php" ou une page "contact.php".

Problème Google ne vas pas référencer ce qu'il y a apres le "?" donc il va prendre uniquement "index.php".

Voilà une solution pour vous : "l'url rewriting" ou comment réécrire les urls d'une page.

Nous voulons a la place de ces adresses : accueil.html et contact.html, donc dans un premier temps on va vérifier que nous avons le module rewriting dans apache qui se nomme "mod_rewrite".
Maintenant nous allons faire un fichier ".htaccess" avec ce qui suit :

RewriteEngine On
RewriteRule ^accueil.html$ /index.php?page=accueil [NC,L]

La première ligne va permettre d'utiliser le module d'apache "mod_rewrite".
La seconde ligne est plus intéressante c'est elle qui va définir notre page "accueil.html" pointe sur "index.php?page=accueil".
Vous pouvez utiliser les expressions régulières par exemple ^ pour le debut de la ligne et $ pour la fin.
A la fin de la ligne vous pouvez voir des flags entre les crochets.
NC signifie No Case donc pas sensible à la case ! Je peux taper ACCUEIL.HTML ou accueil.html ou AcCuEiL.HtmL si je veux.

D'autres flags existent tel que :

RewriteRule ^forbidden.html$ - [F]

Le F envoi un code erreur HTTP 403 (Forbidden) le tiret dit qu'il n'y a pas de réécriture d'url.

RewriteRule ^gone.html$ - [G]

Le G quand a lui renvoi un code erreur HTTP 410 (Gone)

Pour plus d'informations sur les flags : http://httpd.apache.org/docs/2.2/rewrite/rewrite_flags.html
Pour plus d'informations sur l'url Rewriting : http://httpd.apache.org/docs/2.2/rewrite/

2 commentaires pour “Utilisation d'Url Rewriting avec .htaccess”

  1. Comment Arrow

    Bien sympa cette pratique. N'existe t'il pas une solution pour automatiser la manipulation et éviter de mettre une ligne par Rewriting ?

  2. Comment Arrow

    Une base de donnée et un script .htaccess qui est en fait une page php ? :)