Tutoriel du serveur HTTP Apache : fichiers .htaccess
| Modules Apparentés | Directives Apparentées | |---|---|
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 HTTP Apache. Il est toujours préférable de définir les directives que vous pouvez inclure dans un fichier .htaccess
, car elles produiront le même effet avec de meilleures performances.Les fichiers .htaccess
Si vous voulez donner un autre nom à votre fichier .htaccess
, vous pouvez le faire en utilisant la directive
. Par exemple, si vous préférez nommer votre fichier AccessFileName.config
utilisent la même syntaxe que les fichiers de configuration principaux. Ce que vous pouvez mettre dans ces fichier est déterminé par la directive
. Cette directive spécifie, sous forme de catégories, quelles directives seront traitées si elles se trouvent dans un fichier AllowOverride.htaccess
file, la documentation de cette directive contiendra une section Override, spécifiant quelle valeur doit prendre
pour que cette directive soit traitée.AllowOverride
, vous verrez que cette dernière est permise dans les fichiers AddDefaultCharset.htaccess
(Voir la ligne de contexte dans le résumé de la directive). La ligne Override indique FileInfo
. Vous devez donc avoir au moins AllowOverride FileInfo
Si vous n'êtes pas sûr qu'une directive particulière soit permise dans un fichier .htaccess
, lisez la documentation de cette directive, et consultez la ligne de contexte pour ".htaccess".
est très répandue. Il est aussi souvent avancé, ces dernières années, que les directives de
. Ceci est tout simplement faux. Vous pouvez configurer l'authentification des utilisateurs au niveau de la configuration du serveur principal, et c'est en fait cette méthode qui doit être privilégiée. De même, les directives de mod_rewrite
fonctionneront mieux, à de nombreux égards, dans le contexte du serveur principal.
ne devraient être utilisés que dans le cas où les fournisseurs de contenu ont besoin de modifier la configuration du serveur au niveau d'un répertoire, mais ne possèdent pas l'accès root sur le système du serveur. Si l'administrateur du serveur ne souhaite pas effectuer des modifications de configuration incessantes, il peut être intéressant de permettre aux utilisateurs isolés d'effectuer eux-mêmes ces modifications par le biais de fichiers .htaccess
. Ceci est particulièrement vrai dans le cas où le fournisseur d'accès à Internet héberge de nombreux sites d'utilisateurs sur un seul serveur, et souhaite que ces utilisateurs puissent modifier eux-mêmes leurs configurations.
Cependant et d'une manière générale, il vaut mieux éviter d'utiliser les fichiers .htaccess
. Tout élément de configuration que vous pourriez vouloir mettre dans un fichier .htaccess
Il y a deux raisons principales d'éviter l'utilisation des fichiers .htaccess
La première est liée aux performances. Lorsque la directive
est définie de façon à autoriser l'utilisation des fichiers AllowOverride.htaccess
, httpd va rechercher leur présence dans chaque répertoire. Ainsi, permettre l'utilisation des fichiers .htaccess
est déjà en soi une cause de dégradation des performances, que vous utilisiez effectivement ces fichiers ou non ! De plus, le fichier .htaccess
est chargé en mémoire chaque fois qu'un document fait l'objet d'une requête.
dans tous les répertoires de niveau supérieur, afin de rassembler toutes les directives qui s'appliquent au répertoire courant (Voir la section comment sont appliquées les directives). Ainsi, si un fichier fait l'objet d'une requête à partir d'un répertoire /www/htdocs/exemple
En conséquence, chaque accès à un fichier de ce répertoire nécessite 4 accès au système de fichiers supplémentaires pour rechercher des fichiers .htaccess
, même si aucun de ces fichiers n'est présent. Notez que cet exemple ne peut se produire que si les fichiers .htaccess
La seconde raison d'éviter l'utilisation des fichiers .htaccess
est liée à la sécurité. Si vous permettez aux utilisateurs de modifier la configuration du serveur, il peut en résulter des conséquences sur lesquelles vous n'aurez aucun contrôle. Réfléchissez bien avant de donner ce privilège à vos utilisateurs. Notez aussi que ne pas donner aux utilisateurs les privilèges dont ils ont besoin va entraîner une augmentation des demandes de support technique. Assurez-vous d'avoir informé clairement vos utilisateurs du niveau de privilèges que vous leur avez attribué. Indiquer exactement comment vous avez défini la directive
et diriger les utilisateurs vers la documentation correspondante vous évitera bien des confusions ultérieures.AllowOverride
AddType text/example .exm
Cependant, la perte de performances sera moindre si vous définissez cette directive dans la configuration de votre serveur principal, car cette dernière ne sera chargée qu'une seule fois au moment du démarrage du serveur, alors qu'elle le sera à chaque accès dans le cas d'un fichier .htaccess
peut être entièrement désactivée en définissant la directive
dans les répertoires de niveau supérieur. Les directives sont appliquées selon l'ordre dans lequel elles sont rencontrées. Ainsi, les directives d'un fichier .htaccess
situé dans un répertoire particulier peuvent écraser les directives se trouvant dans des fichiers .htaccess
situés à un niveau supérieur dans l'arborescence des répertoires. Et ces dernières peuvent elles-mêmes avoir écrasé des directives d'un fichier .htaccess
situé à un niveau encore plus haut, ou dans le fichier de configuration du serveur principal.
Dans le répertoire /www/htdocs/exemple1/exemple2
, l'exécution des CGI est interdite, car la dernière définition d'options Options Includes
écrase toute autre définition d'options d'un fichier .htaccess
Comme indiqué dans la documentation sur les Sections de configuration, les fichiers .htaccess
pour
le répertoire correspondant, mais peuvent eux-mêmes être écrasés
par d'autres types de sections des fichiers de la
configuration principale. Cette possibilité peut s'avérer utile pour
forcer certaines configurations, même en cas de présence de l'option
libérale
. Par exemple, pour interdire l'exécution de scripts en autorisant la définition de toute autre option dans les fichiers AllowOverride.htaccess
ne devraient être utilisés que dans le cas où vous n'avez pas accès au fichier de configuration du serveur principal. Voir ci-dessus pour savoir dans quels cas vous devez ou ne devez pas utiliser les fichiers .htaccess
Ceci étant dit, si vous pensez que vous devez quand-même utiliser un fichier .htaccess
AuthType Basic AuthName "Password Required" AuthUserFile /www/passwords/password.file AuthGroupFile /www/passwords/group.file Require Group admins
Vous pouvez vous référer au tutoriel sur l'authentification pour une description plus détaillée de l'authentification et de l'autorisation.
Options +Includes AddType text/html shtml AddHandler server-parsed shtml
Alternativement, si vous souhaitez que tous les fichiers d'un répertoire donné soient considérés comme des programmes CGI, vous pouvez utiliser la configuration suivante :
Options +ExecCGI SetHandler cgi-script
Le plus souvent, le problème vient du fait que la définition de la directive
ne permet pas l'activation des directives de votre fichier AllowOverride.htaccess
. Vérifiez si une directive AllowOverride None
n'affecte pas le répertoire où se trouve votre fichier. Un bon test consiste à mettre des directives dont la syntaxe est erronée dans votre ficher .htaccess
et de recharger la page. Si aucune erreur n'est générée par le serveur, il est pratiquement certain qu'une directive AllowOverride None
Par contre, si vous obtenez des erreurs de serveur lorsque vous tentez d'accéder à des documents, consultez votre journal des erreurs de httpd. Il vous indiquera probablement que la directive utilisée dans votre fichier .htaccess
[Fri Sep 17 18:43:16 2010] [alert] [client 192.168.200.51] /var/www/html/.htaccess: DirectoryIndex not allowed here
Cela signifie soit que vous utilisez une directive qui n'est jamais permise dans les fichiers .htaccess
à un niveau suffisant pour la directive que vous utilisez. Consultez la documentation de cette directive pour déterminer quel cas s'applique.AllowOverride
Le journal des erreurs peut aussi vous signaler une erreur de syntaxe dans l'usage de la directive elle-même.
[Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
Dans ce cas, le message d'erreur sera spécifique à l'erreur de syntaxe que vous avez commise.
Modules | Directives | FAQ | Glossaire | Plan du site
Serveur Apache HTTP Version 2.4
Tutoriel du serveur HTTP Apache : fichiers .htaccess
Langues Disponibles: en | fr | ja | ko | pt-br
Fichiers .htaccess
Que sont ce fichiers, comment les utiliser ?
Les fichiers .htaccess (ou "fichiers de configuration distribués") fournissent une méthode pour modifier la configuration du serveur au niveau d'un répertoire. Un fichier, contenant une ou plusieurs directives de configuration, est placé dans un répertoire de documents particulier, et ses directives
Quand doit-on (ne doit-on pas) utiliser les fichiers .htaccess ?
En principe, vous ne devriez utiliser les fichiers .htaccess que lorsque vous n'avez pas accès au fichier de configuration du serveur principal. Par exemple, la fausse idée selon laquelle l'authentification de l'utilisateur devrait toujours être faite dans les fichiers .htaccess est très répandue. I
Comment sont appliquées les directives ?
Les directives de configuration situées dans un fichier .htaccess s'appliquent au répertoire dans lequel ce fichier .htaccess se trouve, ainsi qu'à tous ses sous-répertoires. Cependant, il est important de garder à l'esprit qu'il peut y avoir des fichiers .htaccess dans les répertoires de niveau sup
Exemple d'authentification
Si vous accédez directement à ce point du document pour apprendre à effectuer une authentification, il est important de noter ceci. Il existe une fausse idée selon laquelle il serait nécessaire d'utiliser les fichiers .htaccess pour implémenter l'authentification par mot de passe. Ceci est tout simp
Exemple d'Inclusion Côté Serveur (Server Side Includes - SSI)
Les fichiers .htaccess sont aussi couramment utilisés pour activer les SSI pour un répertoire particulier. Pour y parvenir, on utilise les directives de configuration suivantes, placées dans un fichier .htaccess enregistré dans le répertoire considéré :
Exemple de CGI
En fin de compte, vous avez décidé d'utiliser un fichier .htaccess pour permettre l'exécution des programmes CGI dans un répertoire particulier. Pour y parvenir, vous pouvez utiliser la configuration suivante :
Résolution des problèmes
De nombreuses raisons peuvent être à l'origine du fait que les directives que vous avez mises dans un fichier .htaccess ne produisent pas l'effet désiré.