]> granicus.if.org Git - apache/blob - docs/manual/sections.xml.fr
rebuild with extraclean to pick up permalinks in
[apache] / docs / manual / sections.xml.fr
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
3 <?xml-stylesheet type="text/xsl" href="./style/manual.fr.xsl"?>
4 <!-- French translation : Lucien GENTIS -->
5 <!-- Reviewed by : Vincent Deffontaines -->
6 <!-- English Revision: 1828238 -->
7
8 <!--
9  Licensed to the Apache Software Foundation (ASF) under one or more
10  contributor license agreements.  See the NOTICE file distributed with
11  this work for additional information regarding copyright ownership.
12  The ASF licenses this file to You under the Apache License, Version 2.0
13  (the "License"); you may not use this file except in compliance with
14  the License.  You may obtain a copy of the License at
15
16      http://www.apache.org/licenses/LICENSE-2.0
17
18  Unless required by applicable law or agreed to in writing, software
19  distributed under the License is distributed on an "AS IS" BASIS,
20  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21  See the License for the specific language governing permissions and
22  limitations under the License.
23 -->
24
25 <manualpage metafile="sections.xml.meta">
26
27 <title>Sections de configuration</title>
28
29 <summary> <p>Les directives des <a
30 href="configuring.html">fichiers de configuration</a> peuvent s'appliquer
31 au serveur dans son ensemble, ou seulement à des répertoires, fichiers, hôtes,
32 ou URLs particuliers.  Ce document décrit comment utiliser les conteneurs de
33 sections de configuration ou les fichiers <code>.htaccess</code> pour
34 modifier la portée des directives de configuration.</p>
35 </summary>
36
37 <section id="types"><title>Types de conteneurs de sections de
38 configuration</title>
39
40 <related>
41 <modulelist>
42 <module>core</module>
43 <module>mod_version</module>
44 <module>mod_proxy</module>
45 </modulelist>
46 <directivelist>
47 <directive type="section" module="core">Directory</directive>
48 <directive type="section" module="core">DirectoryMatch</directive>
49 <directive type="section" module="core">Files</directive>
50 <directive type="section" module="core">FilesMatch</directive>
51 <directive type="section" module="core">If</directive>
52 <directive type="section" module="core">IfDefine</directive>
53 <directive type="section" module="core">IfModule</directive>
54 <directive type="section" module="mod_version">IfVersion</directive>
55 <directive type="section" module="core">Location</directive>
56 <directive type="section" module="core">LocationMatch</directive>
57 <directive type="section" idtype="section" module="mod_md">MDomainSet</directive>
58 <directive type="section" module="mod_proxy">Proxy</directive>
59 <directive type="section" module="mod_proxy">ProxyMatch</directive>
60 <directive type="section" module="core">VirtualHost</directive>
61 </directivelist>
62 </related>
63
64 <p>Il existe deux grands types de conteneurs.  La plupart des conteneurs sont
65 évalués pour chaque requête.  Les directives qu'ils contiennent s'appliquent
66 seulement aux requêtes qui sont concernées par le conteneur.  En revanche,
67 les conteneurs
68 <directive type="section" module="core">IfDefine</directive>, <directive
69 type="section" module="core">IfModule</directive>, et
70 <directive type="section" module="mod_version">IfVersion</directive> sont
71 évalués seulement au démarrage et au redémarrage du serveur.
72 Si leurs conditions sont vérifiées au démarrage, les directives qu'ils contiennent
73 s'appliqueront à toutes les requêtes.  Si leurs conditions ne sont pas vérifiées, les
74 directives qu'ils contiennent seront ignorées.</p>
75
76 <p>Le conteneur <directive type="section" module="core">IfDefine</directive>
77 contient des directives qui ne seront appliquées que si un paramètre
78 approprié a été défini dans la ligne de commande de <program>httpd</program>.
79 Par exemple,
80 avec la configuration suivante, toutes les requêtes seront redirigées vers
81 un autre site si le serveur est démarré en utilisant la ligne de commande :
82 <code>httpd -DClosedForNow</code>:</p>
83
84 <highlight language="config">
85 &lt;IfDefine ClosedForNow&gt;
86     Redirect "/" "http://otherserver.example.com/"
87 &lt;/IfDefine&gt;
88 </highlight>
89
90 <p>Le conteneur <directive type="section" module="core">IfModule</directive>
91 est similaire; les directives qu'il contient ne s'appliqueront que si
92 un module particulier est disponible au niveau du serveur.
93 Le module doit être soit compilé statiquement dans le serveur, soit
94 dynamiquement et dans ce cas, la ligne <directive
95 module="mod_so">LoadModule</directive> correspondante doit apparaître
96 plus haut dans le fichier de configuration.  Ce conteneur ne doit être
97 utilisé que dans le cas où votre fichier de configuration doit fonctionner
98 indépendamment de la présence ou de l'absence de certains modules.
99 Il ne doit pas contenir de directives que vous souhaitez voir s'appliquer
100 systématiquement, car vous pouvez perdre ainsi de précieux messages d'erreur
101 à propos de modules manquants.</p>
102
103 <p>Dans l'exemple suivant, la directive <directive
104 module="mod_mime_magic">MimeMagicFile</directive> ne s'appliquera que si le
105 module <module>mod_mime_magic</module> est disponible.</p>
106
107 <highlight language="config">
108 &lt;IfModule mod_mime_magic.c&gt;
109     MimeMagicFile conf/magic
110 &lt;/IfModule&gt;
111 </highlight>
112
113 <p>Le conteneur
114 <directive type="section" module="mod_version">IfVersion</directive>
115 est similaire aux conteneurs <directive type="section"
116 module="core">IfDefine</directive> et <directive type="section"
117 module="core">IfModule</directive>; les directives qu'il contient ne
118 s'appliqueront que si une version particulière du serveur s'exécute.  Ce
119 conteneur a été conçu pour une utilisation dans les suites de tests
120 et les grands réseaux qui doivent prendre en compte différentes versions
121 et configurations de httpd.</p>
122
123 <highlight language="config">
124 &lt;IfVersion >= 2.4&gt;
125     # les directives situées ici ne s'appliquent que si la version <br />
126     # est supérieure ou égale à 2.4.0.
127 &lt;/IfVersion&gt;
128 </highlight>
129
130 <p><directive type="section" module="core">IfDefine</directive>,
131 <directive type="section" module="core">IfModule</directive>, et
132 <directive type="section" module="mod_version">IfVersion</directive>
133 peuvent inverser leur test conditionnel en le faisant précéder d'un "!".
134 De plus, ces sections peuvent être imbriquées afin de définir des restrictions
135 plus complexes.</p>
136 </section>
137
138 <section id="file-and-web"><title>Système de fichiers,
139 arborescence du site web et expressions booléennes</title>
140
141 <p>Les conteneurs de sections de configuration les plus couramment utilisés
142 sont ceux qui modifient la configuration de points particuliers du système de
143 fichiers ou de l'arborescence du site web.  Tout d'abord, il est important de
144 comprendre la différence entre les deux.  Le système de fichiers est une vue
145 de vos disques tels qu'ils sont perçus par votre système d'exploitation.
146 Par exemple, avec une installation par défaut,
147 Apache httpd est situé dans <code>/usr/local/apache2</code> pour le système de
148 fichiers UNIX, ou <code>"c:/Program Files/Apache Group/Apache2"</code> pour
149 le système de fichiers Windows.  (Notez que des slashes directs doivent
150 toujours être utilisés comme séparateur de chemin
151 dans les fichiers de configuration d'Apache httpd, même sous
152 Windows.)  Quant à
153 l'arborescence du site web, il s'agit d'une vue de votre site
154 tel que présenté par le
155 serveur web et perçue par le client.  Ainsi le chemin <code>/dir/</code> dans
156 l'arborescence du site web correspond au chemin
157 <code>/usr/local/apache2/htdocs/dir/</code> dans le système de fichiers pour
158 une installation d'Apache httpd par défaut sous UNIX.
159 En outre, l'arborescence du site web n'a pas besoin de correspondre en permanence au
160 système de fichiers, car les pages web peuvent être générées dynamiquement
161 à partir de bases de données ou d'autres emplacements.</p>
162
163 <section id="filesystem"><title>Conteneurs de système de fichiers</title>
164
165 <p>Les conteneurs <directive type="section" module="core">Directory</directive>
166 et <directive type="section" module="core">Files</directive>,
167 ainsi que leurs équivalents acceptant les
168 <glossary ref="regex">expressions rationnelles</glossary>,
169 appliquent des directives à certaines parties du système de fichiers.
170 Les directives contenues dans une section <directive
171 type="section" module="core">Directory</directive> s'appliquent au répertoire
172 précisé, ainsi qu'à tous ses sous-répertoires et aux fichiers que ces
173 derniers contiennent.
174 Le même effet peut être obtenu en utilisant les <a
175 href="howto/htaccess.html">fichiers .htaccess</a>.  Par exemple, avec la
176 configuration suivante, l'indexation sera activée pour le répertoire
177 <code>/var/web/dir1</code> et tous ses sous-répertoires.</p>
178
179 <highlight language="config">
180 &lt;Directory "/var/web/dir1"&gt;
181     Options +Indexes
182 &lt;/Directory&gt;
183 </highlight>
184
185 <p>Les directives contenues dans une section <directive type="section"
186 module="core">Files</directive> s'appliquent à tout fichier
187 avec le nom spécifié, quel que soit le répertoire dans lequel il se trouve.
188 Ainsi par exemple, les directives de configuration suivantes, si elles sont
189 placées dans la section principale du fichier de configuration, vont interdire
190 l'accès à tout fichier nommé <code>private.html</code> quel que soit
191 l'endroit où il se trouve.</p>
192
193 <highlight language="config">
194 &lt;Files "private.html"&gt;
195     Require all denied
196 &lt;/Files&gt;
197 </highlight>
198
199 <p>Pour faire référence à des fichiers qui se trouvent en des points
200 particuliers du système de fichiers, les sections
201 <directive type="section" module="core">Files</directive> et
202 <directive type="section" module="core">Directory</directive>
203 peuvent être combinées.  Par exemple, la configuration suivante va interdire
204 l'accès à <code>/var/web/dir1/private.html</code>,
205 <code>/var/web/dir1/subdir2/private.html</code>,
206 <code>/var/web/dir1/subdir3/private.html</code>, ainsi que toute instance de
207 <code>private.html</code> qui se trouve dans l'arborescence
208 <code>/var/web/dir1/</code>.</p>
209
210 <highlight language="config">
211 &lt;Directory "/var/web/dir1"&gt;
212     &lt;Files "private.html"&gt;
213         Require all denied
214     &lt;/Files&gt;
215 &lt;/Directory&gt;
216 </highlight>
217 </section>
218
219 <section id="webspace"><title>Conteneurs de l'arborescence du site web</title>
220
221 <p>le conteneur <directive type="section" module="core">Location</directive>
222 et son équivalent acceptant les
223 <glossary ref="regex">expressions rationnelles</glossary>, modifient quant à eux la
224 configuration de parties de l'arborescence du site web.  Par exemple, la
225 configuration suivante interdit l'accès à toute URL dont la partie chemin
226 commence par /private.
227 En particulier, l'interdiction s'appliquera aux requêtes pour :
228 <code>http://yoursite.example.com/private</code>,
229 <code>http://yoursite.example.com/private123</code>, et
230 <code>http://yoursite.example.com/private/dir/file.html</code> ainsi qu'à
231 toute requête commençant par la chaîne de caractères <code>/private</code>.</p>
232
233 <highlight language="config">
234 &lt;LocationMatch "^/private"&gt;
235     Require all denied
236 &lt;/LocationMatch&gt;
237 </highlight>
238
239 <p>Le conteneur <directive type="section" module="core">Location</directive>
240 n'a pas besoin de faire référence à un élément du système de fichiers.
241 Par exemple, l'exemple suivant montre comment faire référence à une URL
242 particulière vers un gestionnaire interne du serveur HTTP Apache fourni par le module
243 <module>mod_status</module>.
244 Il n'est pas nécessaire de trouver un fichier nommé <code>server-status</code>
245 dans le système de fichiers.</p>
246
247 <highlight language="config">
248 &lt;Location "/server-status"&gt;
249     SetHandler server-status
250 &lt;/Location&gt;
251 </highlight>
252 </section>
253
254 <section id="overlapping-webspace"><title>Espace web imbriqué</title>
255 <p>Pour contrôler deux URLs imbriquées, on doit tenir compte de l'ordre
256 dans lequel certaines sections ou directives sont évaluées. Pour
257 <directive type="section" module="core">Location</directive>, on doit
258 avoir :</p>
259 <highlight language="config">
260 &lt;Location "/foo"&gt;
261 &lt;/Location&gt;
262 &lt;Location "/foo/bar"&gt;
263 &lt;/Location>
264 </highlight>
265 <p>Les directives <directive type="section"
266 module="mod_alias">Alias</directive>, quant à elles, sont évaluées vice-versa :</p>
267 <highlight language="config">
268 Alias "/foo/bar" "/srv/www/uncommon/bar"
269 Alias "/foo" "/srv/www/common/foo"
270 </highlight>
271 <p>Ceci est aussi vrai pour les directives <directive
272 module="mod_proxy">ProxyPass</directive> :</p>
273 <highlight language="config">
274 ProxyPass "/special-area" "http://special.example.com" smax=5 max=10
275 ProxyPass "/" "balancer://mycluster/" stickysession=JSESSIONID|jsessionid nofailover=On
276 </highlight>
277 </section>
278
279
280 <section id="wildcards"><title>Caractères de remplacement
281 et expressions rationnelles</title>
282
283 <p>Les conteneurs
284 <directive type="section" module="core">Directory</directive>,
285 <directive type="section" module="core">Files</directive>, et
286 <directive type="section" module="core">Location</directive>
287 peuvent utiliser des caractères de remplacement de style shell comme dans
288 la fonction <code>fnmatch</code> de la bibliothèque C standard.
289 Le caractère "*"
290 correspond à toute séquence de caractères, "?" à un caractère seul,
291 et "[<em>seq</em>]" à tout caractère contenu dans <em>seq</em>.
292 Le caractère "/"
293 ne peut pas faire l'objet d'un remplacement;
294 il doit être spécifié explicitement.</p>
295
296 <p>Si une définition des critères de correspondance
297 encore plus souple est nécessaire, chaque conteneur
298 possède son équivalent acceptant les expressions rationnelles : <directive
299 type="section" module="core">DirectoryMatch</directive>, <directive
300 type="section" module="core">FilesMatch</directive>, et <directive
301 type="section" module="core">LocationMatch</directive> acceptent les
302 <glossary ref="regex">expressions rationnelles</glossary> compatibles Perl
303 pour définir les critères de correspondance.  Mais voyez plus loin la section
304 à propos de la combinaison des sections de configuration
305 pour comprendre comment l'utilisation de
306 conteneurs avec des expressions rationnelles va modifier la manière
307 dont les directives sont appliquées.</p>
308
309 <p>Un conteneur qui modifie la configuration de tous les
310 répertoires utilisateurs à l'aide de caractères de remplacement
311 mais sans utiliser
312 les expressions rationnelles pourrait ressembler à ceci :</p>
313
314 <highlight language="config">
315 &lt;Directory "/home/*/public_html"&gt;
316     Options Indexes
317 &lt;/Directory&gt;
318 </highlight>
319
320 <p>Avec les conteneurs utilisant les expressions rationnelles,
321 on peut interdire l'accès à de nombreux types de fichiers d'images
322 simultanément :</p>
323 <highlight language="config">
324 +&lt;FilesMatch "\.(?i:gif|jpe?g|png)$"&gt;
325     Require all denied
326 &lt;/FilesMatch&gt;
327 </highlight>
328
329 <p>Les expressions rationnelles contenant des <strong>groupes nommés et
330 des références arrières</strong> sont ajoutées à l'environnement avec
331 leur nom en majuscules. Ceci permet de référencer des éléments de
332 chemins de fichiers et d'URLs depuis une <a
333 href="expr.html">expression</a> et au sein de modules comme
334 <module>mod_rewrite</module>.</p>
335
336 <highlight language="config">
337 &lt;DirectoryMatch "^/var/www/combined/(?&lt;SITENAME&gt;[^/]+)"&gt;
338     require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
339 &lt;/DirectoryMatch&gt;
340 </highlight>
341
342 </section>
343
344 <section id="expressions"><title>Expressions booléennes</title>
345 <p>La directive <directive type="section" module="core">If</directive>
346 permet de modifier la configuration en fonction d'une condition qui peut
347 être définie sous la forme d'une expression booléenne. Dans l'exemple
348 suivant, l'accès est interdit si l'en-tête HTTP Referer ne commence pas
349 par "http://www.example.com/".</p>
350 <highlight language="config">
351 &lt;If "!(%{HTTP_REFERER} -strmatch 'http://www.example.com/*')"&gt;
352     Require all denied
353 &lt;/If&gt;
354 </highlight>
355
356 </section>
357
358 <section id="whichwhen"><title>Que faut-il utiliser et quand ?</title>
359
360 <p>Choisir entre des conteneurs de système de fichiers et des conteneurs
361 d'arborescence du site web est vraiment très simple.
362 Pour appliquer des directives à des objets qui résident dans le système de
363 fichiers, utilisez toujours un conteneur <directive type="section"
364 module="core">Directory</directive> ou <directive type="section"
365 module="core">Files</directive>.  Pour appliquer des directives à des objets
366 qui ne résident pas dans le système de fichiers (comme une page web générée
367 par une base de données), utilisez un conteneur <directive type="section"
368 module="core">Location</directive>.</p>
369
370 <p>Il ne faut jamais utiliser un conteneur <directive type="section"
371 module="core">Location</directive> pour restreindre l'accès à des
372 objets du système de fichiers, car plusieurs localisations de
373 l'arborescence du site web (URLs) peuvent correspondre à la même localisation
374 du système de fichier, ce qui peut permettre de contourner vos restrictions.
375 Par exemple, imaginez la configuration suivante :</p>
376
377 <highlight language="config">
378 &lt;Location "/dir/"&gt;
379     Require all denied
380 &lt;/Location&gt;
381 </highlight>
382
383 <p>Elle fonctionne correctement si la requête appelle
384 <code>http://yoursite.example.com/dir/</code>.  Mais que va-t-il se passer si
385 votre système de fichiers est insensible à la casse ?
386 Votre restriction va pouvoir être tout simplement contournée en envoyant une
387 requête sur
388 <code>http://yoursite.example.com/DIR/</code>.  Le conteneur <directive
389 type="section" module="core">Directory</directive>, quant à lui, s'appliquera
390 à tout contenu servi à partir de cette localisation,
391 sans tenir compte de la manière dont il est appelé.
392 (Les liens du système de fichiers constituent une exception.
393 Le même répertoire peut être placé dans plusieurs parties du système de
394 fichiers en utilisant des liens symboliques.  Le conteneur
395 <directive type="section" module="core">Directory</directive> va suivre le
396 lien symbolique sans modifier le nom du chemin.  Par conséquent, pour plus de
397 sécurité, les liens symboliques doivent être désactivés à l'aide de la
398 directive
399 <directive module="core">Options</directive> appropriée.)</p>
400
401 <p>Si vous pensez que vous n'êtes pas concerné par ce problème
402 parceque vous utilisez un système de fichiers sensible à la casse,
403 gardez à l'esprit qu'il y a de nombreuses autres manières pour faire
404 correspondre plusieurs localisations de l'arborescence du site web à la même
405 localisation du système de fichiers.  C'est pourquoi vous devez autant que
406 possible toujours utiliser les conteneurs de système de fichiers.
407 Il y a cependant une exception à cette règle.  Placer des restrictions de
408 configuration dans un conteneur <code>&lt;Location
409 "/"&gt;</code> est tout à fait sans rique car ce conteneur va s'appliquer à
410 toutes les requêtes sans tenir compte de l'URL spécifique.</p>
411 </section>
412
413 <section id="nesting"><title>Imbrication des sections</title>
414
415 <p>Certains types de sections peuvent être imbriqués : d'une part, on peut
416 utiliser les sections <directive type="section" module="core">Files</directive>
417 à l'intérieur des sections <directive type="section"
418 module="core">Directory</directive>, d'autre part, on peut utiliser les
419 directives <directive type="section" module="core">If</directive> à l'intérieur
420 des sections <directive type="section" module="core">Directory</directive>,
421 <directive type="section" module="core">Location</directive> et <directive
422 type="section" module="core">Files</directive> (mais pas à l'intérieur d'une
423 autre section <directive type="section" module="core">If</directive>). Les
424 valeurs des expressions rationnelles correspondant aux sections nommées se
425 comportent de manière identique.</p>
426
427 <p>Les sections imbriquées sont fusionnées après les sections
428 non-imbriquées de même type.</p>
429
430 </section>
431
432 </section>
433
434 <section id="virtualhost"><title>Hôtes virtuels</title>
435
436 <p>Le conteneur <directive type="section" module="core">VirtualHost</directive>
437 contient des directives qui s'appliquent à des hôtes spécifiques.
438 Ceci s'avère utile pour servir des hôtes multiples à partir de la même machine,
439 chacun d'entre eux possédant une configuration différente.  Pour de plus amples
440 informations,
441 voir la <a href="vhosts/">Documentation sur les hôtes virtuels</a>.</p>
442 </section>
443
444 <section id="proxy"><title>Mandataire</title>
445
446 <p>Les conteneurs
447 <directive type="section" module="mod_proxy">Proxy</directive>
448 et <directive type="section" module="mod_proxy">ProxyMatch</directive>
449 appliquent les directives de configuration qu'ils contiennent uniquement aux
450 sites qui correspondent à l'URL spécifiée et auxquels on a
451 accédé via le serveur mandataire du module <module>mod_proxy</module>.
452 Par exemple, la configuration suivante n'autorisera qu'un sous-ensemble de
453 clients à accéder au site <code>www.example.com</code> en passant par le serveur
454 mandataire :.</p>
455
456 <highlight language="config">
457 &lt;Proxy http://www.example.com/*&gt;
458     Require host yournetwork.example.com
459 &lt;/Proxy&gt;
460 </highlight>
461 </section>
462
463 <section id="whatwhere"><title>Quelles sont les directives autorisées ?</title>
464
465 <p>Pour déterminer quelles sont les directives autorisées pour tel type de
466 section de configuration, vérifiez le <a
467 href="mod/directive-dict.html#Context">Contexte</a> de la directive.
468 Tout ce qui est autorisé dans les sections
469 <directive type="section" module="core">Directory</directive>
470 l'est aussi d'un point de vue syntaxique dans les sections
471 <directive type="section" module="core">DirectoryMatch</directive>,
472 <directive type="section" module="core">Files</directive>,
473 <directive type="section" module="core">FilesMatch</directive>,
474 <directive type="section" module="core">Location</directive>,
475 <directive type="section" module="core">LocationMatch</directive>,
476 <directive type="section" module="mod_proxy">Proxy</directive>,
477 et <directive type="section" module="mod_proxy">ProxyMatch</directive>.
478 Il y a cependant quelques exceptions :</p>
479
480 <ul>
481 <li>La directive <directive module="core">AllowOverride</directive>
482 ne fonctionne que dans les sections
483 <directive type="section" module="core">Directory</directive>.</li>
484
485 <li>Les <directive
486 module="core">Options</directive> <code>FollowSymLinks</code> et
487 <code>SymLinksIfOwnerMatch</code>  ne fonctionnent que dans les sections
488 <directive type="section" module="core">Directory</directive> ou les fichiers
489 <code>.htaccess</code>.</li>
490
491 <li>La directive <directive module="core">Options</directive> ne peut pas être
492 utilisée dans les sections
493 <directive type="section" module="core">Files</directive>
494 et <directive type="section" module="core">FilesMatch</directive>.</li>
495 </ul>
496 </section>
497
498 <section id="merging"><title>Comment les sections sont combinées entre elles</title>
499
500 <p>Les sections de configuration sont appliquées dans un ordre très particulier.
501 Il est important de savoir comment cet ordre est défini car il peut avoir
502 des effets importants sur la manière dont les directives de configuration
503 sont interprétées.</p>
504
505     <p>L'ordre dans lequel les sections sont combinées est :</p>
506
507     <ol>
508       <li> Les sections <directive type="section"
509       module="core">Directory</directive> (à l'exception des
510       expressions rationnelles)
511       et les fichiers <code>.htaccess</code> sont appliqués simultanément (avec
512       la possibilité pour <code>.htaccess</code>, s'il y est autorisé, de
513       prévaloir sur
514       <directive type="section" module="core">Directory</directive>)</li>
515
516       <li>Les sections
517       <directive type="section" module="core">DirectoryMatch</directive>
518       (et <code>&lt;Directory ~&gt;</code>)</li>
519
520       <li>Les sections <directive type="section"
521       module="core">Files</directive> et <directive
522       type="section" module="core">FilesMatch</directive> sont appliquées
523       simultanément</li>
524
525       <li>Les sections
526       <directive type="section" module="core">Location</directive>
527       et <directive type="section"
528       module="core">LocationMatch</directive> sont appliquées
529       simultanément</li>
530
531       <li>Les directives <directive type="section" module="core">If</directive>
532       </li>
533     </ol>
534
535     <p>Quelques remarques importantes :</p>
536     <ul>
537     <li>Mises à part les sections <directive type="section"
538     module="core">Directory</directive>, dans chaque groupe, les sections sont
539     traitées selon
540     l'ordre dans lequel elles apparaissent dans les fichiers de configuration.
541     Par exemple, une requête pour <em>/foo</em> correspondra à
542     <code>&lt;Location "/foo/bar"&gt;</code> et <code>&lt;Location
543     "/foo"&gt;</code> (dans ce cas le groupe 4) : les deux sections seront
544     évaluées mais selon l'ordre dans lequel elles apparaissent dans le fichier
545     de configuration..</li>
546     <li>Les sections <directive
547     type="section" module="core">Directory</directive> (groupe 1 ci-dessus)
548     sont traitées dans l'ordre du répertoire le plus court vers le plus long.
549     Par exemple, <code>&lt;Directory "/var/web/dir"&gt;</code> sera
550     traité avant <code>&lt;Directory
551     "/var/web/dir/subdir"&gt;</code>.</li>
552     <li>Si plusieurs sections <directive
553     type="section" module="core">Directory</directive> s'appliquent au même
554     répertoire, elles sont traitées selon l'ordre dans lequel elles
555     apparaissent dans le fichier de configuration.</li>
556     <li>Les sections de configuration incluses via la directive <directive
557     module="core">Include</directive> sont traitées comme si elles se
558     trouvaient réellement dans le fichier qui les inclut à la position de la
559     directive
560     <directive module="core">Include</directive>.</li>
561     <li>Les sections situées à l'intérieur de sections <directive type="section"
562     module="core">VirtualHost</directive>
563     sont appliquées <em>après</em> les sections correspondantes situées en
564     dehors de la définition de l'hôte virtuel, ce qui permet à l'hôte virtuel
565     de prévaloir sur la configuration du serveur principal.</li>
566     <li>Quand la requête est servie par le module <module>mod_proxy</module>,
567     le conteneur <directive module="mod_proxy" type="section">Proxy</directive>
568     prend la place du conteneur <directive module="core"
569     type="section">Directory</directive> dans l'ordre de traitement.</li>
570     </ul>
571
572         <note><title>Note technique</title>
573         Une séquence <code>&lt;Location&gt;</code>/<code>&lt;LocationMatch&gt;</code>
574         est réellement traitée juste avant la phase de traduction du nom
575         (où <code>Aliases</code> et <code>DocumentRoots</code>
576       sont utilisés pour faire correspondre les URLs aux noms de fichiers).
577       Les effets de cette séquence disparaissent totalement lorsque
578       la traduction est terminée.
579         </note>
580
581 <section id="relationship-module-configuration"><title>Interactions entre
582 modules et sections de configuration</title>
583     <p>Une question se pose souvent après avoir lu comment les sections de
584     configuration sont fusionnées : comment et quand les directives de modules
585     particuliers comme <module>mod_rewrite</module> sont-elles interprétées ? La
586     réponse n'est pas triviale et nécessite un approfondissement. Chaque module
587     httpd gère sa propre configuration, et chacune de ses directives dans
588     httpd.conf définit un élément de configuration dans un contexte particulier.
589     httpd n'exécute pas un commande au moment où elle est lue.</p>
590     <p>A l'exécution, le noyau de httpd parcours les sections de configuration
591     dans l'ordre décrit ci-dessus afin de déterminer lesquelles s'appliquent à
592     la requête courante. Lorsqu'une première section s'applique, elle est
593     considérée comme la configuration courante pour cette requête. Si une
594     section suivante s'applique aussi, chaque module qui possède des directives
595     dans chacune de ces sections a la possibilité de fusionner sa configuration
596     entre ces deux sections. Il en résulte une troisième configuration et le
597     processus de fusion se poursuit jusqu'à ce que toutes les sections de
598     configuration aient été évaluées.</p>
599     <p>Après l'étape précédente, le traitement proprement dit de la requête HTTP
600     peut commencer : chaque module peut effectuer toute tâche qui lui incombe,
601     et pour déterminer de quelle manière dont il doit agir, il peut s'appuyer
602     sur le noyau de httpd pour retrouver sa configuration globale issue de la
603     fusion précédente.</p>
604     <p>Un exemple permet de mieux visualiser l'ensemble du processus. la
605     configuration suivante utilise la directive <directive
606     module="mod_headers">Header</directive> du module
607     <module>mod_headers</module> pour définir un en-tête HTTP spécifique. Quelle
608     valeur httpd va-t-il affecter à l'en-tête <code>CustomHeaderName</code> pour
609     une requête vers <code>/example/index.html</code> ?
610     </p>
611     <highlight language="config">
612
613 &lt;Directory "/"&gt;
614     Header set CustomHeaderName one
615     &lt;FilesMatch ".*"&gt;
616         Header set CustomHeaderName three
617     &lt;/FilesMatch&gt;
618 &lt;/Directory&gt;
619
620 &lt;Directory "/example"&gt;
621     Header set CustomHeaderName two
622 &lt;/Directory&gt;
623
624     </highlight>
625     <ul>
626         <li><directive>Directory</directive> "/" s'applique, et une configuration
627         initiale est créée qui définit l'en-tête <code>CustomHeaderName</code>
628         avec la valeur <code>one</code>.</li>
629         <li><directive>Directory</directive> "/example" s'applique, et comme
630         <module>mod_headers</module> spécifie dans son code que
631         la valeur d'un en-tête doit être écrasée si ce dernier est défini à
632         nouveau, une nouvelle configuration est créée qui définit l'en-tête
633         <code>CustomHeaderName</code> avec la valeur <code>two</code>.</li>
634         <li><directive>FilesMatch</directive> ".*" s'applique, une nouvelle
635         opportunité de fusion surgit, et l'en-tête <code>CustomHeaderName</code>
636         est défini à la valeur <code>three</code>.</li>
637         <li>Finalement, au cours des étapes suivantes du traitement de la
638         requête HTTP, <module>mod_headers</module> sera sollicité, et il se
639         basera sur la configuration qui a défini l'en-tête
640         <code>CustomHeaderName</code> à la valeur <code>three</code>.
641         <module>mod_headers</module> utilise normalement cette configuration pour
642         accomplir sa tâche, à savoir définir des en-têtes HTTP. Cela ne veut
643         cependant pas dire qu'un module ne peut pas effectuer des actions plus
644         complexes comme désactiver des directives car elle ne sont pas
645         nécessaires ou obsolètes, etc...</li>
646     </ul>
647
648     <p>Ceci est aussi vrai pour les fichiers .htaccess car ils possèdent la même
649     priorité que les sections <directive>Directory</directive> dans l'ordre de
650     fusion. Il faut bien comprendre que les sections de configuration comme
651     <directive>Directory</directive> et <directive>FilesMatch</directive> ne
652     sont pas comparables avec les directives spécifiques de modules comme
653     <directive module="mod_headers">Header</directive> ou <directive
654     module="mod_rewrite">RewriteRule</directive> car elles agissent à des
655     niveaux différents.
656     </p>
657 </section>
658
659 <section id="merge-examples"><title>Quelques exemples utiles</title>
660
661 <p>Voici un exemple imaginaire qui montre l'ordre de combinaison des sections.
662 En supposant qu'elles s'appliquent toutes à la requête, les directives de
663 cet exemple seront appliquées dans l'ordre suivant : A &gt; B &gt; C &gt; D &gt;
664 E.</p>
665
666 <highlight language="config">
667 &lt;Location "/"&gt;
668     E
669 &lt;/Location&gt;
670
671 &lt;Files "f.html"&gt;
672     D
673 &lt;/Files&gt;
674
675 &lt;VirtualHost *&gt;
676    &lt;Directory "/a/"&gt;
677         B
678    &lt;/Directory&gt;
679 &lt;/VirtualHost&gt;
680
681 &lt;DirectoryMatch "^.*b$"&gt;
682     C
683 &lt;/DirectoryMatch&gt;
684
685 &lt;Directory "/a/b"&gt;
686     A
687 &lt;/Directory&gt;
688
689 </highlight>
690
691 <p>Pour un exemple plus concret, considérez ce qui suit.  Sans tenir compte
692 de toute restriction d'accès placée dans les sections <directive module="core"
693 type="section">Directory</directive>, la section <directive
694 module="core" type="section">Location</directive> sera
695 évaluée en dernier et permettra un accès au serveur sans aucune restriction.
696 En d'autres termes, l'ordre de la combinaison des sections est important,
697 soyez donc prudent !</p>
698
699 <highlight language="config">
700 &lt;Location "/"&gt;
701     Require all granted
702 &lt;/Location&gt;
703
704 # Arrghs!  Cette section &lt;Directory&gt; n'aura aucun effet
705 &lt;Directory "/"&gt;
706     &lt;RequireAll&gt;
707         Require all granted
708         Require not host badguy.example.com
709     &lt;/RequireAll&gt;
710 &lt;/Directory&gt;
711 </highlight>
712
713 </section>
714
715 </section>
716 </manualpage>