Serveur Apache HTTP Version 2.4

Apache > Serveur HTTP > Documentation > Version 2.4

# Fichiers de configuration

Ce document décrit les fichiers utilisés pour configurer le Serveur HTTP Apache.

## Fichiers de configuration principaux

Modules Apparentés | Directives Apparentées
--- | ---
`mod_mime` | `<IfDefine>` `Include` `TypesConfig`

La configuration du serveur HTTP Apache est effectuée en plaçant des directives dans des fichiers de configuration au format texte. Le fichier de configuration principal se nomme en général `httpd.conf`. La localisation de ce fichier est définie à la compilation, mais peut être redéfinie à l'aide de l'option de ligne de commande `-f`. En outre, d'autres fichiers de configuration peuvent être ajoutés à l'aide de la directive `Include`, et des caractères de remplacement peuvent être utilisés pour inclure de nombreux fichiers de configuration. Des directives de tous types peuvent être placées dans chacun de ces fichiers de configuration. Les modifications dans les fichiers de configuration principaux ne sont prises en compte par httpd que lorsque le serveur est démarré ou redémarré.

Le serveur lit aussi un fichier contenant les types de document mime; ce fichier est défini par la directive `TypesConfig`, et se nomme `mime.types` par défaut.

## Syntaxe des fichiers de configuration

Les fichiers de configuration de httpd contiennent une directive par ligne. On peut utiliser l'anti-slash "\" comme dernier caractère d'une ligne pour indiquer que la directive continue à la ligne suivante. Il ne doit y avoir aucun caractère ni espace entre l'anti-slash et la fin de la ligne.

Les arguments des directives sont séparés les uns des autres par des espaces. Si un argument contient des espaces, il doit être entouré de guillemets.

Les directives dans les fichiers de configuration ne sont pas sensibles à la casse, mais leurs arguments le sont souvent. Les lignes qui débutent par le caractère "#" sont interprétées comme des commentaires, et sont ignorées. Les commentaires ne doivent pas apparaître sur la même ligne qu'une directive de configuration. Les espaces précédant une directive sont ignorés; vous pouvez par conséquent indenter les directives afin d'améliorer la lisibilité. Les lignes vides sont aussi ignorées.

Les valeurs des variables d'environnement ou des variables définies via la directive `Define` peuvent être utilisées dans le fichier de configuration en utilisant la syntaxe `${VAR}`. Si "VAR" est le nom d'une variable valide, la valeur de la variable est alors substituée à la chaîne `${VAR}`, et le processus de lecture du fichier de configuration continue comme si la chaîne correspondant à la valeur de la variable s'y était trouvée littéralement. Les variables définies via la directive `Define` l'emportent sur les autres variables d'environnement du shell. Si la variable "VAR" n'est pas trouvée, la chaîne `${VAR}` n'est pas modifiée, et un avertissement est enregistré dans le journal. Le caractère ":" est interdit dans les noms de variables afin d'éviter tout conflit avec la syntaxe de la directive `RewriteMap`.

Seules les variables d'environnement du shell définies avant le démarrage du serveur peuvent être utilisées dans les extensions. Les variables d'environnement définies dans le fichier de configuration lui-même, par exemple avec `SetEnv`, prennent effet trop tard pour pouvoir être utilisées dans les extensions au sein du fichier de configuration.

La longueur maximale d'une ligne dans un fichier de configuration normal, après substitution des variables et fusion des lignes interrompues, est approximativement de 16 Mo. Dans les fichiers .htaccess, la longueur maximale est de 8190 caractères.

Vous pouvez vérifier l'absence d'erreurs de syntaxe dans vos fichiers de configuration sans démarrer le serveur à l'aide de la commande `apachectl configtest` ou de l'option de ligne de commande `-t`.

Vous pouvez utiliser la définition `-DDUMP_CONFIG` de `mod_info` pour afficher la configuration avec tous les fichiers inclus et les variables d'environnement évaluées, tous les commentaires et les sections `<IfDefine>` et `<IfModule>` non actives ayant été supprimés. Cependant, la sortie ne reflète pas les fusions ou écrasements pouvant intervenir en cas de définitions multiples de directives.

## Modules

Modules Apparentés | Directives Apparentées
--- | ---
`mod_so` | `<IfModule>` `LoadModule`

httpd est un serveur modulaire. Ceci implique que seules les fonctionnalités les plus courantes sont incluses dans le serveur de base. Les fonctionnalités étendues sont fournies à l'aide de modules qui peuvent être chargés dans httpd. Par défaut, un jeu de modules de base est inclus dans le serveur à la compilation. Si le serveur est compilé de façon à utiliser les modules chargés dynamiquement, alors les modules peuvent être compilés séparément et chargés à n'importe quel moment à l'aide de la directive `LoadModule`. Dans le cas contraire, httpd doit être recompilé pour ajouter ou supprimer des modules. Les directives de configuration peuvent être incluses de manière conditionnelle selon la présence ou l'absence d'un module particulier en les plaçant dans un bloc `<IfModule>`.

Pour voir quels modules ont été compilés avec le serveur, vous pouvez utiliser l'option de ligne de commande `-l`.

## Portée des directives

Modules Apparentés | Directives Apparentées
--- | ---
| `<Directory>` `<DirectoryMatch>` `<Files>` `<FilesMatch>` `<Location>` `<LocationMatch>` `<VirtualHost>`

Les directives placées dans les fichiers de configuration principaux s'appliquent au serveur dans son ensemble. Si vous souhaitez modifier la configuration d'une partie du serveur seulement, vous pouvez limiter la portée de vos directives en les plaçant dans une section `<Directory>`, `<DirectoryMatch>`, `<Files>`, `<FilesMatch>`, `<Location>`, ou `<LocationMatch>`. Ces sections limitent le champ d'application des directives qu'elles contiennent à des URls ou des portions du système de fichiers particulières. Elles peuvent aussi être imbriquées, ce qui permet une configuration très fine.

httpd peut servir simultanément de nombreux sites web au travers des Hôtes Virtuels. La portée des directives peut ainsi être limitée en les plaçant dans des sections `<VirtualHost>`, afin qu'elles ne s'appliquent qu'aux requêtes pour un site web particulier.

Bien que la plupart des directives puissent être placées dans chacune de ces sections, certaines d'entre elles n'ont aucun sens dans certains contextes. Par exemple, les directives qui contrôlent la création des processus n'ont de sens que dans le contexte du serveur principal. Pour déterminer quelles directives peuvent être placées dans quelles sections, consultez le Contexte de la directive. Pour plus d'informations, nous fournissons des détails dans Comment fonctionnent les sections Directory, Location et Files.

## Fichiers .htaccess

Modules Apparentés | Directives Apparentées
--- | ---
| `AccessFileName` `AllowOverride`

httpd permet la gestion décentralisée de la configuration via des fichiers spéciaux placés dans l'arborescence du site web. Ces fichiers spéciaux se nomment en général `.htaccess`, mais tout autre nom peut être spécifié à l'aide de la directive `AccessFileName`. Les directives placées dans les fichiers `.htaccess` s'appliquent au répertoire dans lequel vous avez placé le fichier, ainsi qu'à tous ses sous-répertoires. La syntaxe des fichiers `.htaccess` est la même que celle des fichiers de configuration principaux. Comme les fichiers `.htaccess` sont lus à chaque requête, les modifications de ces fichiers prennent effet immédiatement.

Pour déterminer quelles directives peuvent être placées dans les fichiers `.htaccess`, consultez le Contexte de la directive. L'administrateur du serveur peut contrôler quelles directives peuvent être placées dans les fichiers `.htaccess` en définissant la directive `AllowOverride` dans les fichiers de configuration principaux.

Pour plus d'informations sur les fichiers `.htaccess`, se référer au tutoriel .htaccess.