Aller au contenu

.htaccess

Un article de Wikipédia, l'encyclopédie libre.
Exemple de fichier .htaccess

Les fichiers .htaccess (pour hypertext access) sont des fichiers de configuration des serveurs HTTP Apache. Leur particularité est leur emplacement : dans les répertoires de données du site web, au lieu du répertoire de configuration d'Apache. La portée de leur configuration est limitée au contenu du répertoire où ils résident. Cette particularité apporte deux principaux avantages : leur gestion peut être déléguée à des utilisateurs n'ayant pas le droit de gérer le serveur HTTP lui-même ; les modifications sont prises en compte sans qu'il soit nécessaire de redémarrer le serveur HTTP.

Les fichiers .htaccess sont notamment utilisés pour configurer des droits d'accès, des redirections d'URL, des messages d'erreur personnalisés, et des associations d'extension de nom de fichier à un type MIME.

Sécurité et restrictions

[modifier | modifier le code]

Les fichiers .htaccess permettent à un utilisateur autorisé de déposer des fichiers dans un répertoire du serveur afin de surcharger au vol la configuration de celui-ci. L'administrateur d'un serveur Apache restreint donc en général l'utilisation des fichiers .htaccess à quelques directives particulières grâce à la directive AllowOverride.

L'utilisation des fichiers .htaccess a un coût en matière de performances car le serveur web doit vérifier la présence d'un tel fichier lors du traitement de chaque requête.

Filtrage d'adresse IP

[modifier | modifier le code]

Les fichiers .htaccess permettent le filtrage d'adresses IP[1].

Pour bloquer une adresse IP il faut rajouter au .htaccess :

Deny from {IP}

Vous pouvez aussi bloquer plusieurs adresses IP :

Deny from all

Mais si vous mettez cette phrase, même vous ne pourrez plus accéder à votre site web, c'est pour cela que vous devez rajouter en dessous de la phrase précédente :

Allow from {IP}

*{IP} Représente l'adresse IP à utiliser.

Réécriture d'URL

[modifier | modifier le code]

Les fichiers .htaccess permettent également de réécrire les URL afin de les simplifier. Par exemple, une URL du type :

http://www.example.com/viewtopic.php?order=0&start=1256&message=50

peut être transformée en :

http://www.example.com/topic-1256-50.html

On suppose ici que la valeur 'order' est à 0 par défaut. Le .htaccess contiendra :

RewriteEngine on
RewriteRule ^topic-([0-9]+)-([0-9]+)\.html$ viewtopic.php?order=0&start=$1&message=$2 [L]

Concrètement, pour être très précis, c'est l'URL "topic-1256-50.html" qui est réécrite par le serveur, sans que personne s'en rende compte, en "viewtopic.php?order=0&start=1256&message=50", cette dernière étant interprétable par le script PHP situé sur le serveur[2].

Le module d’URL Rewriting facilite le référencement sur les moteurs de recherche. Il n'est cependant pas activé chez tous les hébergeurs, en particulier les gratuits.

Redirection de pages temporaire ou Redirection 302

[modifier | modifier le code]

C'est une fonctionnalité surtout utilisée pour faire s'afficher une page de maintenance.

Si la page prévenant l'utilisateur de l'indisponibilité du site est la suivante :

http://www.example.com/maintenance.html

Le code à ajouter temporairement au fichier .htaccess est alors :

Redirect 302 / http://www.example.com/maintenance.html

Cette redirection n'affecte en aucune sorte le référencement du site auprès des moteurs de recherche.

La sécurisation d'un répertoire ou d'un fichier par mot de passe

[modifier | modifier le code]

L'une des principales utilités du fichier .htaccess est de sécuriser une partie d'un site. Pour cela, on place dans le répertoire à protéger un fichier .htaccess avec le contenu suivant :

AuthUserFile /var/www/.htpasswd
AuthGroupFile /var/www/.htgroup
AuthName "Documents administratifs"
AuthType Basic
require group Membres Admin

Les couples utilisateur / empreinte du mot de passe sont stockés dans le fichier .htpasswd de la façon suivante :

afsanat:$apr1$TVFhC/..$rRph2WN9n1DeW6Cs89So2.
noemie:$apr1$vAVyg…$HXoAN3bh.Ff6hxXKopIFpE1
kyle:$apr1$7ALHn/..$aV8IuW3jqdQWaStyX2Izg.
davin:$apr1$2o89Z/..$SVDHl7FK4A0w8le.cq1Z1

La majorité des hébergeurs proposent un outil permettant de calculer l'empreinte d'un mot de passe (pour éviter de le stocker en clair). Le programme htpasswd fourni avec le serveur Apache permet également de le faire, ainsi que la fonction crypt de PHP.

Les groupes d'utilisateurs sont définis dans le fichier .htgroup de la façon suivante :

Membres:kyle davin noemie
Admin:afsanat noemie

L'authentification Basic est toujours disponible chez tous les hébergeurs. Il existe d'autres types d'authentification beaucoup plus sûrs, utilisés notamment en matière de sécurité bancaire ou pour la lecture des cartes d'identités électroniques, mais ces authentifications nécessitent des modules spécifiques.

La gestion des pages d'erreurs

[modifier | modifier le code]

Apache fournit une page générique affichant une erreur (avec son code défini dans la RFC) lorsqu'une ressource ne peut être accédée directement. Il est possible de créer une page d'erreur personnalisée (ici la page erreur.html à la racine du site) et de la mentionner dans le fichier .htaccess de la manière qui suit :

ErrorDocument 401 /erreur.html
ErrorDocument 403 /erreur.html
ErrorDocument 404 /erreur.html
ErrorDocument 414 /erreur.html

La redirection des erreurs est toujours disponible quel que soit l'hébergeur.

Renommer .htaccess

[modifier | modifier le code]

Une des particularités de ce fichier de configuration Apache est qu'il peut être renommé. Il suffit pour cela de placer dans le fichier de configuration httpd.conf la ligne suivante :

AccessFileName le_nouveau_nom

Ce mécanisme permet de disposer de toutes les fonctionnalités offertes par le fichier de configuration .htaccess sur un système ne supportant pas les noms de fichiers dont le premier caractère est un point.

Créer un fichier .htaccess sous Windows

[modifier | modifier le code]

Les systèmes d'exploitation Windows ne permettent pas de renommer un fichier en .htaccess sauf si vous affichez les extensions via option des dossiers via l'environnement de bureau. Pour créer un fichier .htaccess, il faut créer un nouveau fichier à l'aide d'un éditeur de texte et sélectionner Enregistrer sous… dans le menu Fichier. Dans la fenêtre de sauvegarde, il faut entrer .htaccess (sans oublier de choisir l'option tous les fichiers au lieu de _Fichiers texte (*.txt)_ pour que l’éditeur ne rajoute pas l'extension .txt (une méthode plus simple est de mettre le nom entre guillemets) puis cliquer sur Enregistrer.

Il est également possible d'utiliser un éditeur de texte avancé comme Notepad++ qui permet un enregistrement naturel de ces fichiers, ou alors, de créer un fichier txt.htaccess qui sera ensuite renommé sur le serveur, ou encore de créer un fichier texte appelé htaccess.txt par exemple, puis de le renommer en tapant en ligne de commande sous windows (cmd.exe) : rename htaccess.txt .htaccess.

Pour les utilisateurs de solutions WAMP, et avec l'ajout d'un serveur FTP comme FileZilla par exemple, il est également possible de se servir d'un client FTP. Il suffit d'enregistrer le fichier sous format .txt puis de se connecter via FTP pour remplacer htaccess.txt par .htaccess.

Une autre façon de créer un .htaccess avec la ligne de commande : echo >.htaccess

Notes et références

[modifier | modifier le code]
  1. « Filtrer les adresses IP avec le htaccess | Le savoir », sur www.le-savoir.fr (consulté le )
  2. Tutoriel URL Rewriting, WebRankInfo, 10/02/2017

Liens externes

[modifier | modifier le code]

Sur les autres projets Wikimedia :