Blog Mestre

Le Blog d'un tonton flingueur du net

.htaccess, le fourre-tout du webmestre ignorant

Logo ApacheAprès presque 4 mois de silence, je suis de retour. En effet, il n’est pas toujours facile de “bloguer” pour le plaisir en parallèle d’une activité professionnelle, mais revenons à nos moutons.

Je ne me ferais surement pas que des amis avec le titre de cet article, mais j’ai vu tellement d’horreurs en plus de 12 ans de carrière, que j’assume pleinement et entièrement mon titre. Il suffit pour s’en convaincre, de parcourir les forums spécialisés pour comprendre ce que je veux dire. Le fichier .htaccess est soit la cause de tous les mots, soit le réceptacle de plusieurs dizaines de règles de ré-écriture d’URL (j’ai vu des .htaccess avec plus de 300 règles !). Rappelons que le fichier .htaccess est propre au serveur Apache et n’existe chez aucun de ses challengers (Nginx, IIS ou autres)

Utilisation des fichiers .htaccess

Revenons aux fondamentaux : La documentation Apache qualifie les fichiers .htaccess de “fichiers de configuration distribués” permettant de modifier la configuration du serveur au niveau d’un répertoire. Et de préciser, je cite :

Les fichiers .htaccess ne doivent être utilisés que si vous n’avez pas accès au fichier de configuration du serveur principal. L’utilisation des fichiers .htaccess ralentit le fonctionnement de votre serveur Apache. Il est toujours préférable de définir les directives que vous pouvez inclure dans un fichier .htaccess dans une section Directory, car elles produiront le même effet avec de meilleures performances.

Et un peu plus loin, je cite encore :

Notez que mettre un fichier .htaccess contenant une directive dans un répertoire /www/htdocs/exemple revient exactement au même que mettre la même directive dans une section Directory du fichier de configuration de votre serveur principal

.htaccess est donc un fichier permettant de déroger localement à la configuration générale du serveur. Les règles qu’il contient s’appliquent au répertoire dans lequel il est placé ainsi qu’à ses sous répertoire. Lorsque Apache reçoit une requête à un fichier, il vérifie d’abord l’existence éventuelle d’un fichier .htaccess dans le répertoire ou est situé le fichier demandé, puis dans tous les répertoires parents, il charge ensuite les fichiers .htaccess trouvés et les interprète. Ce mécanisme est donc un facteur de ralentissement important du serveur. il est donc fortement recommandé de centraliser les règles de configuration dans le fichier de configuration principal d’apache.

L’utilisation de fichiers .htaccess à cependant un intérêt dans le cadre d’un site en développement car elle permet de modifier la configuration du serveur sans avoir à le redémarrer et sans perturber le fonctionnement éventuel d’autres sites fonctionnant sur le serveur. Et lorsque que l’on a pas accès aux fichiers de configuration Apache, dans le cas d’un hébergement mutualisé par exemple, il faut éviter d’utiliser .htaccess à tort et a travers.

Cas d’une utilisation pour la ré-écriture d’URL

Une des utilisations les plus rependu du fichier .htaccess est “l’url rewriting” et c’est aussi cette utilisation qui conduit aux plus grands excès. Dans l’idéal, la section “url rewriting” devrait ressembler à ceci :

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Que disent ces quelques règles ? En gros, si le fichier ou le dossier demandé n’existent pas, on passe la main à “/index.php”, c’est dans ce fichier que l’on décidera si la requête doit retourner une page ou bien une erreur voir une redirection (c’est par ailleurs la méthode adopté par WordPress).

Pour conclure, je dirais que si le mécanisme de dérogation à la configuration du serveur HTTP est une des souplesses offerte par Apache, il n’en reste pas moins que son utilisation doit être faite avec précaution car elle peut être facteur de ralentissement du serveur.

Catégorie : Comprendre
  • Yoann a dit :

    Il est quand même très pratique ce fichier, surtout lorsque les sites sont sur des serveurs mutualisés !

    25/05/2012 à 07:37
  • rencontre black a dit :

    Merci, au moins c’est bien expliqué et l’utilisation du fichier .htaccess est déjà plus clair.
    Après ce que je crains toujours, enfin ce qu’on m’a dis une fois, c’est que les hébergeurs Internet peuvent interpréter ce fichier différemment.

    31/05/2012 à 08:18
  • Cathryn F. Downs a dit :

    Le but principal des fichiers .htaccess est de créer des protections de ressources par dossiers. Avec les serveurs web modernes, il y a beaucoup plus de possibilités offertes par les fichiers .htaccess. Par exemple : pages d’erreurs personnalisées, contrôle d’accès basé sur les adresses IP, redirection automatique d’utilisateurs, empèchement de lister un dossier et l’utilisation de fichiers différents comme fichiers index.

    19/07/2013 à 16:22

Votre adresse email ne sera pas publiée. Champs requis marqués avec *

*