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: 1040808 -->
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 et aux fichiers que ces
174 derniers contiennent.
175 Le même effet peut être obtenu en utilisant les <a
176 href="howto/htaccess.html">fichiers .htaccess</a>. Par exemple, avec la
177 configuration suivante, l'indexation sera activée pour le répertoire
178 <code>/var/web/dir1</code> et tous ses sous-répertoires.</p>
181 <Directory /var/web/dir1><br />
182 Options +Indexes<br />
186 <p>Les directives contenues dans une section <directive type="section"
187 module="core">Files</directive> s'appliquent à tout fichier
188 avec le nom spécifié, quel que soit le répertoire dans lequel il se trouve.
189 Ainsi par exemple, les directives de configuration suivantes, si elles sont
190 placées dans la section principale du fichier de configuration, vont interdire
191 l'accès à tout fichier nommé <code>private.html</code> quel que soit
192 l'endroit où il se trouve.</p>
195 <Files private.html><br />
196 Order allow,deny<br />
201 <p>Pour faire référence à des fichiers qui se trouvent en des points
202 particuliers du système de fichiers, les sections
203 <directive type="section" module="core">Files</directive> et
204 <directive type="section" module="core">Directory</directive>
205 peuvent être combinées. Par exemple, la configuration suivante va interdire
206 l'accès à <code>/var/web/dir1/private.html</code>,
207 <code>/var/web/dir1/subdir2/private.html</code>,
208 <code>/var/web/dir1/subdir3/private.html</code>, ainsi que toute instance de
209 <code>private.html</code> qui se trouve dans l'arborescence
210 <code>/var/web/dir1/</code>.</p>
213 <Directory /var/web/dir1><br />
214 <Files private.html><br />
215 Order allow,deny<br />
222 <section id="webspace"><title>Conteneurs de l'arborescence du site web</title>
224 <p>le conteneur <directive type="section" module="core">Location</directive>
225 et son équivalent acceptant les
226 <glossary ref="regex">expressions rationnelles</glossary>, modifient quant à eux la
227 configuration de parties de l'arborescence du site web. Par exemple, la
228 configuration suivante interdit l'accès à toute URL dont la partie chemin
229 commence par /private.
230 En particulier, l'interdiction s'appliquera aux requêtes pour :
231 <code>http://yoursite.example.com/private</code>,
232 <code>http://yoursite.example.com/private123</code>, et
233 <code>http://yoursite.example.com/private/dir/file.html</code> ainsi qu'à
234 toute requête commençant par la chaîne de caractères <code>/private</code>.</p>
237 <LocationMatch ^/private><br />
238 Order Allow,Deny<br />
243 <p>Le conteneur <directive type="section" module="core">Location</directive>
244 n'a pas besoin de faire référence à un élément du système de fichiers.
245 Par exemple, l'exemple suivant montre comment faire référence à une URL
246 particulière vers un gestionnaire interne du serveur HTTP Apache fourni par le module
247 <module>mod_status</module>.
248 Il n'est pas nécessaire de trouver un fichier nommé <code>server-status</code>
249 dans le système de fichiers.</p>
252 <Location /server-status><br />
253 SetHandler server-status<br />
258 <section id="overlapping-webspace"><title>Espace web imbriqué</title>
259 <p>Pour contrôler deux URLs imbriquées, on doit tenir compte de l'ordre
260 dans lequel certaines sections ou directives sont évaluées. Pour
261 <directive type="section" module="core">Location</directive>, on doit
264 <Location /foo><br />
265 </Location><br />
266 <Location /foo/bar><br />
269 <p>Les directives <directive type="section"
270 module="core">Alias</directive>, quant à elles, sont évaluées vice-versa :</p>
272 Alias /foo/bar /srv/www/uncommon/bar<br />
273 Alias /foo /srv/www/common/foo<br />
275 <p>Ceci est aussi vrai pour les directives <directive
276 module="mod_proxy">ProxyPass</directive> :</p>
278 ProxyPass /special-area http://special.example.com smax=5 max=10<br />
279 ProxyPass / balancer://mycluster/ stickysession=JSESSIONID|jsessionid nofailover=On
284 <section id="wildcards"><title>Caractères de remplacement
285 et expressions rationnelles</title>
288 <directive type="section" module="core">Directory</directive>,
289 <directive type="section" module="core">Files</directive>, et
290 <directive type="section" module="core">Location</directive>
291 peuvent utiliser des caractères de remplacement de style shell comme dans
292 la fonction <code>fnmatch</code> de la bibliothèque C standard.
293 Le caractère "*"
294 correspond à toute séquence de caractères, "?" à un caractère seul,
295 et "[<em>seq</em>]" à tout caractère contenu dans <em>seq</em>.
296 Le caractère "/"
297 ne peut pas faire l'objet d'un remplacement;
298 il doit être spécifié explicitement.</p>
300 <p>Si une définition des critères de correspondance
301 encore plus souple est nécessaire, chaque conteneur
302 possède son équivalent acceptant les expressions rationnelles : <directive
303 type="section" module="core">DirectoryMatch</directive>, <directive
304 type="section" module="core">FilesMatch</directive>, et <directive
305 type="section" module="core">LocationMatch</directive> acceptent les
306 <glossary ref="regex">expressions rationnelles</glossary> compatibles Perl
307 pour définir les critères de correspondance. Mais voyez plus loin la section
308 à propos de la combinaison des sections de configuration
309 pour comprendre comment l'utilisation de
310 conteneurs avec des expressions rationnelles va modifier la manière
311 dont les directives sont appliquées.</p>
313 <p>Un conteneur qui modifie la configuration de tous les
314 répertoires utilisateurs à l'aide de caractères de remplacement
316 les expressions rationnelles pourrait ressembler à ceci :</p>
319 <Directory /home/*/public_html><br />
320 Options Indexes<br />
324 <p>Avec les conteneurs utilisant les expressions rationnelles,
325 on peut interdire l'accès à de nombreux types de fichiers d'images
326 simultanément :</p>
328 <FilesMatch \.(?i:gif|jpe?g|png)$><br />
329 Order allow,deny<br />
336 <section id="whichwhen"><title>Que faut-il utiliser et quand ?</title>
338 <p>Choisir entre des conteneurs de système de fichiers et des conteneurs
339 d'arborescence du site web est vraiment très simple.
340 Pour appliquer des directives à des objets qui résident dans le système de
341 fichiers, utilisez toujours un conteneur <directive type="section"
342 module="core">Directory</directive> ou <directive type="section"
343 module="core">Files</directive>. Pour appliquer des directives à des objets
344 qui ne résident pas dans le système de fichiers (comme une page web générée
345 par une base de données), utilisez un conteneur <directive type="section"
346 module="core">Location</directive>.</p>
348 <p>Il ne faut jamais utiliser un conteneur <directive type="section"
349 module="core">Location</directive> pour restreindre l'accès à des
350 objets du système de fichiers, car plusieurs localisations de
351 l'arborescence du site web (URLs) peuvent correspondre à la même localisation
352 du système de fichier, ce qui peut permettre de contourner vos restrictions.
353 Par exemple, imaginez la configuration suivante :</p>
356 <Location /dir/><br />
357 Order allow,deny<br />
362 <p>Elle fonctionne correctement si la requête appelle
363 <code>http://yoursite.example.com/dir/</code>. Mais que va-t-il se passer si
364 votre système de fichiers est insensible à la casse ?
365 Votre restriction va pouvoir être tout simplement contournée en envoyant une
367 <code>http://yoursite.example.com/DIR/</code>. Le conteneur <directive
368 type="section" module="core">Directory</directive>, quant à lui, s'appliquera
369 à tout contenu servi à partir de cette localisation,
370 sans tenir compte de la manière dont il est appelé.
371 (Les liens du système de fichiers constituent une exception.
372 Le même répertoire peut être placé dans plusieurs parties du système de
373 fichiers en utilisant des liens symboliques. Le conteneur
374 <directive type="section" module="core">Directory</directive> va suivre le
375 lien symbolique sans modifier le nom du chemin. Par conséquent, pour plus de
376 sécurité, les liens symboliques doivent être désactivés à l'aide de la
378 <directive module="core">Options</directive> appropriée.)</p>
380 <p>Si vous pensez que vous n'êtes pas concerné par ce problème
381 parceque vous utilisez un système de fichiers sensible à la casse,
382 gardez à l'esprit qu'il y a de nombreuses autres manières pour faire
383 correspondre plusieurs localisations de l'arborescence du site web à la même
384 localisation du système de fichiers. C'est pourquoi vous devez autant que
385 possible toujours utiliser les conteneurs de système de fichiers.
386 Il y a cependant une exception à cette règle. Placer des restrictions de
387 configuration dans un conteneur <code><Location
388 /></code> est tout à fait sans rique car ce conteneur va s'appliquer à
389 toutes les requêtes sans tenir compte de l'URL spécifique.</p>
394 <section id="virtualhost"><title>Hôtes virtuels</title>
396 <p>Le conteneur <directive type="section" module="core">VirtualHost</directive>
397 contient des directives qui s'appliquent à des hôtes spécifiques.
398 Ceci s'avère utile pour servir des hôtes multiples à partir de la même machine,
399 chacun d'entre eux possédant une configuration différente. Pour de plus amples
401 voir la <a href="vhosts/">Documentation sur les hôtes virtuels</a>.</p>
404 <section id="proxy"><title>Mandataire</title>
407 <directive type="section" module="mod_proxy">Proxy</directive>
408 et <directive type="section" module="mod_proxy">ProxyMatch</directive>
409 appliquent les directives de configuration qu'ils contiennent uniquement aux
410 sites qui correspondent à l'URL spécifiée et auxquels on a
411 accédé via le serveur mandataire du module <module>mod_proxy</module>.
412 Par exemple, la configuration suivante
413 va interdire l'utilisation du serveur proxy pour accéder au site
414 <code>cnn.com</code>.</p>
417 <Proxy http://cnn.com/*><br />
418 Order allow,deny<br />
424 <section id="whatwhere"><title>Quelles sont les directives autorisées ?</title>
426 <p>Pour déterminer quelles sont les directives autorisées pour tel type de
427 section de configuration, vérifiez le <a
428 href="mod/directive-dict.html#Context">Contexte</a> de la directive.
429 Tout ce qui est autorisé dans les sections
430 <directive type="section" module="core">Directory</directive>
431 l'est aussi d'un point de vue syntaxique dans les sections
432 <directive type="section" module="core">DirectoryMatch</directive>,
433 <directive type="section" module="core">Files</directive>,
434 <directive type="section" module="core">FilesMatch</directive>,
435 <directive type="section" module="core">Location</directive>,
436 <directive type="section" module="core">LocationMatch</directive>,
437 <directive type="section" module="mod_proxy">Proxy</directive>,
438 et <directive type="section" module="mod_proxy">ProxyMatch</directive>.
439 Il y a cependant quelques exceptions :</p>
442 <li>La directive <directive module="core">AllowOverride</directive>
443 ne fonctionne que dans les sections
444 <directive type="section" module="core">Directory</directive>.</li>
447 module="core">Options</directive> <code>FollowSymLinks</code> et
448 <code>SymLinksIfOwnerMatch</code> ne fonctionnent que dans les sections
449 <directive type="section" module="core">Directory</directive> ou les fichiers
450 <code>.htaccess</code>.</li>
452 <li>La directive <directive module="core">Options</directive> ne peut pas être
453 utilisée dans les sections
454 <directive type="section" module="core">Files</directive>
455 et <directive type="section" module="core">FilesMatch</directive>.</li>
459 <section id="mergin"><title>Comment les sections sont combinées entre elles</title>
461 <p>Les sections de configuration sont appliquées dans un ordre très particulier.
462 Il est important de savoir comment cet ordre est défini car il peut avoir
463 des effets importants sur la manière dont les directives de configuration
464 sont interprétées.</p>
466 <p>L'ordre dans lequel les sections sont combinées est :</p>
469 <li> Les sections <directive type="section"
470 module="core">Directory</directive> (à l'exception des
471 expressions rationnelles)
472 et les fichiers <code>.htaccess</code> sont appliqués simultanément (avec
473 la possibilité pour <code>.htaccess</code>, s'il y est autorisé, de
475 <directive type="section" module="core">Directory</directive>)</li>
478 <directive type="section" module="core">DirectoryMatch</directive>
479 (et <code><Directory ~></code>)</li>
481 <li>Les sections <directive type="section"
482 module="core">Files</directive> et <directive
483 type="section" module="core">FilesMatch</directive> sont appliquées
484 simultanément</li>
487 <directive type="section" module="core">Location</directive>
488 et <directive type="section"
489 module="core">LocationMatch</directive> sont appliquées
490 simultanément</li>
493 <p>Mises à part les sections <directive type="section"
494 module="core">Directory</directive>, chaque groupe est traité selon
495 l'ordre dans lequel il apparaît dans les fichiers de configuration.
496 Les sections <directive
497 type="section" module="core">Directory</directive> (groupe 1 ci-dessus)
498 sont traitées dans l'ordre du répertoire le plus court vers le plus long.
499 Par exemple, <code><Directory /var/web/dir></code> sera
500 traité avant <code><Directory
501 /var/web/dir/subdir></code>. Si plusieurs sections <directive
502 type="section" module="core">Directory</directive> s'appliquent au même
503 répertoire, elles sont traitées selon l'ordre dans lequel elles
504 apparaissent dans le fichier de configuration.
505 Les sections de configuration incluses via la directive <directive
506 module="core">Include</directive> sont traitées comme si elles se
507 trouvaient réellement dans le fichier qui les inclut à la position de la
509 <directive module="core">Include</directive>.</p>
511 <p>Les sections situées à l'intérieur de sections <directive type="section"
512 module="core">VirtualHost</directive>
513 sont appliquées <em>après</em> les sections correspondantes situées en
514 dehors de la définition de l'hôte virtuel, ce qui permet à l'hôte virtuel
515 de prévaloir sur la configuration du serveur principal.</p>
517 <p>Quand la requête est servie par le module <module>mod_proxy</module>,
518 le conteneur <directive module="mod_proxy" type="section">Proxy</directive>
519 prend la place du conteneur <directive module="core"
520 type="section">Directory</directive> dans l'ordre de traitement.</p>
522 <p>Les sections situées plus loin dans le fichier de configuration prévalent
523 sur celles qui les précèdent.</p>
525 <note><title>Note technique</title>
527 <code><Location></code>/<code><LocationMatch></code>
528 est réellement traitée juste avant la phase de traduction du nom
529 (où <code>Aliases</code> et <code>DocumentRoots</code>
530 sont utilisés pour faire correspondre les URLs aux noms de fichiers).
531 Les effets de cette séquence disparaissent totalement lorsque
532 la traduction est terminée.
535 <section id="merge-examples"><title>Quelques exemples</title>
537 <p>Voici un exemple imaginaire qui montre l'ordre de combinaison des sections.
538 En supposant qu'elles s'appliquent toutes à la requête, les directives de
539 cet exemple seront appliquées dans l'ordre suivant : A > B > C > D >
543 <Location /><br />
545 </Location><br />
547 <Files f.html><br />
551 <VirtualHost *><br />
552 <Directory /a/b><br />
554 </Directory><br />
555 </VirtualHost><br />
557 <DirectoryMatch "^.*b$"><br />
559 </DirectoryMatch><br />
561 <Directory /a/b><br />
563 </Directory><br />
567 <p>Pour un exemple plus concret, considérez ce qui suit. Sans tenir compte
568 de toute restriction d'accès placée dans les sections <directive module="core"
569 type="section">Directory</directive>, la section <directive
570 module="core" type="section">Location</directive> sera
571 évaluée en dernier et permettra un accès au serveur sans aucune restriction.
572 En d'autres termes, l'ordre de la combinaison des sections est important,
573 soyez donc prudent !</p>
576 <Location /><br />
577 Order deny,allow<br />
579 </Location><br />
580 <br />:if expand("%") == ""|browse confirm w|else|confirm w|endif
582 # Arrghs! Cette section <Directory> n'aura aucun effet<br />
583 <Directory /><br />
584 Order allow,deny<br />
586 Deny from badguy.example.com<br />