Le fichier htaccess
Le fichier .htaccess est un fichier texte qui permet de modifier certains paramètres du serveur apache. Ces modifications sont valables pour le dossier dans lequel le fichier se trouve ainsi que ses sous-dossiers.
On utilise ce fichier principalement pour :
Contrôler l'accès à un répertoire ou un fichier par mot de passe.
Gérer le type mime des fichiers.
Définir des pages d'erreurs personnalisées.
Réécrire les URL.
Attention :
.htaccess étant un fichier de configuration du serveur apache, votre site doit donc naturellement être hébergé par un serveur apache.
Notez bien que ce fichier n'a pas de nom, mais seulement une extension. Certains éditeurs ou explorateurs ne permettent pas d'afficher ce fichier.
Méthode : Activer la réécriture d'URL
Pour utiliser la réécriture, votre hébergeur doit vous le permettre. Tous les hébergeurs ne l'autorisent pas.
En local, pour activer la réécriture d'URL, vous devez avoir les droits d'administrateur.
Dans le fichier httpd.conf dé-commentez la ligne :
LoadModule rewrite_module modules/mod_rewrite.so
Si vous utilisez WampServer : Apache->Modules Apache->rewrite_module
Dans la suite, nous montrons seulement les instructions du fichier htaccess qui permettent la réécriture des adresses en index.php
Définition : RewriteEngine
Avant de commencer, il faut autoriser la réécriture d'URL.
RewriteEngine On
Définition : RewriteRule
RewriteEngine On
RewriteRule URL_à_réécrire URL_réécrite
URL_à_réécrire : vous pouvez écrire le type de vos URL à réécrire sous forme d'expression régulière.
URL_réécrite : pour réécrire l'URL vous pouvez utiliser les groupes obtenus à partir de l'expression régulière.
RewriteEngine On
RewriteRule monNouveauNom original.php
réécrit l'URL monNouveauNom en original.php
Le client pense appeler monNouveauNom et c'est le fichier original.php qui lui est retourné.
Méthode :
Afin de rediriger toutes les requêtes vers le fichier index.php
RewriteEngine On
RewriteRule . index.php
. : n'importe quelle url d'au moins un caractère
Afin de récupérer certains fichiers sans passer par index.php, il faut les exclure de la redirection.
RewriteEngine On
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
!\.(js|ico|gif|jpg|png|css)$ : ne finit pas par un point suivi de js, ou ico, ou gif ...
Conseil : Adresses utiles
Pour plus d'informations sur le fichier .htaccess vous pouvez consulter les adresses suivantes :