1 <?xml version="1.0" encoding="ISO-8859-1" ?>
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: 927824 -->
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
16 http://www.apache.org/licenses/LICENSE-2.0
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.
25 <manualpage metafile="sections.xml.meta">
27 <title>Sections de configuration</title>
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>
37 <section id="types"><title>Types de conteneurs de sections de
43 <module>mod_version</module>
44 <module>mod_proxy</module>
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" module="mod_proxy">Proxy</directive>
58 <directive type="section" module="mod_proxy">ProxyMatch</directive>
59 <directive type="section" module="core">VirtualHost</directive>
63 <p>Il existe deux grands types de conteneurs. La plupart des conteneurs sont
64 évalués pour chaque requête. Les directives qu'ils contiennent s'appliquent
65 seulement aux requêtes qui sont concernées par le conteneur. En revanche,
67 <directive type="section" module="core">IfDefine</directive>, <directive
68 type="section" module="core">IfModule</directive>, et
69 <directive type="section" module="mod_version">IfVersion</directive> sont
70 évalués seulement au démarrage et au redémarrage du serveur.
71 Si leurs conditions sont vérifiées au démarrage, les directives qu'ils contiennent
72 s'appliqueront à toutes les requêtes. Si leurs conditions ne sont pas vérifiées, les
73 directives qu'ils contiennent seront ignorées.</p>
75 <p>Le conteneur <directive type="section" module="core">IfDefine</directive>
76 contient des directives qui ne seront appliquées que si un paramètre
77 approprié a été défini dans la ligne de commande de <program>httpd</program>.
79 avec la configuration suivante, toutes les requêtes seront redirigées vers
80 un autre site si le serveur est démarré en utilisant la ligne de commande :
81 <code>httpd -DClosedForNow</code>:</p>
84 <IfDefine ClosedForNow><br />
85 Redirect / http://otherserver.example.com/<br />
89 <p>Le conteneur <directive type="section" module="core">IfModule</directive>
90 est similaire; les directives qu'il contient ne s'appliqueront que si
91 un module particulier est disponible au niveau du serveur.
92 Le module doit être soit compilé statiquement dans le serveur, soit
93 dynamiquement et dans ce cas, la ligne <directive
94 module="mod_so">LoadModule</directive> correspondante doit apparaître
95 plus haut dans le fichier de configuration. Ce conteneur ne doit être
96 utilisé que dans le cas où votre fichier de configuration doit fonctionner
97 indépendamment de la présence ou de l'absence de certains modules.
98 Il ne doit pas contenir de directives que vous souhaitez voir s'appliquer
99 systématiquement, car vous pouvez perdre ainsi de précieux messages d'erreur
100 à propos de modules manquants.</p>
102 <p>Dans l'exemple suivant, la directive <directive
103 module="mod_mime_magic">MimeMagicFiles</directive> ne s'appliquera que si le
104 module <module>mod_mime_magic</module> est disponible.</p>
107 <IfModule mod_mime_magic.c><br />
108 MimeMagicFile conf/magic<br />
113 <directive type="section" module="mod_version">IfVersion</directive>
114 est similaire aux conteneurs <directive type="section"
115 module="core">IfDefine</directive> et <directive type="section"
116 module="core">IfModule</directive>; les directives qu'il contient ne
117 s'appliqueront que si une version particulière du serveur s'exécute. Ce
118 conteneur a été conçu pour une utilisation dans les suites de tests
119 et les grands réseaux qui doivent prendre en compte différentes versions
120 et configurations de httpd.</p>
123 <IfVersion >= 2.1><br />
125 # les directives situées ici ne s'appliquent que si la version <br />
126 # est supérieure ou égale à 2.1.0.<br />
131 <p><directive type="section" module="core">IfDefine</directive>,
132 <directive type="section" module="core">IfModule</directive>, et
133 <directive type="section" module="mod_version">IfVersion</directive>
134 peuvent inverser leur test conditionnel en le faisant précéder d'un "!".
135 De plus, ces sections peuvent être imbriquées afin de définir des restrictions
139 <section id="file-and-web"><title>Système de fichiers et
140 arborescence du site web</title>
142 <p>Les conteneurs de sections de configuration les plus couramment utilisés
143 sont ceux qui modifient la configuration de points particuliers du système de
144 fichiers ou de l'arborescence du site web. Tout d'abord, il est important de
145 comprendre la différence entre les deux. Le système de fichiers est une vue
146 de vos disques tels qu'ils sont perçus par votre système d'exploitation.
147 Par exemple, avec une installation par défaut,
148 Apache httpd est situé dans <code>/usr/local/apache2</code> pour le système de
149 fichiers UNIX, ou <code>"c:/Program Files/Apache Group/Apache2"</code> pour
150 le système de fichiers Windows. (Notez que des slashes directs doivent
151 toujours être utilisés comme séparateur de chemin
152 dans les fichiers de configuration d'Apache httpd, même sous
153 Windows.) Quant à
154 l'arborescence du site web, il s'agit d'une vue de votre site
155 tel que présenté par le
156 serveur web et perçue par le client. Ainsi le chemin <code>/dir/</code> dans
157 l'arborescence du site web correspond au chemin
158 <code>/usr/local/apache2/htdocs/dir/</code> dans le système de fichiers pour
159 une installation d'Apache httpd par défaut sous UNIX.
160 En outre, l'arborescence du site web n'a pas besoin de correspondre en permanence au
161 système de fichiers, car les pages web peuvent être générées dynamiquement
162 à partir de bases de données ou d'autres emplacements.</p>
164 <section id="filesystem"><title>Conteneurs de système de fichiers</title>
166 <p>Les conteneurs <directive type="section" module="core">Directory</directive>
167 et <directive type="section" module="core">Files</directive>,
168 ainsi que leurs équivalents acceptant les
169 <glossary ref="regex">expressions rationnelles</glossary>,
170 appliquent des directives à certaines parties du système de fichiers.
171 Les directives contenues dans une section <directive
172 type="section" module="core">Directory</directive> s'appliquent au répertoire
173 précisé, ainsi qu'à tous ses sous-répertoires.
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>
180 <Directory /var/web/dir1><br />
181 Options +Indexes<br />
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>
194 <Files private.html><br />
195 Order allow,deny<br />
200 <p>Pour faire référence à des fichiers qui se trouvent en des points
201 particuliers du système de fichiers, les sections
202 <directive type="section" module="core">Files</directive> et
203 <directive type="section" module="core">Directory</directive>
204 peuvent être combinées. Par exemple, la configuration suivante va interdire
205 l'accès à <code>/var/web/dir1/private.html</code>,
206 <code>/var/web/dir1/subdir2/private.html</code>,
207 <code>/var/web/dir1/subdir3/private.html</code>, ainsi que toute instance de
208 <code>private.html</code> qui se trouve dans l'arborescence
209 <code>/var/web/dir1/</code>.</p>
212 <Directory /var/web/dir1><br />
213 <Files private.html><br />
214 Order allow,deny<br />
221 <section id="webspace"><title>Conteneurs de l'arborescence du site web</title>
223 <p>le conteneur <directive type="section" module="core">Location</directive>
224 et son équivalent acceptant les
225 <glossary ref="regex">expressions rationnelles</glossary>, modifient quant à eux la
226 configuration de parties de l'arborescence du site web. Par exemple, la
227 configuration suivante interdit l'accès à toute URL dont la partie chemin
228 commence par /private.
229 En particulier, l'interdiction s'appliquera aux requêtes pour :
230 <code>http://yoursite.example.com/private</code>,
231 <code>http://yoursite.example.com/private123</code>, et
232 <code>http://yoursite.example.com/private/dir/file.html</code> ainsi qu'à
233 toute requête commençant par la chaîne de caractères <code>/private</code>.</p>
236 <Location /private><br />
237 Order Allow,Deny<br />
242 <p>Le conteneur <directive type="section" module="core">Location</directive>
243 n'a pas besoin de faire référence à un élément du système de fichiers.
244 Par exemple, l'exemple suivant montre comment faire référence à une URL
245 particulière vers un gestionnaire interne du serveur HTTP Apache fourni par le module
246 <module>mod_status</module>.
247 Il n'est pas nécessaire de trouver un fichier nommé <code>server-status</code>
248 dans le système de fichiers.</p>
251 <Location /server-status><br />
252 SetHandler server-status<br />
257 <section id="overlapping-webspace"><title>Espace web imbriqué</title>
258 Pour contrôler deux URLs imbriquées, on doit tenir compte de l'ordre
259 dans lequel certaines sections ou directives sont évaluées. Pour
260 <directive type="section" module="core">Location</directive>, on doit
263 <Location /foo><br />
264 </Location><br />
265 <Location /foo/bar><br />
268 Les directives <directive type="section"
269 module="core">Alias</directive>, quant à elles, sont évaluées vice-versa :
271 Alias /foo/bar /srv/www/uncommon/bar<br />
272 Alias /foo /srv/www/common/foo<br />
274 Ceci est aussi vrai pour les directives <directive
275 module="mod_proxy">ProxyPass</directive> :
277 ProxyPass /special-area http://special.example.com smax=5 max=10
278 ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=On
283 <section id="wildcards"><title>Caractères de remplacement
284 et expressions rationnelles</title>
287 <directive type="section" module="core">Directory</directive>,
288 <directive type="section" module="core">Files</directive>, et
289 <directive type="section" module="core">Location</directive>
290 peuvent utiliser des caractères de remplacement de style shell comme dans
291 la fonction <code>fnmatch</code> de la bibliothèque C standard.
292 Le caractère "*"
293 correspond à toute séquence de caractères, "?" à un caractère seul,
294 et "[<em>seq</em>]" à tout caractère contenu dans <em>seq</em>.
295 Le caractère "/"
296 ne peut pas faire l'objet d'un remplacement;
297 il doit être spécifié explicitement.</p>
299 <p>Si une définition des critères de correspondance
300 encore plus souple est nécessaire, chaque conteneur
301 possède son équivalent acceptant les expressions rationnelles : <directive
302 type="section" module="core">DirectoryMatch</directive>, <directive
303 type="section" module="core">FilesMatch</directive>, et <directive
304 type="section" module="core">LocationMatch</directive> acceptent les
305 <glossary ref="regex">expressions rationnelles</glossary> compatibles Perl
306 pour définir les critères de correspondance. Mais voyez plus loin la section
307 à propos de la combinaison des sections de configuration
308 pour comprendre comment l'utilisation de
309 conteneurs avec des expressions rationnelles va modifier la manière
310 dont les directives sont appliquées.</p>
312 <p>Un conteneur qui modifie la configuration de tous les
313 répertoires utilisateurs à l'aide de caractères de remplacement
315 les expressions rationnelles pourrait ressembler à ceci :</p>
318 <Directory /home/*/public_html><br />
319 Options Indexes<br />
323 <p>Avec les conteneurs utilisant les expressions rationnelles,
324 on peut interdire l'accès à de nombreux types de fichiers d'images
325 simultanément :</p>
327 <FilesMatch \.(?i:gif|jpe?g|png)$><br />
328 Order allow,deny<br />
335 <section id="whichwhen"><title>Que faut-il utiliser et quand ?</title>
337 <p>Choisir entre des conteneurs de système de fichiers et des conteneurs
338 d'arborescence du site web est vraiment très simple.
339 Pour appliquer des directives à des objets qui résident dans le système de
340 fichiers, utilisez toujours un conteneur <directive type="section"
341 module="core">Directory</directive> ou <directive type="section"
342 module="core">Files</directive>. Pour appliquer des directives à des objets
343 qui ne résident pas dans le système de fichiers (comme une page web générée
344 par une base de données), utilisez un conteneur <directive type="section"
345 module="core">Location</directive>.</p>
347 <p>Il ne faut jamais utiliser un conteneur <directive type="section"
348 module="core">Location</directive> pour restreindre l'accès à des
349 objets du système de fichiers, car plusieurs localisations de
350 l'arborescence du site web (URLs) peuvent correspondre à la même localisation
351 du système de fichier, ce qui peut permettre de contourner vos restrictions.
352 Par exemple, imaginez la configuration suivante :</p>
355 <Location /dir/><br />
356 Order allow,deny<br />
361 <p>Elle fonctionne correctement si la requête appelle
362 <code>http://yoursite.example.com/dir/</code>. Mais que va-t-il se passer si
363 votre système de fichiers est insensible à la casse ?
364 Votre restriction va pouvoir être tout simplement contournée en envoyant une
366 <code>http://yoursite.example.com/DIR/</code>. Le conteneur <directive
367 type="section" module="core">Directory</directive>, quant à lui, s'appliquera
368 à tout contenu servi à partir de cette localisation,
369 sans tenir compte de la manière dont il est appelé.
370 (Les liens du système de fichiers constituent une exception.
371 Le même répertoire peut être placé dans plusieurs parties du système de
372 fichiers en utilisant des liens symboliques. Le conteneur
373 <directive type="section" module="core">Directory</directive> va suivre le
374 lien symbolique sans modifier le nom du chemin. Par conséquent, pour plus de
375 sécurité, les liens symboliques doivent être désactivés à l'aide de la
377 <directive module="core">Options</directive> appropriée.)</p>
379 <p>Si vous pensez que vous n'êtes pas concerné par ce problème
380 parceque vous utilisez un système de fichiers sensible à la casse,
381 gardez à l'esprit qu'il y a de nombreuses autres manières pour faire
382 correspondre plusieurs localisations de l'arborescence du site web à la même
383 localisation du système de fichiers. C'est pourquoi vous devez autant que
384 possible toujours utiliser les conteneurs de système de fichiers.
385 Il y a cependant une exception à cette règle. Placer des restrictions de
386 configuration dans un conteneur <code><Location
387 /></code> est tout à fait sans rique car ce conteneur va s'appliquer à
388 toutes les requêtes sans tenir compte de l'URL spécifique.</p>
393 <section id="virtualhost"><title>Hôtes virtuels</title>
395 <p>Le conteneur <directive type="section" module="core">VirtualHost</directive>
396 contient des directives qui s'appliquent à des hôtes spécifiques.
397 Ceci s'avère utile pour servir des hôtes multiples à partir de la même machine,
398 chacun d'entre eux possédant une configuration différente. Pour de plus amples
400 voir la <a href="vhosts/">Documentation sur les hôtes virtuels</a>.</p>
403 <section id="proxy"><title>Mandataire</title>
406 <directive type="section" module="mod_proxy">Proxy</directive>
407 et <directive type="section" module="mod_proxy">ProxyMatch</directive>
408 appliquent les directives de configuration qu'ils contiennent uniquement aux
409 sites qui correspondent à l'URL spécifiée et auxquels on a
410 accédé via le serveur mandataire du module <module>mod_proxy</module>.
411 Par exemple, la configuration suivante
412 va interdire l'utilisation du serveur proxy pour accéder au site
413 <code>cnn.com</code>.</p>
416 <Proxy http://cnn.com/*><br />
417 Order allow,deny<br />
423 <section id="whatwhere"><title>Quelles sont les directives autorisées ?</title>
425 <p>Pour déterminer quelles sont les directives autorisées pour tel type de
426 section de configuration, vérifiez le <a
427 href="mod/directive-dict.html#Context">Contexte</a> de la directive.
428 Tout ce qui est autorisé dans les sections
429 <directive type="section" module="core">Directory</directive>
430 l'est aussi d'un point de vue syntaxique dans les sections
431 <directive type="section" module="core">DirectoryMatch</directive>,
432 <directive type="section" module="core">Files</directive>,
433 <directive type="section" module="core">FilesMatch</directive>,
434 <directive type="section" module="core">Location</directive>,
435 <directive type="section" module="core">LocationMatch</directive>,
436 <directive type="section" module="mod_proxy">Proxy</directive>,
437 et <directive type="section" module="mod_proxy">ProxyMatch</directive>.
438 Il y a cependant quelques exceptions :</p>
441 <li>La directive <directive module="core">AllowOverride</directive>
442 ne fonctionne que dans les sections
443 <directive type="section" module="core">Directory</directive>.</li>
446 module="core">Options</directive> <code>FollowSymLinks</code> et
447 <code>SymLinksIfOwnerMatch</code> ne fonctionnent que dans les sections
448 <directive type="section" module="core">Directory</directive> ou les fichiers
449 <code>.htaccess</code>.</li>
451 <li>La directive <directive module="core">Options</directive> ne peut pas être
452 utilisée dans les sections
453 <directive type="section" module="core">Files</directive>
454 et <directive type="section" module="core">FilesMatch</directive>.</li>
458 <section id="mergin"><title>Comment les sections sont combinées entre elles</title>
460 <p>Les sections de configuration sont appliquées dans un ordre très particulier.
461 Il est important de savoir comment cet ordre est défini car il peut avoir
462 des effets importants sur la manière dont les directives de configuration
463 sont interprétées.</p>
465 <p>L'ordre dans lequel les sections sont combinées est :</p>
468 <li> Les sections <directive type="section"
469 module="core">Directory</directive> (à l'exception des
470 expressions rationnelles)
471 et les fichiers <code>.htaccess</code> sont appliqués simultanément (avec
472 la possibilité pour <code>.htaccess</code>, s'il y est autorisé, de
474 <directive type="section" module="core">Directory</directive>)</li>
477 <directive type="section" module="core">DirectoryMatch</directive>
478 (et <code><Directory ~></code>)</li>
480 <li>Les sections <directive type="section"
481 module="core">Files</directive> et <directive
482 type="section" module="core">FilesMatch</directive> sont appliquées
483 simultanément</li>
486 <directive type="section" module="core">Location</directive>
487 et <directive type="section"
488 module="core">LocationMatch</directive> sont appliquées
489 simultanément</li>
492 <p>Mises à part les sections <directive type="section"
493 module="core">Directory</directive>, chaque groupe est traité selon
494 l'ordre dans lequel il apparaît dans les fichiers de configuration.
495 Les sections <directive
496 type="section" module="core">Directory</directive> (groupe 1 ci-dessus)
497 sont traitées dans l'ordre du répertoire le plus court vers le plus long.
498 Par exemple, <code><Directory /var/web/dir></code> sera
499 traité avant <code><Directory
500 /var/web/dir/subdir></code>. Si plusieurs sections <directive
501 type="section" module="core">Directory</directive> s'appliquent au même
502 répertoire, elles sont traitées selon l'ordre dans lequel elles
503 apparaissent dans le fichier de configuration.
504 Les sections de configuration incluses via la directive <directive
505 module="core">Include</directive> sont traitées comme si elles se
506 trouvaient réellement dans le fichier qui les inclut à la position de la
508 <directive module="core">Include</directive>.</p>
510 <p>Les sections situées à l'intérieur de sections <directive type="section"
511 module="core">VirtualHost</directive>
512 sont appliquées <em>après</em> les sections correspondantes situées en
513 dehors de la définition de l'hôte virtuel, ce qui permet à l'hôte virtuel
514 de prévaloir sur la configuration du serveur principal.</p>
516 <p>Quand la requête est servie par le module <module>mod_proxy</module>,
517 le conteneur <directive module="mod_proxy" type="section">Proxy</directive>
518 prend la place du conteneur <directive module="core"
519 type="section">Directory</directive> dans l'ordre de traitement.</p>
521 <p>Les sections situées plus loin dans le fichier de configuration prévalent
522 sur celles qui les précèdent.</p>
524 <note><title>Note technique</title>
526 <code><Location></code>/<code><LocationMatch></code>
527 est réellement traitée juste avant la phase de traduction du nom
528 (où <code>Aliases</code> et <code>DocumentRoots</code>
529 sont utilisés pour faire correspondre les URLs aux noms de fichiers).
530 Les effets de cette séquence disparaissent totalement lorsque
531 la traduction est terminée.
534 <section id="merge-examples"><title>Quelques exemples</title>
536 <p>Voici un exemple imaginaire qui montre l'ordre de combinaison des sections.
537 En supposant qu'elles s'appliquent toutes à la requête, les directives de
538 cet exemple seront appliquées dans l'ordre suivant : A > B > C > D >
542 <Location /><br />
544 </Location><br />
546 <Files f.html><br />
550 <VirtualHost *><br />
551 <Directory /a/b><br />
553 </Directory><br />
554 </VirtualHost><br />
556 <DirectoryMatch "^.*b$"><br />
558 </DirectoryMatch><br />
560 <Directory /a/b><br />
562 </Directory><br />
566 <p>Pour un exemple plus concret, considérez ce qui suit. Sans tenir compte
567 de toute restriction d'accès placée dans les sections <directive module="core"
568 type="section">Directory</directive>, la section <directive
569 module="core" type="section">Location</directive> sera
570 évaluée en dernier et permettra un accès au serveur sans aucune restriction.
571 En d'autres termes, l'ordre de la combinaison des sections est important,
572 soyez donc prudent !</p>
575 <Location /><br />
576 Order deny,allow<br />
578 </Location><br />
579 <br />:if expand("%") == ""|browse confirm w|else|confirm w|endif
581 # Arrghs! Cette section <Directory> n'aura aucun effet<br />
582 <Directory /><br />
583 Order allow,deny<br />
585 Deny from badguy.example.com<br />