Serveur HTTP Apache Version 2.4
Les directives des fichiers de configuration peuvent s'appliquer
au serveur dans son ensemble, ou seulement à des répertoires, fichiers, hôtes,
ou URLs particuliers. Ce document décrit comment utiliser les conteneurs de
sections de configuration ou les fichiers .htaccess
pour
modifier la portée des directives de configuration.
Modules Apparentés | Directives Apparentées |
---|---|
Il existe deux grands types de conteneurs. La plupart des conteneurs sont
évalués pour chaque requête. Les directives qu'ils contiennent s'appliquent
seulement aux requêtes qui sont concernées par le conteneur. En revanche,
les conteneurs
<IfDefine>
, <IfModule>
, et
<IfVersion>
sont
évalués seulement au démarrage et au redémarrage du serveur.
Si leurs conditions sont vérifiées au démarrage, les directives qu'ils contiennent
s'appliqueront à toutes les requêtes. Si leurs conditions ne sont pas vérifiées, les
directives qu'ils contiennent seront ignorées.
Le conteneur <IfDefine>
contient des directives qui ne seront appliquées que si un paramètre
approprié a été défini dans la ligne de commande de httpd
.
Par exemple,
avec la configuration suivante, toutes les requêtes seront redirigées vers
un autre site si le serveur est démarré en utilisant la ligne de commande :
httpd -DClosedForNow
:
<IfDefine ClosedForNow> Redirect "/" "http://otherserver.example.com/" </IfDefine>
Le conteneur <IfModule>
est similaire; les directives qu'il contient ne s'appliqueront que si
un module particulier est disponible au niveau du serveur.
Le module doit être soit compilé statiquement dans le serveur, soit
dynamiquement et dans ce cas, la ligne LoadModule
correspondante doit apparaître
plus haut dans le fichier de configuration. Ce conteneur ne doit être
utilisé que dans le cas où votre fichier de configuration doit fonctionner
indépendamment de la présence ou de l'absence de certains modules.
Il ne doit pas contenir de directives que vous souhaitez voir s'appliquer
systématiquement, car vous pouvez perdre ainsi de précieux messages d'erreur
à propos de modules manquants.
Dans l'exemple suivant, la directive MimeMagicFile
ne s'appliquera que si le
module mod_mime_magic
est disponible.
<IfModule mod_mime_magic.c> MimeMagicFile "conf/magic" </IfModule>
Le conteneur
<IfVersion>
est similaire aux conteneurs <IfDefine>
et <IfModule>
; les directives qu'il contient ne
s'appliqueront que si une version particulière du serveur s'exécute. Ce
conteneur a été conçu pour une utilisation dans les suites de tests
et les grands réseaux qui doivent prendre en compte différentes versions
et configurations de httpd.
<IfVersion >= 2.4> # les directives situées ici ne s'appliquent que si la version
# est supérieure ou égale à 2.4.0. </IfVersion>
<IfDefine>
,
<IfModule>
, et
<IfVersion>
peuvent inverser leur test conditionnel en le faisant précéder d'un "!".
De plus, ces sections peuvent être imbriquées afin de définir des restrictions
plus complexes.
Les conteneurs de sections de configuration les plus couramment utilisés
sont ceux qui modifient la configuration de points particuliers du système de
fichiers ou de l'arborescence du site web. Tout d'abord, il est important de
comprendre la différence entre les deux. Le système de fichiers est une vue
de vos disques tels qu'ils sont perçus par votre système d'exploitation.
Par exemple, avec une installation par défaut,
Apache httpd est situé dans /usr/local/apache2
pour le système de
fichiers UNIX, ou "c:/Program Files/Apache Group/Apache2"
pour
le système de fichiers Windows. (Notez que des slashes directs doivent
toujours être utilisés comme séparateur de chemin
dans les fichiers de configuration d'Apache httpd, même sous
Windows.) Quant à
l'arborescence du site web, il s'agit d'une vue de votre site
tel que présenté par le
serveur web et perçue par le client. Ainsi le chemin /dir/
dans
l'arborescence du site web correspond au chemin
/usr/local/apache2/htdocs/dir/
dans le système de fichiers pour
une installation d'Apache httpd par défaut sous UNIX.
En outre, l'arborescence du site web n'a pas besoin de correspondre en permanence au
système de fichiers, car les pages web peuvent être générées dynamiquement
à partir de bases de données ou d'autres emplacements.
Les conteneurs <Directory>
et <Files>
,
ainsi que leurs équivalents acceptant les
expressions rationnelles,
appliquent des directives à certaines parties du système de fichiers.
Les directives contenues dans une section <Directory>
s'appliquent au répertoire
précisé, ainsi qu'à tous ses sous-répertoires et aux fichiers que ces
derniers contiennent.
Le même effet peut être obtenu en utilisant les fichiers .htaccess. Par exemple, avec la
configuration suivante, l'indexation sera activée pour le répertoire
/var/web/dir1
et tous ses sous-répertoires.
<Directory "/var/web/dir1"> Options +Indexes </Directory>
Les directives contenues dans une section <Files>
s'appliquent à tout fichier
avec le nom spécifié, quel que soit le répertoire dans lequel il se trouve.
Ainsi par exemple, les directives de configuration suivantes, si elles sont
placées dans la section principale du fichier de configuration, vont interdire
l'accès à tout fichier nommé private.html
quel que soit
l'endroit où il se trouve.
<Files "private.html"> Require all denied </Files>