![]() |
![]() |
![]() |
![]() |
![]() |
Les fichiers .htaccess sont des fichiers de configuration d'Apache, permettant de définir des règles dans un répertoire et dans tous ses sous répertoires (qui n'ont pas de tel fichier à l'intérieur). On peut les utiliser pour protéger un répertoire par mot de passe, ou pour changer le nom ou l'extension de la page index, ou encore pour interdire l'accès au répertoire.
Intérêt des fichiers htaccess |
Les fichiers .htaccess peuvent être utilisés dans n'importe quel répertoire virtuel ou sous répertoire.
Les principales raisons d'utilisation des fichiers .htaccess sont :
Principe des fichiers htaccess |
Le fichier .htaccess est placé dans le répertoire dans lequel il doit agir. Il agit ainsi sur les permissions du répertoire qui le contient et de tous ses sous-répertoires.
Vous pouvez placer un autre fichier .htaccess dans un sous-répertoire d'un répertoire déjà contrôlé par un fichier .htaccess.
Le fichier .htaccess du répertoire parent reste en "activité" tant que les fonctionnalités n'ont pas été réécrites.
Les fonctionnalités de ces fichiers étant très puissantes, lisez bien ce tutorial avant de vous lancer dans la création des vôtres.
![]() |
Sous Windows, il est logiquement impossible de créer un fichier .htaccess, puisque Windows ne vous autorisera pas à sauvegarder le fichier tel quel.
Voici la démarche à suivre :
|
Empêcher l'accès à des ressources |
Un fichier .htaccess est composé de deux sections :
AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse AuthGroupFile /repertoire/de/votre/fichier/.FichierDeGroupe AuthName "Accès protégé" AuthType Basic
<Limit GET POST> Require valid-user {instruction d'accès à satisfaire } </Limit>
![]() |
|
Protéger un répertoire par un mot de passe |
Il s'agit d'une des applications les plus utiles du fichier .htaccess
car elle permet de définir de façon sûre (à l'aide
d'un login et d'un mot de passe) les droits d'accès
à des fichiers par certains utilisateurs.
La syntaxe est la suivante:
Voici un exemple de fichier .htaccess
AuthUserFile {emplacement du fichier de mot de passe}
AuthGroupFile {emplacement du fichier de groupe}
AuthName "Accès protégé"
AuthType Basic
<LIMIT GET POST>
Require valid-user
</LIMIT>
La commande AuthUserFile permet de définir l'emplacement du fichier contenant
les logins et les mots de passe des utilisateurs
autorisés à accéder à une ressource donnée.
La commande AuthGroupFile permet de définir l'emplacement du fichier contenant les groupes d'utilisateurs autorisés à s'identifier. Il est possible d'outrepasser cette déclaration en déclarant le fichier suivant : /dev/null.
Voici un exemple de fichier .htaccess
ErrorDocument 403 http://www.commentcamarche.net/accesrefuse.php3
AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse
AuthGroupFile /dev/null
AuthName "Accès sécurisé au site CCM"
AuthType Basic
<LIMIT GET POST>
Require valid-user
</LIMIT>
Le fichier de mot de passe est un fichier texte devant contenir sur chacune des ses lignes le nom de chaque utilisateur suivi des deux points (:), puis du mot de passe crypté (solution recommandée) ou en clair.
Voici un exemple de fichier de mot de passe non crypté (ici .FichierDeMotDePasse)
JFPillou:Toto504
Damien:Robert(32)
Comma:Joe[leTaxi]
Voici le même fichier contenant des mots de passe cryptés :
JFPillou:$apr1$Si0.....$teyL5Y7BR4cHj0sX309Jj0
Damien:$apr1$TD1.....$sfPTHjoufoNsda4HsD1oL0
Comma:$apr1$zF1.....$wYKqRu2aVYlAEQnxVkly8.
.FichierDeMotDePasse est un simple fichier texte contenant les noms des utilisateurs suivis d'un : puis du mot de passe crypté (ou non) de cet utilisateur.
Ce fichier de mot de passe ne devrait pas être mis dans un répertoire virtuel Internet (mais comment faire autrement si l'on ne possède pas de serveur Internet et que notre site est hébergé par un tiers ?).
Il faut de plus prendre la précaution de mélanger des majuscules, des minuscules, des chiffres et des symboles dans le nom du fichier...
Crypter les mots de passe |
Apache fournit un outil permettant de générer facilement des mots de passe cryptés (aussi bien sous Windows que sous Unix), il s'agit de l'utilitaire htpasswd accessible dans le sous-répertoire bin d'Apache.
La syntaxe de cet utilitaire est la suivante :
htpasswd -c {chemin du fichier de mot de passe} utilisateur
htpasswd {chemin du fichier de mot de passe} utilisateur
Le mot de passe sera demandé en ligne de commande avec une confirmation.
Voici un exemple :
htpasswd -c /www/secure/.htpasswd JFPillou
Voici un petit utilitaire vous permettant de crypter vos mots de passe en ligne :
Empêcher l'accès à un répertoire par un domaine |
La syntaxe pour bloquer l'accès d'un répertoire par un domaine
est la suivante:
Allow (all, [liste de domaine])
Deny (all, [liste de domaine])
Order (Allow,Deny ou Deny,Allow)
Order Deny, Allow
Deny from ..LeNomDuDomaine.com
Toutes les personnes (requêtes) provenant du domaine .LeNomDuDomaine.com ne pourront avoir accès aux ressources comprises dans le répertoire et ses sous-répertoires.
La commande Order sert à préciser explicitement que la commande Deny va bien annuler l'effet de Allow et non l'inverse.
Voici un exemple de restriction d'accès :
ErrorDocument 403 http://www.commentcamarche.net/accesrefuse.php3
AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse
AuthGroupFile /dev/null
AuthName "Accès sécurisé au site CCM"
AuthType Basic
<LIMIT GET POST>
order deny,allow
deny from all
allow from 193.48.172.2
require user JFPillou
</LIMIT>
Dans ce cas, l'accès ne sera possible que pour l'utilisateur JFPillou à partir de l'adresse IP
193.48.172.2 et avec le bon mot de passe.
Empêcher l'accès à fichier particulier |
Par défaut, Apache applique les restrictions du fichier .htaccess à l'ensemble des fichiers du répertoire dans lequel il se trouve ainsi qu'à tous les fichiers contenus dans ses sous-répertoires.
Il est également possible de restreindre l'accès pour un ou plusieurs fichiers du répertoire grâce à la balise <Files>.
Voici un exemple de restriction aux fichiers admin.php3 et admin2.php3 :
<Files admin.php3 admin2.php3>
AuthUserFile /repertoire/de/votre/fichier/.FichierDeMotDePasse
AuthGroupFile /dev/null
AuthName "Accès sécurisé au site CCM"
AuthType Basic
<LIMIT GET POST>
require user JFPillou
</LIMIT>
</Files>
Empêcher l'accès à un type de fichiers par un domaine |
Toutes les personnes (requêtes) provenant du domaine .LeNomDuDomaine.com ne pourront avoir accès aux images, dont l'extension est .png, comprises dans le répertoire et ses sous-répertoires.
Autoriser l'accès à un groupe de fichiers par un domaine et un pays |
Toutes les personnes (requêtes) provenant du domaine .phpfrance.com ou des domaines ayant la terminaison .fr pourront avoir accès aux fichiers commençant par php (par exemple, les fichiers phpbonjour.html, phpaurevoir.vxf) compris dans le répertoire et ses sous-répertoires
Protéger un répertoire par un login |
Cette méthode (beaucoup moins sûre que la précédente) permet une authentification
de bas niveau uniquement par le nom de l'utilisateur. La syntaxe est la suivante:
Require (user [liste des utilisateurs], group [liste des groupes], valid-user)
Voici un exemple de ligne du fichier .htaccess
Require User Damien Comma PumpPHP Jeff Rastapaye
Tout utilisateur souhaitant rentrer dans le répertoire ou un de ses sous-répertoires sera refusé sauf s'il s'identifie en donnant un nom figurant dans la liste.
Obliger un utilisateur à satisfaire à au moins une des conditions |
Voici la syntaxe:
Satisfy (any, all)
Order Allow, Deny
Deny from all
Allow from .free.fr
Require User Damien Comma PumpPHP Jeff Rastapaye
Satisfy Any
Ce qui signifie que l'accès au répertoire sera bloqué pour tout le monde à l'exception des personnes qui s'identifient et des requêtes provenant du domaine .free.fr.
Gérer les types de fichiers |
Un type MIME (en anglais MIME type) est un ensemble de types de fichiers standard, permettant d'associer une extension de fichier donnée à une application, afin d'automatiser le lancement de l'application.
Ajouter un Mime-Type à un répertoire |
La syntaxe est la suivante :
AddType (mime/type [liste d'extension])
Voici un exemple de mise en oeuvre du fichier .htacces
AddType image/x-photoshop PSD
AddType application/x-httpd-php .php3
AddType application/x-httpd-php .htm
Le serveur enverra au navigateur Internet le fichier en lui disant de lancer le programme PhotoShop (s'il est installé sur votre machine) et de lui donner le fichier.
Habituellement, ceci est utilisé pour des fichiers nécessitant un Plug-In particulier non reconnu par votre navigateur.
Cette commande permet aussi d'annuler tout élément pré-défini. Ainsi, vous pouvez enregistrer un fichier .wav avec une extension
.gif et préciser au navigateur de considérer les fichiers .gif comme des fichiers audio !
En pratique, on pourra donc utiliser cette commande pour ordonner à PHP de parser d'autres extensions de fichier, .htm par exemple.
Forcer tous les fichiers d'un répertoire à un Mime-Type |
Voici la syntaxe à adopter:
ForceType (mime/type)
Par exemple avec la ligne suivante, tous les fichiers du répertoire contenant le fichier .htaccess seront considérés comme étant des fichiers
.jpg quelque soit leur extension :
ForceType image/jpg
Ce type de commande ne peut être utilisé dans les bornes !
Définir les extension de fichiers par défaut |
La syntaxe à suivre est:
DefaultType (mime/type)
Par exemple
DefaultType text/html
Cette option vous permet de définir le comportement par défaut du navigateur face à des extensions lui étant inconnues.
Ici, il prendra tout fichier inconnu (par exemple 'bonjour', 'Rastapaye.phpfrance') en tant que document HTML.
Autres utilités |
Personnalisation des messages d'erreurs |
Il s'agit d'une fonctionnalité pratique car elle permet de définir une page par défaut pour un type d'erreur donné (Voir l'ensemble des codes d'erreur et leur signification)...
Cela permet d'une part de guider l'utilisateur au lieu d'afficher la banale page d'erreur
du navigateur, ainsi que d'égayer la navigation même en cas d'erreur.
ErrorDocument (code-à-3-chiffres [nom du fichier ou texte ou url])
Les deux lignes suivantes permettent de définir des pages d'erreurs personnalisées au cas où
l'accès à un document serait interdit ou bien que le document n'existe pas:
ErrorDocument 403 /erreurs/403.php3
ErrorDocument 404 /erreurs/404.php3
Ceci vous permet de donner un message d'erreur personnalisé remplaçant les fichiers fournis avec le navigateur.
Voici quelques unes des erreurs les plus courantes à personnaliser :
Changer le fichier index par défaut |
Le fichier index est le fichier qui est affiché lorsqu'aucun nom de fichier n'est défini dans l'URL (par exemple http://www.monserveur.com/repertoire). Cela permet d'éviter que le navigateur liste l'ensemble des fichiers contenus dans le répertoire (pour des raisons de confidentialité).
La syntaxe pour effectuer ce type d'opération est la suivante :
DirectoryIndex (fichiers)
Voici un exemple de mise en application:
DirectoryIndex index.php index.html index.phtml /erreurs/403.php
Lorsque vous essayez d'accéder au répertoire sans préciser la page à afficher,
Apache va avoir recours à la directive DirectoryIndex. En général, par défaut, cette directive
pointe vers index.html puis index.htm.
Dans l'exemple ci-dessus, Apache va commencer par chercher index.php, puis index.html, et ensuite index.phtml. Si aucun de ces trois fichiers existent, la page 403.php (se trouvant dans la racine) sera affichée pour éviter de lister le répertoire.
Tutorial écrit par Jean-François Pillou et Douglas Six