<Directory>
, <Location>
et <Files>
ne peuvent contenir que les directives pertinentes dans un contexte de répertoires, d'URL ou de fichiers
respectivement. Des fichiers .htaccess pourront être placés en plus dans chaque répertoire to pour appliquer des directives locales à chacun des répertoires. Cette page explique en quoi ces différentes sections sont différentes et comment elles interagissent, c'est à dire comment Apache decide quelles directives appliquer à un répertoire ou une URL particulière.
<Directory>
l'est aussi dans des sections <Location>
(sauf des sous-sections <Files>
. (Le code ne précise rien dans ce cas, ce qui apparaît comme un bug identifié). Semantiquement cependant, certaines directives n'ont pas réellement de sens dans certains contextes. Un cas notable est la directive AllowOverrides, qui n'a aucune signification dans une section <Location>
. De même pour la directive <Files>
-- Syntaxiquement, tout passe correctement, mais il reste cependant un aspect sémantique à considérer avant de configurer certaines sections.
<Directory>
(sauf tout ce qui concerne les expressions régulières) et
.htaccess sont évaluées simultanément (.htaccess surchargeant
<Directory>
le cas échéant)
<DirectoryMatch>
, et
<Directory>
pour ce qui concerne les expressions régulières
<Files>
et <FilesMatch>
sont ensuite considérées simultanément
<Location>
et <LocationMatch>
sont enfin considérées simultanément
<Directory>
, chaque groupe d'instructions est considéré dans l'ordre où il apparait dans les fichiers de configuration. Les sections <Directory>
(groupe 1 ci-dessus) est traité en prenant d'abord les répertoires les plus courts vers les plus longs. Si plusieurs sections <Directory>
visent le même répertoire, alors elles sont traitées dans l'ordre d'apparition dans les fichiers de configuration. Ces fichiers de configuration
sont lus dans cet ordre : httpd.conf, srm.conf et
access.conf. Les parties de configuration incluses via une directive Include
seront considérées comme si elles faisaient partie intégrante du fichier qui les contient
à l'endroit même de la directive Include
.
Les sections situées dans des sur-sections <VirtualHost>
sont appliquées après les sections de même cible, mais situées en dehors de tout contexte d'hôte virtuel. Ceci permet à des hôtes virtuels de surcharger la configuration du serveur principal. (Note : ceci ne fonctionne correctement qu'à partir des versions 1.2.2 et 1.3a2. Pour toutes les versions antérieures, les sections à l'intérieur de définitions d'hôtes virtuels étaient appliquées avant celles attribuées au serveur principal).
<Directory>
et/ou
<Files>
.
<Location>
<Directory>
. Cela reste une faute conceptuelle due au fait que les proxy existaient avant que ne soit implémenté la directive <Location>
. Une version future du langage de configuration proposera la configuration proxy par la directive <Location>
.
Autre note:
<Location>
/<LocationMatch>
est actuellement exécutée juste avant la phase de translation de noms (celle qui utilisent les Aliases
et DocumentRoots
pour faire correspondre les URL aux fichiers). Les résultats de cette séquence sont effacés une fois la translation effectuée.