Serveur HTTP Apache Version 2.4
Les fichiers .htaccess
fournissent une méthode pour
modifier la configuration du serveur au niveau de chaque répertoire.
Modules Apparentés | Directives Apparentées |
---|---|
.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 HTTP 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.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
s'appliquent à ce répertoire et à tous ses sous-répertoires.
Si vous voulez donner un autre nom à votre fichier
.htaccess
, vous pouvez le faire en utilisant la
directive AccessFileName
. Par
exemple, si vous préférez nommer votre fichier
.config
, vous pouvez mettre ceci dans le fichier de
configuration de votre serveur :
AccessFileName ".config"
En général, les fichiers .htaccess
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 AllowOverride
. Cette directive spécifie,
sous forme de catégories, quelles directives seront traitées si
elles se trouvent dans un fichier .htaccess
. Si une
directive est permise dans un fichier .htaccess
file,
la documentation de cette directive contiendra une section Override,
spécifiant quelle valeur doit prendre AllowOverride
pour que cette directive
soit traitée.
Par exemple, si vous regardez la documentation de la directive
AddDefaultCharset
, vous verrez
que cette dernière est permise dans les fichiers
.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
pour que cette directive soit
traitée dans les fichiers .htaccess
.
Contexte : | configuration du serveur, serveur virtuel, directory, .htaccess |
Override: | 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".
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. Il est aussi souvent avancé, ces dernières
années, que les directives de mod_rewrite
doivent
être définies dans les fichiers .htaccess
. 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.
Les fichiers .htaccess
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
, peut aussi être mis, et avec la même
efficacité, dans une section <Directory>
du fichier de configuration de
votre serveur principal.
Il y a deux raisons principales d'éviter l'utilisation des
fichiers .htaccess
.
La première est liée aux performances. Lorsque la directive
AllowOverride
est définie de
façon à autoriser l'utilisation des fichiers .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.
Notez aussi que httpd doit rechercher les fichiers
.htaccess
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
, httpd doit rechercher les
fichiers suivants :
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/exemple/.htaccess
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
ont été
autorisés pour le répertoire /
, ce qui est rarement le
cas.
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