Directives conteneurs

Apache dispose d’un certain nombre de directives conteneurs, qui limitent la portée des directives qu’elles contiennent à des hôtes virtuels, des répertoires ou des fichiers particuliers. Ces conteneurs -- notamment <VirtualHost> -- jouent un rôle très important dans le fonctionnement d’un site web car ils définissent des blocs grâce auxquels le web-mestre peut mettre en place un grand nombre de serveurs distincts à l’aide d’un unique serveur Apache. Tout cela sera plus clair lorsque vous aurez lu la section Deux sites et Apache du chapitre 4).

Les sections qui suivent détaillent la syntaxe de ces directives conteneur.

<VirtualHost>

<VirtualHost hôte [: port ]>

...

</VirtualHost>

Configuration du serveur

Une directive <VirtualHost> d’un fichier de configuration agit comme un marqueur HTML : elle introduit un bloc contenant des directives concernant un seul hôte. Ce bloc se termine par </VirtualHost> :

....

<VirtualHost www.butterthlies.com>

ServerAdmin sales@butterthlies.com

DocumentRoot /usr/www/APACHE3/APACHE3/site.virtual/htdocs/customers

ServerName www.butterthlies.com

ErrorLog /usr/www/APACHE3/APACHE3/site.virtual/name-based/logs/error_log

TransferLog /usr/www/APACHE3/APACHE3/site.virtual/name-based/logs/access_log

</VirtualHost>

...

<VirtualHost> indique également l’adresse IP que l’on héberge et, éventuellement, le port. Si ce dernier n’est pas précisé, on suppose qu’il s’agit du port HTTP standard, 80, ou celui indiqué par la directive Port (sauf avec Apache 2). hôte peut également valoir _default_, auquel cas il correspond à tous les hôtes non capturés par les autres directives <VirtualHost>.

Pour un système réel, l’adresse IP sera le nom d’hôte de votre serveur. Il existe trois autres directives conteneurs, qui limitent également la portée de leurs contenus

  • <Directory>
  • <Files>
  • <Location>

Ces conteneurs sont donnés dans l’ordre croissant de leurs priorités : <Directory> est donc surchargé par <Files> et <Files> par <Location>. Vous pouvez mettre des conteneurs <Files> dans un conteneur <Directory>. Leur exécution se fait par groupe, dans l’ordre suivant :

  1. <Directory> (sans expression régulière) et .htaccess sont exécutés en même temps. .htaccess surcharge <Directory>.
  2. <DirectoryMatch> et <Directory> (avec expressions régulières) sont exécutés simultanément.
  3. <Files> et <FilesMatch> sont exécutés simultanément.
  4. <Location> et <LocationMatch> sont exécutés simultanément.

Le groupe 1 est traité du chemin le plus court vers le plus long. Les autres groupes sont traités dans l’ordre de leur apparition dans le fichier de configuration. Les sections des conteneurs <VirtualHost> s’appliquent après les sections correspondantes situées à l’extérieur.

<Directory> et <DirectoryMatch>

<Directory répertoire >

...

</Directory>

La directive <Directory> permet d’appliquer des directives à un répertoire ou à un groupe de répertoires. Il est important de comprendre que répertoire désigne des répertoires absolus et que <Directory agit donc sur le système de fichiers global, pas uniquement sur l’arborescence DocumentRoot. répertoire peut contenir des caractères génériques -- ? correspond à un caractère unique, * à une suite de caractères éventuellement nulle, [] correspond à un caractère pris parmi l’ensemble indiqué ( [a-d] signifie « un caractère qui est soit a, soit b, soit c, soit d »). Si répertoire commence par ~, la suite peut être une expression régulière complète.

<DirectoryMatch> a le même effet que <Directory ~ > : il attend donc une expression régulière. Par exemple :

<Directory ~ /[a-d].*>

et :

<DirectoryMatch /[a-d].*>

signifient donc toutes deux « n’importe quel nom de répertoire sous la racine, commençant par a, b, c ou d ».

<Files> et <FilesMatch>

<Files fichier >

...

</Files>

La directive <Files> limite la portée des directives qu’elle contient au fichier indiqué, qui doit être spécifié au moyen d’un chemin relatif à DocumentRoot. Ce nom peut contenir des caractères génériques ou des expressions régulières complètes s’il est préfixé par ~. <FilesMatch> peut être suivi d’une expression régulière sans que ce ~ ne soit nécessaire. Ainsi :

<FilesMatch "\.(gif|jpe?g|png)$">

capture les extensions courantes pour les fichiers graphiques.

Si vous souhaitez que vos catalogues bénéficient d’un traitement spécial :

<FilesMatch catalogue.*>

À la différence de <Directory> et <Location>, <Files> peut apparaître dans un fichier .htaccess.

<Location> et <LocationMatch>

<Location URL >

...

</Location>

La directive <Location> limite la portée des directives qu’elle contient aux URL spécifiées, qui peuvent contenir des caractères génériques. Les URL préfixées par ~ peuvent contenir des expressions régulières. Pour suivre le traitement des expressions régulières par Apache 1.3, * et ? ne capturent plus /. La directive <LocationMatch> est suivie d’une expression régulière non préfixée par ~.

Quasiment tout ce qui est autorisé dans un conteneur <Directory> l’est également dans <Location>, mais bien que AllowOverride ne provoque pas d’erreur dans un conteneur <Location>, il n’a aucune raison de s’y trouver.

<IfDefine>

<IfDefine nom >

...

</IfDefine>

La directive <IfDefine> active un conteneur si l’option -D nom a été passée à Apache au démarrage. Cela permet d’avoir plusieurs configurations dans un même fichier. Cette directive est surtout utilisée pour les tests.

<IfModule>

<IfModule [!] fichier-module >

...

</IfModule>

La directive <IfModule> active un conteneur si le module indiqué a été compilé ou chargé dynamiquement dans Apache. Avec le préfixe !, le conteneur n’est activé que si le module n’a pas été compilé ou chargé. On peut imbriquer plusieurs directives <IfModule>. fichier-module doit être le nom du fichier source du module : mod_log_config.c, par exemple.

Apache La référence
titlepage.xhtml
APACHE-la-REF_split_000.htm
APACHE-la-REF_split_001.htm
APACHE-la-REF_split_002.htm
APACHE-la-REF_split_003.htm
APACHE-la-REF_split_004.htm
APACHE-la-REF_split_005.htm
APACHE-la-REF_split_006.htm
APACHE-la-REF_split_007.htm
APACHE-la-REF_split_008.htm
APACHE-la-REF_split_009.htm
APACHE-la-REF_split_010.htm
APACHE-la-REF_split_011.htm
APACHE-la-REF_split_012.htm
APACHE-la-REF_split_013.htm
APACHE-la-REF_split_014.htm
APACHE-la-REF_split_015.htm
APACHE-la-REF_split_016.htm
APACHE-la-REF_split_017.htm
APACHE-la-REF_split_018.htm
APACHE-la-REF_split_019.htm
APACHE-la-REF_split_020.htm
APACHE-la-REF_split_021.htm
APACHE-la-REF_split_022.htm
APACHE-la-REF_split_023.htm
APACHE-la-REF_split_024.htm
APACHE-la-REF_split_025.htm
APACHE-la-REF_split_026.htm
APACHE-la-REF_split_027.htm
APACHE-la-REF_split_028.htm
APACHE-la-REF_split_029.htm
APACHE-la-REF_split_030.htm
APACHE-la-REF_split_031.htm
APACHE-la-REF_split_032.htm
APACHE-la-REF_split_033.htm
APACHE-la-REF_split_034.htm
APACHE-la-REF_split_035.htm
APACHE-la-REF_split_036.htm
APACHE-la-REF_split_037.htm
APACHE-la-REF_split_038.htm
APACHE-la-REF_split_039.htm
APACHE-la-REF_split_040.htm
APACHE-la-REF_split_041.htm
APACHE-la-REF_split_042.htm
APACHE-la-REF_split_043.htm
APACHE-la-REF_split_044.htm
APACHE-la-REF_split_045.htm
APACHE-la-REF_split_046.htm
APACHE-la-REF_split_047.htm
APACHE-la-REF_split_048.htm
APACHE-la-REF_split_049.htm
APACHE-la-REF_split_050.htm
APACHE-la-REF_split_051.htm
APACHE-la-REF_split_052.htm
APACHE-la-REF_split_053.htm
APACHE-la-REF_split_054.htm
APACHE-la-REF_split_055.htm
APACHE-la-REF_split_056.htm
APACHE-la-REF_split_057.htm
APACHE-la-REF_split_058.htm
APACHE-la-REF_split_059.htm
APACHE-la-REF_split_060.htm
APACHE-la-REF_split_061.htm
APACHE-la-REF_split_062.htm
APACHE-la-REF_split_063.htm
APACHE-la-REF_split_064.htm
APACHE-la-REF_split_065.htm
APACHE-la-REF_split_066.htm
APACHE-la-REF_split_067.htm
APACHE-la-REF_split_068.htm
APACHE-la-REF_split_069.htm
APACHE-la-REF_split_070.htm
APACHE-la-REF_split_071.htm
APACHE-la-REF_split_072.htm
APACHE-la-REF_split_073.htm
APACHE-la-REF_split_074.htm
APACHE-la-REF_split_075.htm
APACHE-la-REF_split_076.htm
APACHE-la-REF_split_077.htm
APACHE-la-REF_split_078.htm
APACHE-la-REF_split_079.htm
APACHE-la-REF_split_080.htm
APACHE-la-REF_split_081.htm
APACHE-la-REF_split_082.htm
APACHE-la-REF_split_083.htm
APACHE-la-REF_split_084.htm
APACHE-la-REF_split_085.htm
APACHE-la-REF_split_086.htm
APACHE-la-REF_split_087.htm
APACHE-la-REF_split_088.htm
APACHE-la-REF_split_089.htm
APACHE-la-REF_split_090.htm
APACHE-la-REF_split_091.htm
APACHE-la-REF_split_092.htm
APACHE-la-REF_split_093.htm
APACHE-la-REF_split_094.htm
APACHE-la-REF_split_095.htm
APACHE-la-REF_split_096.htm
APACHE-la-REF_split_097.htm
APACHE-la-REF_split_098.htm
APACHE-la-REF_split_099.htm
APACHE-la-REF_split_100.htm
APACHE-la-REF_split_101.htm
APACHE-la-REF_split_102.htm
APACHE-la-REF_split_103.htm
APACHE-la-REF_split_104.htm
APACHE-la-REF_split_105.htm
APACHE-la-REF_split_106.htm
APACHE-la-REF_split_107.htm
APACHE-la-REF_split_108.htm
APACHE-la-REF_split_109.htm
APACHE-la-REF_split_110.htm
APACHE-la-REF_split_111.htm
APACHE-la-REF_split_112.htm
APACHE-la-REF_split_113.htm
APACHE-la-REF_split_114.htm
APACHE-la-REF_split_115.htm
APACHE-la-REF_split_116.htm
APACHE-la-REF_split_117.htm
APACHE-la-REF_split_118.htm
APACHE-la-REF_split_119.htm
APACHE-la-REF_split_120.htm
APACHE-la-REF_split_121.htm
APACHE-la-REF_split_122.htm
APACHE-la-REF_split_123.htm
APACHE-la-REF_split_124.htm
APACHE-la-REF_split_125.htm
APACHE-la-REF_split_126.htm
APACHE-la-REF_split_127.htm
APACHE-la-REF_split_128.htm
APACHE-la-REF_split_129.htm
APACHE-la-REF_split_130.htm
APACHE-la-REF_split_131.htm
APACHE-la-REF_split_132.htm
APACHE-la-REF_split_133.htm
APACHE-la-REF_split_134.htm
APACHE-la-REF_split_135.htm
APACHE-la-REF_split_136.htm
APACHE-la-REF_split_137.htm
APACHE-la-REF_split_138.htm
APACHE-la-REF_split_139.htm
APACHE-la-REF_split_140.htm
APACHE-la-REF_split_141.htm
APACHE-la-REF_split_142.htm
APACHE-la-REF_split_143.htm
APACHE-la-REF_split_144.htm
APACHE-la-REF_split_145.htm
APACHE-la-REF_split_146.htm
APACHE-la-REF_split_147.htm
APACHE-la-REF_split_148.htm
APACHE-la-REF_split_149.htm
APACHE-la-REF_split_150.htm
APACHE-la-REF_split_151.htm
APACHE-la-REF_split_152.htm
APACHE-la-REF_split_153.htm
APACHE-la-REF_split_154.htm
APACHE-la-REF_split_155.htm
APACHE-la-REF_split_156.htm
APACHE-la-REF_split_157.htm
APACHE-la-REF_split_158.htm
APACHE-la-REF_split_159.htm
APACHE-la-REF_split_160.htm
APACHE-la-REF_split_161.htm
APACHE-la-REF_split_162.htm
APACHE-la-REF_split_163.htm
APACHE-la-REF_split_164.htm
APACHE-la-REF_split_165.htm
APACHE-la-REF_split_166.htm
APACHE-la-REF_split_167.htm
APACHE-la-REF_split_168.htm
APACHE-la-REF_split_169.htm
APACHE-la-REF_split_170.htm
APACHE-la-REF_split_171.htm
APACHE-la-REF_split_172.htm
APACHE-la-REF_split_173.htm
APACHE-la-REF_split_174.htm