Réécriture des URL pour ne plus voir le nom du script

Published on 27/09/2007  Apache

Si on a un script index.php et que l'on veut lui passer toutes les URL qui n'existent pas sur le serveur, on peut mettre en place une ré-écriture au sein d'Apache :
RewriteEngine on
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]
De cette manière, si on demande la page http://site/valeur, le script recevra http://site/index.php?q=valeur. Plus joli !!

La config ci-dessus peut aussi être placée dans un .htaccess, mais il faut autoriser Apache à le lire.
AllowOverride FileInfo
ou
AllowOverride All
Pour que tout cela fonctionne, il faut que le module mod_rewrite d'Apache soit chargé.