-<?xml version="1.0" encoding="ISO-8859-1" ?>
+<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
<?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
-<!-- English Revision: 1301748:1731240 (outdated) -->
+<!-- English Revision: 1731240 -->
<!-- French translation : Lucien GENTIS -->
<!-- Reviewed by : Vincent Deffontaines -->
<summary> <p>Les directives des <a
href="configuring.html">fichiers de configuration</a> 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
+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 <code>.htaccess</code> pour
-modifier la portée des directives de configuration.</p>
+modifier la portée des directives de configuration.</p>
</summary>
<section id="types"><title>Types de conteneurs de sections de
</related>
<p>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,
+é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
<directive type="section" module="core">IfDefine</directive>, <directive
type="section" module="core">IfModule</directive>, et
<directive type="section" module="mod_version">IfVersion</directive> 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.</p>
+é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.</p>
<p>Le conteneur <directive type="section" module="core">IfDefine</directive>
-contient des directives qui ne seront appliquées que si un paramètre
-approprié a été défini dans la ligne de commande de <program>httpd</program>.
+contient des directives qui ne seront appliquées que si un paramètre
+approprié a été défini dans la ligne de commande de <program>httpd</program>.
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 :
+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 :
<code>httpd -DClosedForNow</code>:</p>
-<example>
-<IfDefine ClosedForNow><br />
-Redirect / http://otherserver.example.com/<br />
+<highlight language="config">
+<IfDefine ClosedForNow>
+ Redirect / http://otherserver.example.com/
</IfDefine>
-</example>
+</highlight>
<p>Le conteneur <directive type="section" module="core">IfModule</directive>
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
+Le module doit être soit compilé statiquement dans le serveur, soit
dynamiquement et dans ce cas, la ligne <directive
-module="mod_so">LoadModule</directive> 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.
+module="mod_so">LoadModule</directive> 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.</p>
+systématiquement, car vous pouvez perdre ainsi de précieux messages d'erreur
+à propos de modules manquants.</p>
<p>Dans l'exemple suivant, la directive <directive
module="mod_mime_magic">MimeMagicFile</directive> ne s'appliquera que si le
module <module>mod_mime_magic</module> est disponible.</p>
-<example>
-<IfModule mod_mime_magic.c><br />
-MimeMagicFile conf/magic<br />
+<highlight language="config">
+<IfModule mod_mime_magic.c>
+ MimeMagicFile conf/magic
</IfModule>
-</example>
+</highlight>
<p>Le conteneur
<directive type="section" module="mod_version">IfVersion</directive>
est similaire aux conteneurs <directive type="section"
module="core">IfDefine</directive> et <directive type="section"
module="core">IfModule</directive>; 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
+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.</p>
-<example>
- <IfVersion >= 2.1><br />
- <indent>
- # les directives situées ici ne s'appliquent que si la version <br />
- # est supérieure ou égale à 2.1.0.<br />
- </indent>
- </IfVersion>
-</example>
+<highlight language="config">
+<IfVersion >= 2.1>
+ # les directives situées ici ne s'appliquent que si la version
+ # est supérieure ou égale à 2.1.0.
+</IfVersion>
+</highlight>
<p><directive type="section" module="core">IfDefine</directive>,
<directive type="section" module="core">IfModule</directive>, et
<directive type="section" module="mod_version">IfVersion</directive>
-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
+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.</p>
</section>
-<section id="file-and-web"><title>Système de fichiers et
+<section id="file-and-web"><title>Système de fichiers et
arborescence du site web</title>
-<p>Les conteneurs de sections de configuration les plus couramment utilisés
-sont ceux qui modifient la configuration de points particuliers du système de
+<p>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 est situé dans <code>/usr/local/apache2</code> pour le système 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 est situé dans <code>/usr/local/apache2</code> pour le système de
fichiers UNIX, ou <code>"c:/Program Files/Apache Group/Apache2"</code> pour
-le système de fichiers Windows. (Notez que des slashes directs doivent
-toujours être utilisés comme séparateur de chemin dans Apache, même sous
-Windows.) Quant à
+le système de fichiers Windows. (Notez que des slashes directs doivent
+toujours être utilisés comme séparateur de chemin dans Apache, 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 <code>/dir/</code> dans
+tel que présenté par le
+serveur web et perçue par le client. Ainsi le chemin <code>/dir/</code> dans
l'arborescence du site web correspond au chemin
-<code>/usr/local/apache2/htdocs/dir/</code> dans le système de fichiers pour
-une installation d'Apache par défaut sous UNIX.
+<code>/usr/local/apache2/htdocs/dir/</code> dans le système de fichiers pour
+une installation d'Apache 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.</p>
+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.</p>
-<section id="filesystem"><title>Conteneurs de système de fichiers</title>
+<section id="filesystem"><title>Conteneurs de système de fichiers</title>
<p>Les conteneurs <directive type="section" module="core">Directory</directive>
et <directive type="section" module="core">Files</directive>,
-ainsi que leurs équivalents acceptant les
+ainsi que leurs équivalents acceptant les
<glossary ref="regex">expressions rationnelles</glossary>,
-appliquent des directives à certaines parties du système de fichiers.
+appliquent des directives à certaines parties du système de fichiers.
Les directives contenues dans une section <directive
-type="section" module="core">Directory</directive> s'appliquent au répertoire
-précisé, ainsi qu'à tous ses sous-répertoires et aux fichiers que ces
+type="section" module="core">Directory</directive> 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 <a
+Le même effet peut être obtenu en utilisant les <a
href="howto/htaccess.html">fichiers .htaccess</a>. Par exemple, avec la
-configuration suivante, l'indexation sera activée pour le répertoire
-<code>/var/web/dir1</code> et tous ses sous-répertoires.</p>
+configuration suivante, l'indexation sera activée pour le répertoire
+<code>/var/web/dir1</code> et tous ses sous-répertoires.</p>
-<example>
-<Directory /var/web/dir1><br />
-Options +Indexes<br />
+<highlight language="config">
+<Directory /var/web/dir1>
+ Options +Indexes
</Directory>
-</example>
+</highlight>
<p>Les directives contenues dans une section <directive type="section"
-module="core">Files</directive> s'appliquent à tout fichier
-avec le nom spécifié, quel que soit le répertoire dans lequel il se trouve.
+module="core">Files</directive> 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é <code>private.html</code> quel que soit
-l'endroit où il se trouve.</p>
-
-<example>
-<Files private.html><br />
-Order allow,deny<br />
-Deny from all<br />
+placées dans la section principale du fichier de configuration, vont interdire
+l'accès à tout fichier nommé <code>private.html</code> quel que soit
+l'endroit où il se trouve.</p>
+
+<highlight language="config">
+<Files private.html>
+ Order allow,deny
+ Deny from all
</Files>
-</example>
+</highlight>
-<p>Pour faire référence à des fichiers qui se trouvent en des points
-particuliers du système de fichiers, les sections
+<p>Pour faire référence à des fichiers qui se trouvent en des points
+particuliers du système de fichiers, les sections
<directive type="section" module="core">Files</directive> et
<directive type="section" module="core">Directory</directive>
-peuvent être combinées. Par exemple, la configuration suivante va interdire
-l'accès à <code>/var/web/dir1/private.html</code>,
+peuvent être combinées. Par exemple, la configuration suivante va interdire
+l'accès à <code>/var/web/dir1/private.html</code>,
<code>/var/web/dir1/subdir2/private.html</code>,
<code>/var/web/dir1/subdir3/private.html</code>, ainsi que toute instance de
<code>private.html</code> qui se trouve dans l'arborescence
<code>/var/web/dir1/</code>.</p>
-<example>
-<Directory /var/web/dir1><br />
-<Files private.html><br />
-Order allow,deny<br />
-Deny from all<br />
-</Files><br />
+<highlight language="config">
+<Directory /var/web/dir1>
+ <Files private.html>
+ Order allow,deny
+ Deny from all
+ </Files>
</Directory>
-</example>
+</highlight>
</section>
<section id="webspace"><title>Conteneurs de l'arborescence du site web</title>
<p>le conteneur <directive type="section" module="core">Location</directive>
-et son équivalent acceptant les
-<glossary ref="regex">expressions rationnelles</glossary>, modifient quant à eux la
+et son équivalent acceptant les
+<glossary ref="regex">expressions rationnelles</glossary>, modifient quant à eux la
configuration de parties de l'arborescence du site web. Par exemple, la
-configuration suivante interdit l'accès à toute URL dont la partie chemin
+configuration suivante interdit l'accès à toute URL dont la partie chemin
commence par /private.
-En particulier, l'interdiction s'appliquera aux requêtes pour :
+En particulier, l'interdiction s'appliquera aux requêtes pour :
<code>http://yoursite.example.com/private</code>,
<code>http://yoursite.example.com/private123</code>, et
-<code>http://yoursite.example.com/private/dir/file.html</code> ainsi qu'à
-toute requête commençant par la chaîne de caractères <code>/private</code>.</p>
+<code>http://yoursite.example.com/private/dir/file.html</code> ainsi qu'à
+toute requête commençant par la chaîne de caractères <code>/private</code>.</p>
-<example>
-<LocationMatch ^/private><br />
-Order Allow,Deny<br />
-Deny from all<br />
+<highlight language="config">
+<LocationMatch ^/private>
+ Order Allow,Deny
+ Deny from all
</LocationMatch>
-</example>
+</highlight>
<p>Le conteneur <directive type="section" module="core">Location</directive>
-n'a pas besoin de faire référence à un élément du système de fichiers.
-Par exemple, l'exemple suivant montre comment faire référence à une URL
-particulière vers un gestionnaire interne d'Apache fourni par le module
+n'a pas besoin de faire référence à un élément du système de fichiers.
+Par exemple, l'exemple suivant montre comment faire référence à une URL
+particulière vers un gestionnaire interne d'Apache fourni par le module
<module>mod_status</module>.
-Il n'est pas nécessaire de trouver un fichier nommé <code>server-status</code>
-dans le système de fichiers.</p>
+Il n'est pas nécessaire de trouver un fichier nommé <code>server-status</code>
+dans le système de fichiers.</p>
-<example>
-<Location /server-status><br />
-SetHandler server-status<br />
+<highlight language="config">
+<Location /server-status>
+ SetHandler server-status
</Location>
-</example>
+</highlight>
</section>
-<section id="wildcards"><title>Caractères de remplacement
+<section id="wildcards"><title>Caractères de remplacement
et expressions rationnelles</title>
<p>Les conteneurs
<directive type="section" module="core">Directory</directive>,
<directive type="section" module="core">Files</directive>, et
<directive type="section" module="core">Location</directive>
-peuvent utiliser des caractères de remplacement de style shell comme dans
-la fonction <code>fnmatch</code> de la bibliothèque C standard.
-Le caractère "*"
-correspond à toute séquence de caractères, "?" à un caractère seul,
-et "[<em>seq</em>]" à tout caractère contenu dans <em>seq</em>.
-Le caractère "/"
+peuvent utiliser des caractères de remplacement de style shell comme dans
+la fonction <code>fnmatch</code> de la bibliothèque C standard.
+Le caractère "*"
+correspond à toute séquence de caractères, "?" à un caractère seul,
+et "[<em>seq</em>]" à tout caractère contenu dans <em>seq</em>.
+Le caractère "/"
ne peut pas faire l'objet d'un remplacement;
-il doit être spécifié explicitement.</p>
+il doit être spécifié explicitement.</p>
-<p>Si une définition des critères de correspondance
-encore plus souple est nécessaire, chaque conteneur
-possède son équivalent acceptant les expressions rationnelles : <directive
+<p>Si une définition des critères de correspondance
+encore plus souple est nécessaire, chaque conteneur
+possède son équivalent acceptant les expressions rationnelles : <directive
type="section" module="core">DirectoryMatch</directive>, <directive
type="section" module="core">FilesMatch</directive>, et <directive
type="section" module="core">LocationMatch</directive> acceptent les
<glossary ref="regex">expressions rationnelles</glossary> compatibles Perl
-pour définir les critères de correspondance. Mais voyez plus loin la section
-à propos de la combinaison des sections de configuration
+pour définir les critères de correspondance. Mais voyez plus loin la section
+à propos de la combinaison des sections de configuration
pour comprendre comment l'utilisation de
-conteneurs avec des expressions rationnelles va modifier la manière
-dont les directives sont appliquées.</p>
+conteneurs avec des expressions rationnelles va modifier la manière
+dont les directives sont appliquées.</p>
<p>Un conteneur qui modifie la configuration de tous les
-répertoires utilisateurs à l'aide de caractères de remplacement
+répertoires utilisateurs à l'aide de caractères de remplacement
mais sans utiliser
-les expressions rationnelles pourrait ressembler à ceci :</p>
+les expressions rationnelles pourrait ressembler à ceci :</p>
-<example>
-<Directory /home/*/public_html><br />
-Options Indexes<br />
+<highlight language="config">
+<Directory /home/*/public_html>
+ Options Indexes
</Directory>
-</example>
+</highlight>
<p>Avec les conteneurs utilisant les expressions rationnelles,
-on peut interdire l'accès à de nombreux types de fichiers d'images
-simultanément :</p>
-<example>
-<FilesMatch \.(?i:gif|jpe?g|png)$><br />
-Order allow,deny<br />
-Deny from all<br />
+on peut interdire l'accès à de nombreux types de fichiers d'images
+simultanément :</p>
+<highlight language="config">
+<FilesMatch \.(?i:gif|jpe?g|png)$>
+ Order allow,deny
+ Deny from all
</FilesMatch>
-</example>
+</highlight>
</section>
<section id="whichwhen"><title>Que faut-il utiliser et quand ?</title>
-<p>Choisir entre des conteneurs de système de fichiers et des conteneurs
-d'arborescence du site web est vraiment très simple.
-Pour appliquer des directives à des objets qui résident dans le système de
+<p>Choisir entre des conteneurs de système de fichiers et des conteneurs
+d'arborescence du site web est vraiment très simple.
+Pour appliquer des directives à des objets qui résident dans le système de
fichiers, utilisez toujours un conteneur <directive type="section"
module="core">Directory</directive> ou <directive type="section"
-module="core">Files</directive>. Pour appliquer des directives à des objets
-qui ne résident pas dans le système de fichiers (comme une page web générée
-par une base de données), utilisez un conteneur <directive type="section"
+module="core">Files</directive>. Pour appliquer des directives à des objets
+qui ne résident pas dans le système de fichiers (comme une page web générée
+par une base de données), utilisez un conteneur <directive type="section"
module="core">Location</directive>.</p>
<p>Il ne faut jamais utiliser un conteneur <directive type="section"
-module="core">Location</directive> pour restreindre l'accès à des
-objets du système de fichiers, car plusieurs localisations de
-l'arborescence du site web (URLs) peuvent correspondre à la même localisation
-du système de fichier, ce qui peut permettre de contourner vos restrictions.
+module="core">Location</directive> pour restreindre l'accès à des
+objets du système de fichiers, car plusieurs localisations de
+l'arborescence du site web (URLs) peuvent correspondre à la même localisation
+du système de fichier, ce qui peut permettre de contourner vos restrictions.
Par exemple, imaginez la configuration suivante :</p>
-<example>
-<Location /dir/><br />
-Order allow,deny<br />
-Deny from all<br />
+<highlight language="config">
+<Location /dir/>
+ Order allow,deny
+ Deny from all
</Location>
-</example>
+</highlight>
-<p>Elle fonctionne correctement si la requête appelle
+<p>Elle fonctionne correctement si la requête appelle
<code>http://yoursite.example.com/dir/</code>. Mais que va-t-il se passer si
-votre système de fichiers est insensible à la casse ?
-Votre restriction va pouvoir être tout simplement contournée en envoyant une
-requête sur
+votre système de fichiers est insensible à la casse ?
+Votre restriction va pouvoir être tout simplement contournée en envoyant une
+requête sur
<code>http://yoursite.example.com/DIR/</code>. Le conteneur <directive
-type="section" module="core">Directory</directive>, quant à lui, s'appliquera
-à tout contenu servi à partir de cette localisation,
-sans tenir compte de la manière dont il est appelé.
-(Les liens du système de fichiers constituent une exception.
-Le même répertoire peut être placé dans plusieurs parties du système de
+type="section" module="core">Directory</directive>, quant à lui, s'appliquera
+à tout contenu servi à partir de cette localisation,
+sans tenir compte de la manière dont il est appelé.
+(Les liens du système de fichiers constituent une exception.
+Le même répertoire peut être placé dans plusieurs parties du système de
fichiers en utilisant des liens symboliques. Le conteneur
<directive type="section" module="core">Directory</directive> va suivre le
-lien symbolique sans modifier le nom du chemin. Par conséquent, pour plus de
-sécurité, les liens symboliques doivent être désactivés à l'aide de la
+lien symbolique sans modifier le nom du chemin. Par conséquent, pour plus de
+sécurité, les liens symboliques doivent être désactivés à l'aide de la
directive
-<directive module="core">Options</directive> appropriée.)</p>
-
-<p>Si vous pensez que vous n'êtes pas concerné par ce problème
-parceque vous utilisez un système de fichiers sensible à la casse,
-gardez à l'esprit qu'il y a de nombreuses autres manières pour faire
-correspondre plusieurs localisations de l'arborescence du site web à la même
-localisation du système de fichiers. C'est pourquoi vous devez autant que
-possible toujours utiliser les conteneurs de système de fichiers.
-Il y a cependant une exception à cette règle. Placer des restrictions de
+<directive module="core">Options</directive> appropriée.)</p>
+
+<p>Si vous pensez que vous n'êtes pas concerné par ce problème
+parceque vous utilisez un système de fichiers sensible à la casse,
+gardez à l'esprit qu'il y a de nombreuses autres manières pour faire
+correspondre plusieurs localisations de l'arborescence du site web à la même
+localisation du système de fichiers. C'est pourquoi vous devez autant que
+possible toujours utiliser les conteneurs de système de fichiers.
+Il y a cependant une exception à cette règle. Placer des restrictions de
configuration dans un conteneur <code><Location
-/></code> est tout à fait sans rique car ce conteneur va s'appliquer à
-toutes les requêtes sans tenir compte de l'URL spécifique.</p>
+/></code> est tout à fait sans rique car ce conteneur va s'appliquer à
+toutes les requêtes sans tenir compte de l'URL spécifique.</p>
</section>
</section>
-<section id="virtualhost"><title>Hôtes virtuels</title>
+<section id="virtualhost"><title>Hôtes virtuels</title>
<p>Le conteneur <directive type="section" module="core">VirtualHost</directive>
-contient des directives qui s'appliquent à des hôtes spécifiques.
-Ceci s'avère utile pour servir des hôtes multiples à partir de la même machine,
-chacun d'entre eux possédant une configuration différente. Pour de plus amples
+contient des directives qui s'appliquent à des hôtes spécifiques.
+Ceci s'avère utile pour servir des hôtes multiples à partir de la même machine,
+chacun d'entre eux possédant une configuration différente. Pour de plus amples
informations,
-voir la <a href="vhosts/">Documentation sur les hôtes virtuels</a>.</p>
+voir la <a href="vhosts/">Documentation sur les hôtes virtuels</a>.</p>
</section>
<section id="proxy"><title>Mandataire</title>
<directive type="section" module="mod_proxy">Proxy</directive>
et <directive type="section" module="mod_proxy">ProxyMatch</directive>
appliquent les directives de configuration qu'ils contiennent uniquement aux
-sites qui correspondent à l'URL spécifiée et auxquels on a
-accédé via le serveur mandataire du module <module>mod_proxy</module>.
-Par exemple, la configuration suivante
-va interdire l'utilisation du serveur proxy pour accéder au site
-<code>cnn.com</code>.</p>
-
-<example>
-<Proxy http://cnn.com/*><br />
-Order allow,deny<br />
-Deny from all<br />
+sites qui correspondent à l'URL spécifiée et auxquels on a
+accédé via le serveur mandataire du module <module>mod_proxy</module>.
+Par exemple, la configuration suivante n'autorisera l'accès au site web
+<code>www.example.com</code> via le serveur mandataire qu'à un sous-ensemble de
+clients :</p>
+
+<highlight language="config">
+<Proxy "http://www.example.com/*">
+ Order allow,deny
+ Allow from 192.168.1.104 192.168.1.205
+ Deny from all
</Proxy>
-</example>
+</highlight>
</section>
-<section id="whatwhere"><title>Quelles sont les directives autorisées ?</title>
+<section id="whatwhere"><title>Quelles sont les directives autorisées ?</title>
-<p>Pour déterminer quelles sont les directives autorisées pour tel type de
-section de configuration, vérifiez le <a
+<p>Pour déterminer quelles sont les directives autorisées pour tel type de
+section de configuration, vérifiez le <a
href="mod/directive-dict.html#Context">Contexte</a> de la directive.
-Tout ce qui est autorisé dans les sections
+Tout ce qui est autorisé dans les sections
<directive type="section" module="core">Directory</directive>
l'est aussi d'un point de vue syntaxique dans les sections
<directive type="section" module="core">DirectoryMatch</directive>,
<directive type="section" module="core">Directory</directive> ou les fichiers
<code>.htaccess</code>.</li>
-<li>La directive <directive module="core">Options</directive> ne peut pas être
-utilisée dans les sections
+<li>La directive <directive module="core">Options</directive> ne peut pas être
+utilisée dans les sections
<directive type="section" module="core">Files</directive>
et <directive type="section" module="core">FilesMatch</directive>.</li>
</ul>
</section>
-<section id="mergin"><title>Comment les sections sont combinées entre elles</title>
+<section id="mergin"><title>Comment les sections sont combinées entre elles</title>
-<p>Les sections de configuration sont appliquées dans un ordre très particulier.
-Il est important de savoir comment cet ordre est défini car il peut avoir
-des effets importants sur la manière dont les directives de configuration
-sont interprétées.</p>
+<p>Les sections de configuration sont appliquées dans un ordre très particulier.
+Il est important de savoir comment cet ordre est défini car il peut avoir
+des effets importants sur la manière dont les directives de configuration
+sont interprétées.</p>
- <p>L'ordre dans lequel les sections sont combinées est :</p>
+ <p>L'ordre dans lequel les sections sont combinées est :</p>
<ol>
<li> Les sections <directive type="section"
- module="core">Directory</directive> (à l'exception des
+ module="core">Directory</directive> (à l'exception des
expressions rationnelles)
- et les fichiers <code>.htaccess</code> sont appliqués simultanément (avec
- la possibilité pour <code>.htaccess</code>, s'il y est autorisé, de
- prévaloir sur
+ et les fichiers <code>.htaccess</code> sont appliqués simultanément (avec
+ la possibilité pour <code>.htaccess</code>, s'il y est autorisé, de
+ prévaloir sur
<directive type="section" module="core">Directory</directive>)</li>
<li>Les sections
<li>Les sections <directive type="section"
module="core">Files</directive> et <directive
- type="section" module="core">FilesMatch</directive> sont appliquées
- simultanément</li>
+ type="section" module="core">FilesMatch</directive> sont appliquées
+ simultanément</li>
<li>Les sections
<directive type="section" module="core">Location</directive>
et <directive type="section"
- module="core">LocationMatch</directive> sont appliquées
- simultanément</li>
+ module="core">LocationMatch</directive> sont appliquées
+ simultanément</li>
</ol>
- <p>Mises à part les sections <directive type="section"
- module="core">Directory</directive>, chaque groupe est traité selon
- l'ordre dans lequel il apparaît dans les fichiers de configuration.
+ <p>Mises à part les sections <directive type="section"
+ module="core">Directory</directive>, chaque groupe est traité selon
+ l'ordre dans lequel il apparaît dans les fichiers de configuration.
Les sections <directive
type="section" module="core">Directory</directive> (groupe 1 ci-dessus)
- sont traitées dans l'ordre du répertoire le plus court vers le plus long.
+ sont traitées dans l'ordre du répertoire le plus court vers le plus long.
Par exemple, <code><Directory /var/web/dir></code> sera
- traité avant <code><Directory
+ traité avant <code><Directory
/var/web/dir/subdir></code>. Si plusieurs sections <directive
- type="section" module="core">Directory</directive> s'appliquent au même
- répertoire, elles sont traitées selon l'ordre dans lequel elles
+ type="section" module="core">Directory</directive> s'appliquent au même
+ répertoire, elles sont traitées selon l'ordre dans lequel elles
apparaissent dans le fichier de configuration.
Les sections de configuration incluses via la directive <directive
- module="core">Include</directive> sont traitées comme si elles se
- trouvaient réellement dans le fichier qui les inclut à la position de la
+ module="core">Include</directive> sont traitées comme si elles se
+ trouvaient réellement dans le fichier qui les inclut à la position de la
directive
<directive module="core">Include</directive>.</p>
- <p>Les sections situées à l'intérieur de sections <directive type="section"
+ <p>Les sections situées à l'intérieur de sections <directive type="section"
module="core">VirtualHost</directive>
- sont appliquées <em>après</em> les sections correspondantes situées en
- dehors de la définition de l'hôte virtuel, ce qui permet à l'hôte virtuel
- de prévaloir sur la configuration du serveur principal.</p>
+ sont appliquées <em>après</em> les sections correspondantes situées en
+ dehors de la définition de l'hôte virtuel, ce qui permet à l'hôte virtuel
+ de prévaloir sur la configuration du serveur principal.</p>
- <p>Quand la requête est servie par le module <module>mod_proxy</module>,
+ <p>Quand la requête est servie par le module <module>mod_proxy</module>,
le conteneur <directive module="mod_proxy" type="section">Proxy</directive>
prend la place du conteneur <directive module="core"
type="section">Directory</directive> dans l'ordre de traitement.</p>
- <p>Les sections situées plus loin dans le fichier de configuration prévalent
- sur celles qui les précèdent.</p>
-
<note><title>Note technique</title>
- Une séquence
+ Une séquence
<code><Location></code>/<code><LocationMatch></code>
- est réellement traitée juste avant la phase de traduction du nom
- (où <code>Aliases</code> et <code>DocumentRoots</code>
- sont utilisés pour faire correspondre les URLs aux noms de fichiers).
- Les effets de cette séquence disparaissent totalement lorsque
- la traduction est terminée.
+ est réellement traitée juste avant la phase de traduction du nom
+ (où <code>Aliases</code> et <code>DocumentRoots</code>
+ sont utilisés pour faire correspondre les URLs aux noms de fichiers).
+ Les effets de cette séquence disparaissent totalement lorsque
+ la traduction est terminée.
</note>
+<section id="relationship-module-configuration"><title>Interactions entre
+modules et sections de configuration</title>
+ <p>Une question se pose souvent après avoir lu comment les sections de
+ configuration sont fusionnées : comment et quand les directives de modules
+ particuliers comme <module>mod_rewrite</module> sont-elles interprétées ? La
+ réponse n'est pas triviale et nécessite un approfondissement. Chaque module
+ httpd gère sa propre configuration, et chacune de ses directives dans
+ httpd.conf définit un élément de configuration dans un contexte particulier.
+ httpd n'exécute pas un commande au moment où elle est lue.</p>
+ <p>A l'exécution, le noyau de httpd parcours les sections de configuration
+ dans l'ordre décrit ci-dessus afin de déterminer lesquelles s'appliquent à
+ la requête courante. Lorsqu'une première section s'applique, elle est
+ considérée comme la configuration courante pour cette requête. Si une
+ section suivante s'applique aussi, chaque module qui possède des directives
+ dans chacune de ces sections a la possibilité de fusionner sa configuration
+ entre ces deux sections. Il en résulte une troisième configuration et le
+ processus de fusion se poursuit jusqu'à ce que toutes les sections de
+ configuration aient été évaluées.</p>
+ <p>Après l'étape précédente, le traitement proprement dit de la requête HTTP
+ peut commencer : chaque module peut effectuer toute tâche qui lui incombe,
+ et pour déterminer de quelle manière dont il doit agir, il peut s'appuyer
+ sur le noyau de httpd pour retrouver sa configuration globale issue de la
+ fusion précédente.</p>
+ <p>Un exemple permet de mieux visualiser l'ensemble du processus. la
+ configuration suivante utilise la directive <directive
+ module="mod_headers">Header</directive> du module
+ <module>mod_headers</module> pour définir un en-tête HTTP spécifique. Quelle
+ valeur httpd va-t-il affecter à l'en-tête <code>CustomHeaderName</code> pour
+ une requête vers <code>/example/index.html</code> ?
+ </p>
+ <highlight language="config">
+
+<Directory "/">
+ Header set CustomHeaderName one
+ <FilesMatch ".*">
+ Header set CustomHeaderName three
+ </FilesMatch>
+</Directory>
+
+<Directory "/example">
+ Header set CustomHeaderName two
+</Directory>
+
+ </highlight>
+ <ul>
+ <li><directive>Directory</directive> "/" s'applique, et une configuration
+ initiale est créée qui définit l'en-tête <code>CustomHeaderName</code>
+ avec la valeur <code>one</code>.</li>
+ <li><directive>Directory</directive> "/example" s'applique, et comme
+ <module>mod_headers</module> spécifie dans son code que
+ la valeur d'un en-tête doit être écrasée si ce dernier est défini à
+ nouveau, une nouvelle configuration est créée qui définit l'en-tête
+ <code>CustomHeaderName</code> avec la valeur <code>two</code>.</li>
+ <li><directive>FilesMatch</directive> ".*" s'applique, une nouvelle
+ opportunité de fusion surgit, et l'en-tête <code>CustomHeaderName</code>
+ est défini à la valeur <code>three</code>.</li>
+ <li>Finalement, au cours des étapes suivantes du traitement de la
+ requête HTTP, <module>mod_headers</module> sera sollicité, et il se
+ basera sur la configuration qui a défini l'en-tête
+ <code>CustomHeaderName</code> à la valeur <code>three</code>.
+ <module>mod_headers</module> utilise normalement cette configuration pour
+ accomplir sa tâche, à savoir définir des en-têtes HTTP. Cela ne veut
+ cependant pas dire qu'un module ne peut pas effectuer des actions plus
+ complexes comme désactiver des directives car elle ne sont pas
+ nécessaires ou obsolètes, etc...</li>
+ </ul>
+
+ <p>Ceci est aussi vrai pour les fichiers .htaccess car ils possèdent la même
+ priorité que les sections <directive>Directory</directive> dans l'ordre de
+ fusion. Il faut bien comprendre que les sections de configuration comme
+ <directive>Directory</directive> et <directive>FilesMatch</directive> ne
+ sont pas comparables avec les directives spécifiques de modules comme
+ <directive module="mod_headers">Header</directive> ou <directive
+ module="mod_rewrite">RewriteRule</directive> car elles agissent à des
+ niveaux différents.
+ </p>
+</section>
+
<section id="merge-examples"><title>Quelques exemples</title>
<p>Voici un exemple imaginaire qui montre l'ordre de combinaison des sections.
-En supposant qu'elles s'appliquent toutes à la requête, les directives de
-cet exemple seront appliquées dans l'ordre suivant : A > B > C > D >
+En supposant qu'elles s'appliquent toutes à la requête, les directives de
+cet exemple seront appliquées dans l'ordre suivant : A > B > C > D >
E.</p>
-<example>
-<Location /><br />
-E<br />
-</Location><br />
-<br />
-<Files f.html><br />
-D<br />
-</Files><br />
-<br />
-<VirtualHost *><br />
-<Directory /a/b><br />
-B<br />
-</Directory><br />
-</VirtualHost><br />
-<br />
-<DirectoryMatch "^.*b/"><br />
-C<br />
-</DirectoryMatch><br />
-<br />
-<Directory /a/b><br />
-A<br />
-</Directory><br />
-<br />
-</example>
-
-<p>Pour un exemple plus concret, considérez ce qui suit. Sans tenir compte
-de toute restriction d'accès placée dans les sections <directive module="core"
+<highlight language="config">
+<Location "/">
+ E
+</Location>
+
+<Files "f.html">
+ D
+</Files>
+
+<VirtualHost *>
+<Directory "/a/b">
+ B
+</Directory>
+</VirtualHost>
+
+<DirectoryMatch "^.*b$">
+ C
+</DirectoryMatch>
+
+<Directory "/a/b">
+ A
+</Directory>
+
+</highlight>
+
+<p>Pour un exemple plus concret, considérez ce qui suit. Sans tenir compte
+de toute restriction d'accès placée dans les sections <directive module="core"
type="section">Directory</directive>, la section <directive
module="core" type="section">Location</directive> sera
-évaluée en dernier et permettra un accès au serveur sans aucune restriction.
+évaluée en dernier et permettra un accès au serveur sans aucune restriction.
En d'autres termes, l'ordre de la combinaison des sections est important,
soyez donc prudent !</p>
-<example>
-<Location /><br />
-Order deny,allow<br />
-Allow from all<br />
-</Location><br />
-<br />:if expand("%") == ""|browse confirm w|else|confirm w|endif
-
-# Arrghs! Cette section <Directory> n'aura aucun effet<br />
-<Directory /><br />
-Order allow,deny<br />
-Allow from all<br />
-Deny from badguy.example.com<br />
+<highlight language="config">
+<Location "/">
+ Require all granted
+</Location>
+# Arrghs! Cette section <Directory> n'aura aucun effet
+<Directory "/">
+ <RequireAll>
+ Require all granted
+ Require not host badguy.example.com
+ </RequireAll>
</Directory>
-</example>
+</highlight>
</section>