2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1082196 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
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 <modulesynopsis metafile="core.xml.meta">
28 <description>Fonctionnalités de base du serveur HTTP Apache toujours
29 disponibles</description>
33 <name>AcceptFilter</name>
34 <description>Permet d'optimiser la configuration d'une socket pour
35 l'écoute d'un protocole</description>
36 <syntax>AcceptFilter <var>protocole</var> <var>filtre
37 d'acceptation</var></syntax>
38 <contextlist><context>server config</context></contextlist>
39 <compatibility>Disponible depuis la version 2.3.3 sous Windows et 2.1.5
40 sur les autres plates-formes.</compatibility>
43 <p>Cette directive permet d'effectuer une optimisation de la socket
44 d'écoute d'un type de protocole en fonction du système
45 d'exploitation. Le but premier est de faire en sorte que le noyau
46 n'envoie pas de socket au processus du serveur jusqu'à ce que
47 des données soient reçues, ou qu'une requête HTTP complète soit mise
48 en tampon. Seuls les <a
49 href="http://www.freebsd.org/cgi/man.cgi?query=accept_filter&
50 sektion=9">Filtres d'acceptation de FreeBSD</a>, le filtre plus
51 primitif <code>TCP_DEFER_ACCEPT</code> sous Linux, et la version
52 optimisée d'AcceptEx() de Windows sont actuellement supportés.</p>
54 <p>L'utilisation de l'argument <code>none</code> va désactiver tout
55 filtre d'acceptation pour ce protocole. Ceci s'avère utile pour les
56 protocoles qui nécessitent l'envoi de données par le serveur en
57 premier, comme <code>ftp:</code> ou <code>nntp</code>:</p>
58 <example>AcceptFilter nntp none</example>
60 <p>Les noms de protocoles par défaut sont <code>https</code> pour le
61 port 443 et <code>http</code> pour tous les autres ports. Pour
62 spécifier un autre protocole à utiliser avec un port en écoute,
63 ajoutez l'argument <var>protocol</var> à la directive <directive
64 module="mpm_common">Listen</directive>.</p>
66 <p>Sous FreeBSD, les valeurs par défaut sont :</p>
68 AcceptFilter http httpready <br/>
69 AcceptFilter https dataready
72 <p>Le filtre d'acceptation <code>httpready</code> met en tampon des
73 requêtes HTTP entières au niveau du noyau. Quand une requête
74 entière a été reçue, le noyau l'envoie au serveur. Voir la page de
76 href="http://www.freebsd.org/cgi/man.cgi?query=accf_http&
77 sektion=9">accf_http(9)</a> pour plus de détails. Comme les requêtes
78 HTTPS sont chiffrées, celles-ci n'autorisent que le filtre <a
79 href="http://www.freebsd.org/cgi/man.cgi?query=accf_data&
80 sektion=9">accf_data(9)</a>.</p>
82 <p>Sous Linux, les valeurs par défaut sont :</p>
84 AcceptFilter http data <br/>
85 AcceptFilter https data
88 <p>Le filtre <code>TCP_DEFER_ACCEPT</code> de Linux ne supporte pas
89 la mise en tampon des requêtes http. Toute valeur autre que
90 <code>none</code> active le filtre <code>TCP_DEFER_ACCEPT</code>
91 pour ce protocole. Pour plus de détails, voir la page de
93 href="http://homepages.cwi.nl/~aeb/linux/man2html/man7/
94 tcp.7.html">tcp(7)</a>.</p>
96 <p>Sous Windows, les valeurs par défaut sont :</p>
98 AcceptFilter http data <br/>
99 AcceptFilter https data
102 <p>Le module MPM pour Windows mpm_winnt utilise la directive
103 AcceptFilter comme commutateur de l'API AcceptEx(), et ne supporte
104 pas la mise en tampon du protocole http. Deux valeurs utilisent
105 l'API Windows AcceptEx() et vont recycler les sockets réseau entre
106 les connexions. <code>data</code> attend jusqu'à ce que les données
107 aient été transmises comme décrit plus haut, et le tampon de données
108 initiales ainsi que les adresses réseau finales sont tous extraits
109 grâce à une seule invocation d'AcceptEx(). <code>connect</code>
110 utilise l'API AcceptEx(), extrait aussi les adresses réseau finales,
111 mais à l'instar de <code>none</code>, la valeur <code>connect</code>
112 n'attend pas la transmission des données initiales.</p>
114 <p>Sous Windows, <code>none</code> utilise accept() au lieu
115 d'AcceptEx(), et ne recycle pas les sockets entre les connexions.
116 Ceci s'avère utile pour les interfaces réseau dont le pilote est
117 défectueux, ainsi que pour certains fournisseurs de réseau comme les
118 pilotes vpn, ou les filtres anti-spam, anti-virus ou
122 <seealso><directive>Protocol</directive></seealso>
126 <name>AcceptPathInfo</name>
127 <description>Les ressources acceptent des informations sous forme d'un
128 nom de chemin en fin de requête.</description>
129 <syntax>AcceptPathInfo On|Off|Default</syntax>
130 <default>AcceptPathInfo Default</default>
131 <contextlist><context>server config</context>
132 <context>virtual host</context><context>directory</context>
133 <context>.htaccess</context></contextlist>
134 <override>FileInfo</override>
135 <compatibility>Disponible dans Apache httpd version 2.0.30 et
136 supérieures</compatibility>
140 <p>Cette directive permet de définir si les requêtes contenant des
141 informations sous forme d'un nom de chemin suivant le nom d'un
142 fichier réel (ou un fichier qui n'existe pas dans un répertoire qui
143 existe) doivent être acceptées ou rejetées. Les scripts peuvent
144 accéder à cette information via la variable d'environnement
145 <code>PATH_INFO</code>.</p>
147 <p>Supposons par exemple que <code>/test/</code> pointe vers un
148 répertoire qui ne contient que le fichier <code>here.html</code>.
149 Les requêtes pour <code>/test/here.html/more</code> et
150 <code>/test/nothere.html/more</code> vont affecter la valeur
151 <code>/more</code> à la variable d'environnement
152 <code>PATH_INFO</code>.</p>
154 <p>L'argument de la directive <directive>AcceptPathInfo</directive>
155 possède trois valeurs possibles :</p>
157 <dt><code>Off</code></dt><dd>Une requête ne sera acceptée que si
158 elle correspond à un chemin qui existe. Par conséquent, une requête
159 contenant une information de chemin après le nom de fichier réel
160 comme <code>/test/here.html/more</code> dans l'exemple ci-dessus
161 renverra une erreur "404 NOT FOUND".</dd>
163 <dt><code>On</code></dt><dd>Une requête sera acceptée si la partie
164 principale du chemin correspond à un fichier existant. Dans
165 l'exemple ci-dessus <code>/test/here.html/more</code>, la requête
166 sera acceptée si <code>/test/here.html</code> correspond à un nom de
169 <dt><code>Default</code></dt><dd>Le traitement des requêtes est
170 déterminé par le <a
171 href="../handler.html">gestionnaire</a> responsable de la requête.
172 Le gestionnaire de base pour les fichiers normaux rejette par défaut
173 les requêtes avec <code>PATH_INFO</code>. Les gestionnaires qui
174 servent des scripts, comme<a
175 href="mod_cgi.html">cgi-script</a> et <a
176 href="mod_isapi.html">isapi-handler</a>, acceptent en général par
177 défaut les requêtes avec <code>PATH_INFO</code>.</dd>
180 <p>Le but premier de la directive <code>AcceptPathInfo</code> est de
181 vous permettre de remplacer le choix du gestionnaire d'accepter ou
182 de rejeter <code>PATH_INFO</code>. Ce remplacement est nécessaire
183 par exemple, lorsque vous utilisez un <a
184 href="../filter.html">filtre</a>, comme <a
185 href="mod_include.html">INCLUDES</a>, pour générer un contenu basé
186 sur <code>PATH_INFO</code>. Le gestionnaire de base va en général
187 rejeter la requête, et vous pouvez utiliser la configuration
188 suivante pour utiliser un tel script :</p>
191 <Files "mes-chemins.shtml"><br />
193 Options +Includes<br />
194 SetOutputFilter INCLUDES<br />
195 AcceptPathInfo On<br />
204 <name>AccessFileName</name>
205 <description>Nom du fichier de configuration distribué</description>
206 <syntax>AccessFileName <var>nom-du-fichier</var>
207 [<var>nom-du-fichier</var>] ...</syntax>
208 <default>AccessFileName .htaccess</default>
209 <contextlist><context>server config</context><context>virtual
214 <p>Au cours du traitement d'une requête, le serveur recherche le
215 premier fichier de configuration existant à partir de la liste
216 de noms dans chaque répertoire composant le chemin du document, à
217 partir du moment où les fichiers de configuration distribués sont <a
218 href="#allowoverride">activés pour ce répertoire</a>. Par exemple
225 <p>avant de renvoyer le document
226 <code>/usr/local/web/index.html</code>, le serveur va rechercher les
227 fichiers <code>/.acl</code>, <code>/usr/.acl</code>,
228 <code>/usr/local/.acl</code> et <code>/usr/local/web/.acl</code>
229 pour y lire d'éventuelles directives, à moins quelles n'aient été
230 désactivées avec</p>
233 <Directory /><br />
235 AllowOverride None<br />
240 <seealso><directive module="core">AllowOverride</directive></seealso>
241 <seealso><a href="../configuring.html">Fichiers de configuration</a></seealso>
242 <seealso><a href="../howto/htaccess.html">Fichiers .htaccess</a></seealso>
246 <name>AddDefaultCharset</name>
247 <description>Paramètre jeu de caractères par défaut à ajouter quand le
248 type de contenu d'une réponse est <code>text/plain</code> ou
249 <code>text/html</code></description>
250 <syntax>AddDefaultCharset On|Off|<var>jeu de caractères</var></syntax>
251 <default>AddDefaultCharset Off</default>
252 <contextlist><context>server config</context>
253 <context>virtual host</context><context>directory</context>
254 <context>.htaccess</context></contextlist>
255 <override>FileInfo</override>
258 <p>Cette directive spécifie une valeur par défaut pour le paramètre
259 jeu de caractères du type de média (le nom d'un codage de
260 caractères) à ajouter à une réponse, si et seulement si le type de
261 contenu de la réponse est soit <code>text/plain</code>, soit
262 <code>text/html</code>. Ceci va remplacer
263 tout jeu de caractères spécifié dans le corps de la réponse via un
264 élément <code>META</code>, bien que cet effet dépende en fait
265 souvent de la configuration du client de l'utilisateur. La
266 définition de <code>AddDefaultCharset Off</code> désactive cette
267 fonctionnalité. <code>AddDefaultCharset On</code> ajoute un jeu de
268 caractères par défaut de <code>iso-8859-1</code>. Toute autre valeur
269 peut être définie via le paramètre <var>jeu de caractères</var>, qui
270 doit appartenir à la liste des <a
271 href="http://www.iana.org/assignments/character-sets">valeurs de
272 jeux de caractères enregistrés par l'IANA</a> à utiliser dans les
273 types de média Internet (types MIME).
277 AddDefaultCharset utf-8
280 <p>La directive <directive>AddDefaultCharset</directive> ne doit
281 être utilisée que lorsque toutes les ressources textes auxquelles
282 elle s'applique possèdent le jeu de caractère spécifié, et qu'il est
283 trop contraignant de définir leur jeu de caractères
284 individuellement. Un exemple de ce type est l'ajout du paramètre jeu
285 de caractères aux ressources comportant un contenu généré, comme les
286 scripts CGI hérités qui peuvent être vulnérables à des attaques de
287 type cross-site scripting à cause des données utilisateurs incluses
288 dans leur sortie. Notez cependant qu'une meilleur solution consiste
289 à corriger (ou supprimer) ces scripts, car la définition d'un jeu de
290 caractères par défaut ne protège pas les utilisateurs qui ont activé
291 la fonctionnalité "Détection automatique de l'encodage des
292 caractères" dans leur navigateur.</p>
294 <seealso><directive module="mod_mime">AddCharset</directive></seealso>
298 <name>AllowEncodedSlashes</name>
299 <description>Détermine si les séparateurs de chemin encodés sont
300 autorisés à transiter dans les URLs tels quels</description>
301 <syntax>AllowEncodedSlashes On|Off|NoDecode</syntax>
302 <default>AllowEncodedSlashes Off</default>
303 <contextlist><context>server config</context><context>virtual
306 <compatibility>Disponible dans Apache httpd version 2.0.46 et
307 supérieures. L'option NoDecode est disponible depuis la version
308 2.3.12.</compatibility>
311 <p>La directive <directive>AllowEncodedSlashes</directive> permet
312 l'utilisation des URLs contenant des séparateurs de chemin
313 encodés dans la partie chemin
314 (<code>%2F</code> pour <code>/</code> et même <code>%5C</code> pour
315 <code>\</code> sur les systèmes concernés).</p>
317 <p>Avec la valeur par défaut, <code>Off</code>, de telles URLs sont
318 refusées et provoquent le renvoi d'une erreur 404 (Not found).</p>
320 <p>Avec la valeur <code>On</code>, ces URLs sont acceptées, et les
321 slashes encodés sont décodés comme tout autre caractère codé.</p>
323 <p>Avec la valeur <code>NoDecode</code>, ces URLs sont acceptées,
324 mais les slashes codés ne sont pas décodés et laissés dans leur état
327 <p>Définir <directive>AllowEncodedSlashes</directive> à
328 <code>On</code> est surtout utile en association avec
329 <code>PATH_INFO</code>.</p>
331 <note><title>Note</title>
332 <p>Si le codage des slashes dans la partie chemin est nécessaire,
333 l'utilisation de l'option <code>NoDecode</code> est fortement
334 recommandée par mesure de sécurité. Permettre le décodage des
335 slashes pourrait éventuellement induire l'autorisation de chemins
339 <seealso><directive module="core">AcceptPathInfo</directive></seealso>
343 <name>AllowOverride</name>
344 <description>Types de directives autorisées dans les fichiers
345 <code>.htaccess</code></description>
346 <syntax>AllowOverride All|None|<var>type directive</var>
347 [<var>type directive</var>] ...</syntax>
348 <default>AllowOverride None à partir de la version 2.3.9, AllowOverride
349 All pour les versions antérieures</default>
350 <contextlist><context>directory</context></contextlist>
353 <p>Lorsque le serveur trouve un fichier <code>.htaccess</code> (dont
354 le nom est défini par la directive <directive
355 module="core">AccessFileName</directive>), il doit savoir lesquelles
356 des directives placées dans ce fichier sont autorisées à modifier la
357 configuration préexistante.</p>
359 <note><title>Valable seulement dans les sections
360 <Directory></title>
361 La directive <directive>AllowOverride</directive> ne peut être
362 utilisée que dans les sections <directive type="section"
363 module="core">Directory</directive> définies sans expressions
364 rationnelles, et non dans les sections <directive
365 type="section" module="core">Location</directive>, <directive
366 module="core" type="section">DirectoryMatch</directive> ou
367 <directive type="section" module="core">Files</directive>.
370 <p>Lorsque cette directive est définie à <code>None</code>, les
371 fichiers <a href="#accessfilename">.htaccess</a> sont totalement
372 ignorés. Dans ce cas, le serveur n'essaiera même pas de lire les
373 fichiers <code>.htaccess</code> du système de fichiers.</p>
375 <p>Lorsque cette directive est définie à <code>All</code>, toute
376 directive valable dans le <a
377 href="directive-dict.html#Context">Contexte</a> .htaccess sera
378 autorisée dans les fichiers <code>.htaccess</code>.</p>
380 <p>L'argument <var>type directive</var> peut contenir les
381 groupements de directives suivants :</p>
388 Permet l'utilisation des directives d'autorisation (<directive
389 module="mod_authn_dbm">AuthDBMGroupFile</directive>,
390 <directive module="mod_authn_dbm">AuthDBMUserFile</directive>,
391 <directive module="mod_authz_groupfile">AuthGroupFile</directive>,
392 <directive module="mod_authn_core">AuthName</directive>,
393 <directive module="mod_authn_core">AuthType</directive>, <directive
394 module="mod_authn_file">AuthUserFile</directive>, <directive
395 module="mod_authz_core">Require</directive>, <em>etc...</em>).</dd>
400 Permet l'utilisation des directives qui contrôlent les types de
401 documents (directives <directive
402 module="core">ErrorDocument</directive>, <directive
403 module="core">ForceType</directive>, <directive
404 module="mod_negotiation">LanguagePriority</directive>,
405 <directive module="core">SetHandler</directive>, <directive
406 module="core">SetInputFilter</directive>, <directive
407 module="core">SetOutputFilter</directive>, et directives du
408 module <module>mod_mime</module> Add* et Remove*), des metadonnées
409 des documents (<directive
410 module="mod_headers">Header</directive>, <directive
411 module="mod_headers">RequestHeader</directive>, <directive
412 module="mod_setenvif">SetEnvIf</directive>, <directive
413 module="mod_setenvif">SetEnvIfNoCase</directive>, <directive
414 module="mod_setenvif">BrowserMatch</directive>, <directive
415 module="mod_usertrack">CookieExpires</directive>, <directive
416 module="mod_usertrack">CookieDomain</directive>, <directive
417 module="mod_usertrack">CookieStyle</directive>, <directive
418 module="mod_usertrack">CookieTracking</directive>, <directive
419 module="mod_usertrack">CookieName</directive>), des directives du
420 module <module>mod_rewrite</module> <directive
421 module="mod_rewrite">RewriteEngine</directive>, <directive
422 module="mod_rewrite">RewriteOptions</directive>, <directive
423 module="mod_rewrite">RewriteBase</directive>, <directive
424 module="mod_rewrite">RewriteCond</directive>, <directive
425 module="mod_rewrite">RewriteRule</directive>) et de la directive
426 <directive module="mod_actions">Action</directive> du module
427 <module>mod_actions</module>.
433 Permet l'utilisation des directives qui contrôlent l'indexation
434 des répertoires (<directive
435 module="mod_autoindex">AddDescription</directive>,
436 <directive module="mod_autoindex">AddIcon</directive>, <directive
437 module="mod_autoindex">AddIconByEncoding</directive>,
438 <directive module="mod_autoindex">AddIconByType</directive>,
439 <directive module="mod_autoindex">DefaultIcon</directive>, <directive
440 module="mod_dir">DirectoryIndex</directive>, <directive
441 module="mod_autoindex">FancyIndexing</directive>, <directive
442 module="mod_autoindex">HeaderName</directive>, <directive
443 module="mod_autoindex">IndexIgnore</directive>, <directive
444 module="mod_autoindex">IndexOptions</directive>, <directive
445 module="mod_autoindex">ReadmeName</directive>,
446 <em>etc...</em>).</dd>
451 Permet l'utilisation des directives contrôlant l'accès au serveur
453 module="mod_authz_host">Allow</directive>, <directive
454 module="mod_authz_host">Deny</directive> et <directive
455 module="mod_authz_host">Order</directive>).</dd>
457 <dt>Options[=<var>Option</var>,...]</dt>
460 Permet l'utilisation des directives contrôlant les fonctionnalités
461 spécifiques d'un répertoire (<directive
462 module="core">Options</directive> et <directive
463 module="mod_include">XBitHack</directive>). "Options" doit être
464 suivi d'un signe "égal", puis d'une liste d'options séparées par des
465 virgules (pas d'espaces) ; ces options doivent être définies à
466 l'aide de la commande <directive
467 module="core">Options</directive>.</dd>
473 AllowOverride AuthConfig Indexes
476 <p>Dans l'exemple ci-dessus, toutes les directives qui ne font
477 partie ni du groupe <code>AuthConfig</code>, ni du groupe
478 <code>Indexes</code>, provoquent une erreur "internal
481 <note><p>Pour des raisons de sécurité et de performance, ne
482 définissez pas <code>AllowOverride</code> à autre chose que
483 <code>None</code> dans votre bloc <code><Directory /></code>.
484 Recherchez plutôt (ou créez) le bloc <code><Directory></code>
485 qui se réfère au répertoire où vous allez précisément placer un
486 fichier <code>.htaccess</code>.</p>
490 <seealso><directive module="core">AccessFileName</directive></seealso>
491 <seealso><a href="../configuring.html">Configuration Files</a></seealso>
492 <seealso><a href="../howto/htaccess.html">.htaccess Files</a></seealso>
496 <name>CGIMapExtension</name>
497 <description>Technique permettant de localiser l'interpréteur des
498 scripts CGI</description>
499 <syntax>CGIMapExtension <var>chemin CGI</var> <var>.extension</var></syntax>
500 <contextlist><context>directory</context><context>.htaccess</context>
502 <override>FileInfo</override>
503 <compatibility>NetWare uniquement</compatibility>
506 <p>Cette directive permet de contrôler la manière dont Apache httpd trouve
507 l'interpréteur servant à exécuter les scripts CGI. Par exemple, avec
508 la définition <code>CGIMapExtension sys:\foo.nlm .foo</code>, tous
509 les fichiers scripts CGI possédant une extension <code>.foo</code>
510 seront passés à l'interpréteur FOO.</p>
515 <name>ContentDigest</name>
516 <description>Active la génération d'un en-tête <code>Content-MD5</code>
517 dans la réponse HTTP</description>
518 <syntax>ContentDigest On|Off</syntax>
519 <default>ContentDigest Off</default>
520 <contextlist><context>server config</context><context>virtual
522 <context>directory</context><context>.htaccess</context>
524 <override>Options</override>
525 <status>Expérimental</status>
528 <p>Cette directive active la génération d'un en-tête
529 <code>Content-MD5</code> selon les définitions des RFC 1864 et
532 <p>MD5 est un algorithme permettant de générer un condensé (parfois
533 appelé "empreinte") à partir de données d'une taille aléatoire ; le
534 degré de précision est tel que la moindre altération des données
535 d'origine entraîne une altération de l'empreinte.</p>
537 <p>L'en-tête <code>Content-MD5</code> permet de vérifier
538 l'intégrité de la réponse HTTP dans son ensemble. Un serveur mandataire
539 ou un client peut utiliser cet en-tête pour rechercher une
540 éventuelle modification accidentelle de la réponse au cours de sa
541 transmission. Exemple d'en-tête :</p>
544 Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
547 <p>Notez que des problèmes de performances peuvent affecter votre
548 serveur, car l'empreinte est générée pour chaque requête (il n'y a
549 pas de mise en cache).</p>
551 <p>L'en-tête <code>Content-MD5</code> n'est envoyé qu'avec les
552 documents servis par le module <module>core</module>, à l'exclusion
553 de tout autre module. Ainsi, les documents SSI, les sorties de
554 scripts CGI, et les réponses à des requêtes partielles (byte range)
555 ne comportent pas cet en-tête.</p>
560 <name>DefaultType</name>
561 <description>Les seuls effets de cette directive sont des émissions
562 d'avertissements si sa valeur est différente de <code>none</code>. Dans
563 les versions précédentes, DefaultType permettait de spécifier un type de
564 média à assigner par défaut au contenu d'une réponse pour lequel aucun
565 autre type de média n'avait été trouvé.
567 <syntax>DefaultType <var>type média|none</var></syntax>
568 <default>DefaultType none</default>
569 <contextlist><context>server config</context><context>virtual
571 <context>directory</context><context>.htaccess</context>
573 <override>FileInfo</override>
574 <compatibility>L'argument <code>none</code> est disponible dans les
575 versions d'Apache httpd 2.2.7 et supérieures. Tous les autres choix sont
576 DESACTIVÉS à partir des version 2.3.x.</compatibility>
579 <p>Cette directive a été désactivée. Pour la compatibilité
580 ascendante avec les anciens fichiers de configuration, elle peut
581 être spécifiée avec la valeur <code>none</code>, c'est à dire sans
582 type de médium par défaut. Par exemple :</p>
587 <p><code>DefaultType None</code> n'est disponible que dans les
588 versions d'Apache 2.2.7 et supérieures.</p>
590 <p>Utilisez le fichier de configuration mime.types et la directive
591 <directive module="mod_mime">AddType</directive> pour configurer
592 l'assignement d'un type de médium via les extensions de fichiers, ou
593 la directive <directive module="core">ForceType</directive> pour
594 attribuer un type de médium à des ressources spécifiques. Dans le
595 cas contraire, le serveur enverra sa réponse sans champ d'en-tête
596 Content-Type, et le destinataire devra déterminer lui-même le type
597 de médium.</p>
603 <description>Permet de définir une variable</description>
604 <syntax>Define <var>nom-paramètre</var> [<var>valeur-paramètre</var>]</syntax>
605 <contextlist><context>server config</context><context>virtual host</context>
606 <context>directory</context></contextlist>
609 <p>Avec un seul paramètre, l'effet de la directive
610 <directive>Define</directive> est identique à celui de l'argument
611 <code>-D</code> du programme <program>httpd</program>. Il permet de
612 modifier le comportement des sections <directive module="core"
613 type="section">IfDefine</directive> sans avoir à ajouter d'argument
614 <code>-D</code> au sein des scripts de démarrage.</p>
616 <p>De plus, le second paramètre permet d'affecter une valeur à la
617 variable définie par le premier. Cette variable peut être référencée
618 dans le fichier de configuration via la syntaxe <code>${VAR}</code>.
619 La portée de la variable est toujours globale, et n'est jamais
620 limitée à la section de configuration courante.</p>
623 <IfDefine TEST><br/>
624 Define servername test.example.com<br/>
625 </IfDefine><br/>
626 <IfDefine !TEST><br/>
627 Define servername www.example.com<br/>
628 Define SSL<br/>
629 </IfDefine><br/>
632 <p>Le caractère ":" est interdit dans les noms de variables afin
633 d'éviter les conflits avec la syntaxe de la directive <directive
634 module="mod_rewrite">RewriteMap</directive>.</p>
638 <directivesynopsis type="section">
639 <name>Directory</name>
640 <description>Regroupe un ensemble de directives qui ne s'appliquent
641 qu'au répertoire concerné du système de fichiers, à ses
642 sous-répertoires, et à leur contenu.</description>
643 <syntax><Directory <var>chemin répertoire</var>>
644 ... </Directory></syntax>
645 <contextlist><context>server config</context><context>virtual
650 <p>Les balises <directive type="section">Directory</directive> et
651 <code></Directory></code> permettent de regrouper un ensemble
652 de directives qui ne s'appliquent qu'au répertoire précisé,
653 à ses sous-répertoires, et aux fichiers situés dans ces
654 sous-répertoires. Toute directive
655 autorisée dans un contexte de répertoire peut être utilisée.
656 <var>chemin répertoire</var> est soit le chemin absolu d'un
657 répertoire, soit une chaîne de caractères avec caractères génériques
658 utilisant la comparaison Unix de style shell. Dans une chaîne de
659 caractères avec caractères génériques, <code>?</code> correspond à
660 un caractère quelconque, et <code>*</code> à toute chaîne de
661 caractères. Les intervalles de caractères <code>[]</code> sont aussi
662 autorisés. Aucun caractère générique ne peut remplacer le caractère
663 `/', si bien que l'expression <code><Directory
664 /*/public_html></code> ne conviendra pas pour le chemin
665 * <code>/home/user/public_html</code>, alors que <code><Directory
666 /home/*/public_html></code> conviendra. Exemple :</p>
669 <Directory /usr/local/httpd/htdocs><br />
671 Options Indexes FollowSymLinks<br />
677 <p>Soyez prudent avec l'argument <var>chemin répertoire</var> : il
678 doit correspondre exactement au chemin du système de fichier
679 qu'Apache httpd utilise pour accéder aux fichiers. Les directives
680 comprises dans une section <code><Directory></code> ne
681 s'appliqueront pas aux fichiers du même répertoire auxquels on
682 aura accédé via un chemin différent, per exemple via un lien
686 <p> Les <glossary ref="regex">Expressions rationnelles</glossary>
687 peuvent aussi être utilisées en ajoutant le caractère
688 <code>~</code>. Par exemple :</p>
691 <Directory ~ "^/www/.*/[0-9]{3}">
694 <p>pourra correspondre à tout répertoire situé dans /www/ et dont le
695 nom se compose de trois chiffres.</p>
697 <p>Si plusieurs sections <directive
698 type="section">Directory</directive> (sans expression rationnelle)
699 correspondent au répertoire (ou à un de ses parents) qui contient le
700 document, les directives de la section <directive
701 type="section">Directory</directive> dont le chemin est le plus
702 court sont appliquées en premier, en s'intercalant avec les
703 directives des fichiers <a href="#accessfilename">.htaccess</a>. Par
707 <Directory /><br />
709 AllowOverride None<br />
711 </Directory><br />
713 <Directory /home><br />
715 AllowOverride FileInfo<br />
720 <p>l'accès au document <code>/home/web/dir/doc.html</code> emprunte
721 le chemin suivant :</p>
724 <li>Aplication de la directive <code>AllowOverride None</code>
725 (qui désactive les fichiers <code>.htaccess</code>).</li>
727 <li>Application de la directive <code>AllowOverride
728 FileInfo</code> (pour le répertoire <code>/home</code>).</li>
730 <li>Application de toute directive <code>FileInfo</code> qui se
731 trouverait dans d'éventuels fichiers <code>/home/.htaccess</code>,
732 <code>/home/web/.htaccess</code> ou
733 <code>/home/web/dir/.htaccess</code>, dans cet ordre.</li>
736 <p>Les directives associées aux répertoires sous forme d'expressions
737 rationnelles ne sont prises en compte qu'une fois toutes les
738 directives des sections sans expressions rationnelles appliquées.
739 Alors, tous les répertoires avec expressions rationnelles sont
740 testés selon l'ordre dans lequel ils apparaissent dans le fichier de
741 configuration. Par exemple, avec</p>
744 <Directory ~ abc$><br />
746 # ... directives here ...<br />
751 <p>la section avec expression rationnelle ne sera prise en compte
752 qu'après les sections <directive
753 type="section">Directory</directive> sans expression rationnelle
754 et les fichiers <code>.htaccess</code>. Alors, l'expression
755 rationnelle conviendra pour <code>/home/abc/public_html/abc</code>
756 et la section <directive type="section">Directory</directive>
757 correspondante s'appliquera.</p>
759 <p><strong>Notez que la politique d'accès par défaut
760 dans les sections <code><Directory /></code> consiste à
761 autoriser tout accès sans restriction. Ceci signifie qu'Apache httpd va servir tout fichier
762 correspondant à une URL. Il est recommandé de modifier cette
763 situation à l'aide d'un bloc du style</strong></p>
766 <Directory /><br />
768 Require all denied<br />
773 <p><strong>puis d'affiner la configuration pour les répertoires que vous
774 voulez rendre accessibles. Voir la page <a
775 href="../misc/security_tips.html">Conseils à propos de sécurité</a>
776 pour plus de détails.</strong></p>
778 <p>Les sections <directive type="section">Directory</directive> se situent
779 dans le fichier <code>httpd.conf</code>. Les directives <directive
780 type="section">Directory</directive> ne peuvent pas être imbriquées
781 et ne sont pas autorisées dans les sections <directive module="core"
782 type="section">Limit</directive> ou <directive module="core"
783 type="section">LimitExcept</directive>.</p>
785 <seealso><a href="../sections.html">Comment fonctionnent les sections
786 <Directory>, <Location> et <Files></a> pour des
787 explications à propos de la manière dont ces différentes sections se
788 combinent entre elles à la réception d'une requête</seealso>
791 <directivesynopsis type="section">
792 <name>DirectoryMatch</name>
793 <description>Regroupe des directives qui s'appliquent au contenu de répertoires
794 du système de fichiers correspondant à une expression rationnelle</description>
795 <syntax><DirectoryMatch <var>regex</var>>
796 ... </DirectoryMatch></syntax>
797 <contextlist><context>server config
798 </context><context>virtual host</context>
802 <p>Les balises <directive type="section">DirectoryMatch</directive>
803 et <code></DirectoryMatch></code> permettent de regrouper un
804 ensemble de directives qui ne s'appliqueront qu'au répertoire
805 précisé (et aux fichiers qu'il contient), comme pour la section <directive
806 module="core" type="section">Directory</directive>. Cependant, le
807 répertoire est précisé sous la forme d'une <glossary
808 ref="regex">expression rationnelle</glossary>. Par exemple :</p>
811 <DirectoryMatch "^/www/(.+/)?[0-9]{3}">
814 <p>conviendrait pour les sous-répertoires de <code>/www/</code> dont
815 le nom se compose de trois chiffres.</p>
817 <note><title>Compatibilité</title>
818 Avant la version 2.3.9, cette directive s'appliquait aussi aux
819 sous-répertoires (comme la directive <directive module="core"
820 type="section">Directory</directive>), et ne tenait pas compte du
821 symbole de fin de ligne ($). Depuis la version 2.3.9, seuls les
822 répertoires qui correspondent à l'expression sont affectés par les
823 directives contenues dans la section.
826 <note><title>slash de fin</title>
827 Cette directive s'applique aux requêtes pour des répertoires avec
828 ou sans slash de fin ; les expressions contenant un symbole de fin
829 de ligne ($) doivent donc faire l'objet d'une attention
833 <seealso><directive type="section" module="core">Directory</directive>
834 pour une description de la manière dont les expressions rationnelles
835 sont traitées en présence d'autres sections <directive
836 type="section">Directory</directive> sans expressions rationnelles</seealso>
838 href="../sections.html">Comment fonctionnent les sections
839 <Directory>, <Location> et <Files></a> pour une
840 explication à propos de la manière dont ces différentes sections se
841 combinent entre elles à la réception d'une requête</seealso>
845 <name>DocumentRoot</name>
846 <description>Racine principale de l'arborescence des documents visible
847 depuis Internet</description>
848 <syntax>DocumentRoot <var>chemin répertoire</var></syntax>
849 <default>DocumentRoot /usr/local/apache/htdocs</default>
850 <contextlist><context>server config</context><context>virtual
855 <p>Cette directive permet de définir le répertoire à partir duquel
856 <program>httpd</program> va servir les fichiers. S'il ne correspond
857 pas à un <directive module="mod_alias">Alias</directive>, le chemin
858 de l'URL sera ajouté par le serveur à la racine des documents afin
859 de construire le chemin du document recherché. Exemple :</p>
862 DocumentRoot /usr/web
865 <p>un accès à <code>http://my.example.com/index.html</code> se
866 réfère alors à <code>/usr/web/index.html</code>. Si <var>chemin
867 répertoire</var> n'est pas un chemin absolu, il est considéré comme
868 relatif au chemin défini par la directive <directive
869 module="core">ServerRoot</directive>.</p>
871 <p>Le répertoire défini par la directive
872 <directive>DocumentRoot</directive> ne doit pas comporter de slash
875 <seealso><a href="../urlmapping.html#documentroot">Mise en
876 correspondance des URLs avec le système de fichiers</a></seealso>
880 <name>EnableMMAP</name>
881 <description>Utilise la projection en mémoire (Memory-Mapping) pour
882 lire les fichiers pendant qu'ils sont servis</description>
883 <syntax>EnableMMAP On|Off</syntax>
884 <default>EnableMMAP On</default>
885 <contextlist><context>server config</context><context>virtual
887 <context>directory</context><context>.htaccess</context>
889 <override>FileInfo</override>
892 <p>Cette directive définit si <program>httpd</program> peut utiliser
893 la projection en mémoire (Memory-Mapping) quand il doit lire le contenu
894 d'un fichier pendant qu'il est servi. Par défaut, lorsque le
895 traitement d'une requête requiert l'accès aux données contenues dans
896 un fichier -- par exemple, pour servir un fichier interprété par le
897 serveur à l'aide de <module>mod_include</module> -- Apache httpd projette
898 le fichier en mémoire si le système d'exploitation le permet.</p>
900 <p>Cette projection en mémoire induit parfois une amélioration des
901 performances. Sur certains systèmes cependant, il est préférable de
902 désactiver la projection en mémoire afin d'éviter certains problèmes
903 opérationnels :</p>
906 <li>Sur certains systèmes multi-processeurs, la projection en
907 mémoire peut dégrader les performances du programme
908 <program>httpd</program>.</li>
909 <li>S'il fait l'objet d'une projection en mémoire par
910 <program>httpd</program>, la suppression ou la troncature d'un
911 fichier peut provoquer un crash de <program>httpd</program> avec une
912 erreur de segmentation.</li>
915 <p>Pour les configurations de serveur sujettes à ce genre de
916 problème, il est préférable de désactiver la projection en mémoire
917 des fichiers servis en spécifiant :</p>
923 <p>Pour les montages NFS, cette fonctionnalité peut être
924 explicitement désactivée pour les fichiers concernés en spécifiant
928 <Directory "/chemin vers montage NFS">
938 <name>EnableSendfile</name>
939 <description>Utilise le support sendfile du noyau pour servir les
940 fichiers aux clients</description>
941 <syntax>EnableSendfile On|Off</syntax>
942 <default>EnableSendfile Off</default>
943 <contextlist><context>server config</context><context>virtual
945 <context>directory</context><context>.htaccess</context>
947 <override>FileInfo</override>
948 <compatibility>Disponible dans les versions 2.0.44 et
949 supérieures. Par défaut à Off depuis la version 2.3.9.</compatibility>
952 <p>Cette directive définit si le programme <program>httpd</program>
953 peut utiliser le support sendfile du noyau pour transmettre le
954 contenu des fichiers aux clients. Par défaut, lorsque le traitement
955 d'une requête ne requiert pas l'accès aux données contenues dans un
956 fichier -- par exemple, pour la transmission d'un fichier statique
957 -- Apache httpd utilise sendfile pour transmettre le contenu du fichier
958 sans même lire ce dernier, si le système d'exploitation le
961 <p>Ce mécanisme sendfile évite la séparation des opérations de
962 lecture et d'envoi, ainsi que les réservations de tampons. sur
963 certains systèmes cependant, ou sous certains systèmes de fichiers,
964 il est préférable de désactiver cette fonctionnalité afin d'éviter
965 certains problèmes opérationnels :</p>
968 <li>Certains systèmes peuvent présenter un support sendfile
969 défectueux que le système de compilation n'a pas détecté, en
970 particulier si les exécutables ont été compilés sur une autre
971 machine, puis copiés sur la première avec un support sendfile
972 défectueux.</li>
973 <li>Sous Linux, l'utilisation de sendfile induit des bogues lors de
974 la récupération des paquets de vérification TCP (TCP-checksum) avec
975 certaines cartes réseau lorsqu'on utilise IPv6.</li>
976 <li>Sous Linux sur Itanium, <code>sendfile</code> peut s'avérer incapable de
977 traiter les fichiers de plus de 2 Go.</li>
978 <li>Avec un montage réseau de <directive
979 module="core">DocumentRoot</directive> (par exemple NFS, SMB, CIFS,
981 noyau peut s'avérer incapable de servir un fichier de ce montage
982 réseau en passant par son propre cache.</li>
985 <p>Pour les configurations de serveur non sujettes à ce genre de
986 problème, vous pouvez activer cette fonctionnalité en
987 spécifiant :</p>
993 <p>Pour les montages réseau, cette fonctionnalité peut être
994 explicitement désactivée pour les fichiers concernés en spécifiant
998 <Directory "/chemin vers montage réseau">
1004 <p>Veuillez noter que la configuration de la directive
1005 <directive>EnableSendfile</directive> dans un contexte de répertoire
1006 ou de fichier .htaccess n'est pas supportée par
1007 <module>mod_cache_disk</module>. Le module ne prend en compte la
1008 définition de <directive>EnableSendfile</directive> que dans un
1012 </directivesynopsis>
1016 <description>Interrompt la lecture de la configuration avec un message
1017 d'erreur personnalisé</description>
1018 <syntax>Error <var>message</var></syntax>
1019 <contextlist><context>server config</context><context>virtual host</context>
1020 <context>directory</context><context>.htaccess</context>
1022 <compatibility>à partir de la version 2.3.9</compatibility>
1025 <p>Si une erreur peut être détectée dans la configuration, souvent
1026 un module manquant, cette
1027 directive peut être utilisée pour générer un message d'erreur
1028 personnalisé, et interrompre la lecture de la configuration. </p>
1030 <example><title>Exemple</title>
1031 # vérification du chargement de mod_include<br />
1032 <IfModule !include_module><br />
1033 Error mod_foo nécessite mod_include. Chargez-le via LoadModule.<br />
1034 </IfModule><br />
1036 # vérification de la définition de SSL ou (exclusif) NOSSL<br />
1037 <IfDefine SSL><br />
1038 <IfDefine NOSSL><br />
1039 Error SSL et NOSSL sont définies. Vous devez définir soit l'une,
1041 </IfDefine><br />
1042 </IfDefine><br />
1043 <IfDefine !SSL><br />
1044 <IfDefine !NOSSL><br />
1045 Error Vous devez définir une et une seule des deux variables SSL
1047 </IfDefine><br />
1048 </IfDefine><br />
1052 </directivesynopsis>
1055 <name>ErrorDocument</name>
1056 <description>Document que le serveur renvoie au client en cas
1057 d'erreur</description>
1058 <syntax>ErrorDocument <var>code erreur</var> <var>document</var></syntax>
1059 <contextlist><context>server config</context><context>virtual
1061 <context>directory</context><context>.htaccess</context>
1063 <override>FileInfo</override>
1066 <p>Apache httpd peut traiter les problèmes et les erreurs de quatre
1067 manières,</p>
1070 <li>afficher un simple message d'erreur au contenu fixe</li>
1072 <li>afficher un message personnalisé</li>
1074 <li>rediriger vers un <var>chemin d'URL</var> local pour traiter
1075 le problème ou l'erreur</li>
1077 <li>rediriger vers une <var>URL</var> externe pour traiter
1078 le problème ou l'erreur</li>
1081 <p>La première option constitue le comportement par défaut; pour
1082 choisir une des trois autres options, il faut configurer Apache à
1083 l'aide de la directive <directive>ErrorDocument</directive>, suivie
1084 du code de la réponse HTTP et d'une URL ou d'un message. Apache
1085 httpd fournit parfois des informations supplémentaires à propos du
1086 problème ou de l'erreur.</p>
1088 <p>Les URLs peuvent commencer par un slash (/) pour les chemins web
1089 locaux (relatifs au répertoire défini par la directive <directive
1090 module="core">DocumentRoot</directive>), ou se présenter sous la
1091 forme d'une URL complète que le client pourra résoudre.
1092 Alternativement, un message à afficher par le navigateur pourra être
1093 fourni. Exemples :</p>
1096 ErrorDocument 500 http://foo.example.com/cgi-bin/tester<br />
1097 ErrorDocument 404 /cgi-bin/bad_urls.pl<br />
1098 ErrorDocument 401 /subscription_info.html<br />
1099 ErrorDocument 403 "Désolé, vous n'avez pas l'autorisation d'accès
1103 <p>De plus, on peut spécifier la valeur spéciale <code>default</code>
1104 pour indiquer l'utilisation d'un simple message d'Apache httpd codé en
1105 dur. Bien que non nécessaire dans des circonstances normales, la
1106 spécification de la valeur <code>default</code> va permettre de
1107 rétablir l'utilisation du simple message d'Apache httpd codé en dur pour
1108 les configurations qui sans cela, hériteraient d'une directive
1109 <directive>ErrorDocument</directive> existante.</p>
1112 ErrorDocument 404 /cgi-bin/bad_urls.pl<br /><br />
1113 <Directory /web/docs><br />
1115 ErrorDocument 404 default<br />
1120 <p>Notez que lorsque vous spécifiez une directive
1121 <directive>ErrorDocument</directive> pointant vers une URL distante
1122 (c'est à dire tout ce qui commence par le préfixe http), le serveur
1124 envoyer une redirection au client afin de lui indiquer où trouver le
1125 document, même dans le cas où ce document se trouve sur le serveur
1126 local. Ceci a de nombreuses conséquences dont la plus importante
1127 réside dans le fait que le client ne recevra pas le code d'erreur
1128 original, mais au contraire un code de statut de redirection. Ceci
1129 peut en retour semer la confusion chez les robots web et divers
1130 clients qui tentent de déterminer la validité d'une URL en examinant
1131 le code de statut. De plus, si vous utilisez une URL distante avec
1132 <code>ErrorDocument 401</code>, le client ne saura pas qu'il doit
1133 demander un mot de passe à l'utilisateur car il ne recevra pas le
1134 code de statut 401. C'est pourquoi, <strong>si vous utilisez une
1135 directive <code>ErrorDocument 401</code>, elle devra faire référence
1136 à un document par le biais d'un chemin local.</strong></p>
1138 <p>Microsoft Internet Explorer (MSIE) ignore par défaut les messages
1139 d'erreur générés par le serveur lorsqu'ils sont trop courts et
1140 remplacent ses propres messages d'erreur "amicaux". Le seuil de
1141 taille varie en fonction du type d'erreur, mais en général, si la
1142 taille de votre message d'erreur est supérieure à 512 octets, il y a
1143 peu de chances pour que MSIE l'occulte, et il sera affiché par ce
1144 dernier. Vous trouverez d'avantage d'informations dans l'article de
1145 la base de connaissances Microsoft <a
1146 href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807"
1149 <p>Bien que la plupart des messages d'erreur internes originaux
1150 puissent être remplacés, ceux-ci sont cependant conservés dans
1151 certaines circonstances sans tenir compte de la définition de la
1152 directive <directive module="core">ErrorDocument</directive>. En
1153 particulier, en cas de détection d'une requête mal formée, le
1154 processus de traitement normal des requêtes est immédiatement
1155 interrompu, et un message d'erreur interne est renvoyé, ceci afin de
1156 se prémunir contre les problèmes de sécurité liés aux requêtes mal
1159 <p>Si vous utilisez mod_proxy, il est en général préférable
1160 d'activer <directive
1161 module="mod_proxy">ProxyErrorOverride</directive> afin d'être en
1162 mesure de produire des messages d'erreur personnalisés pour le
1163 compte de votre serveur d'origine. Si vous n'activez pas
1164 ProxyErrorOverride, Apache httpd ne générera pas de messages d'erreur
1165 personnalisés pour le contenu mandaté.</p>
1169 <seealso><a href="../custom-error.html">documentation sur la
1170 personnalisation des réponses</a></seealso>
1171 </directivesynopsis>
1174 <name>ErrorLog</name>
1175 <description>Définition du chemin du journal des erreurs</description>
1176 <syntax> ErrorLog <var>chemin fichier</var>|syslog[:<var>facility</var>]</syntax>
1177 <default>ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows and OS/2)</default>
1178 <contextlist><context>server config</context><context>virtual
1183 <p>La directive <directive>ErrorLog</directive> permet de définir le
1184 nom du fichier dans lequel le serveur va journaliser toutes les
1185 erreurs qu'il rencontre. Si le <var>chemin fichier</var> n'est pas
1186 absolu, il est considéré comme relatif au chemin défini par la
1187 directive <directive module="core">ServerRoot</directive>.</p>
1189 <example><title>Exemple</title>
1190 ErrorLog /var/log/httpd/error_log
1193 <p>Si le <var>chemin fichier</var> commence par une barre verticale
1194 "<code>(|)</code>", il est considéré comme une commande à lancer pour traiter la
1195 journalisation de l'erreur.</p>
1197 <example><title>Exemple</title>
1198 ErrorLog "|/usr/local/bin/erreurs_httpd"
1201 <p>Voir les notes à propos des <a href="../logs.html#piped">journaux
1202 redirigés</a> pour plus d'informations.</p>
1204 <p>L'utilisation de <code>syslog</code> à la place d'un nom de
1205 fichier active la journalisation via syslogd(8) si le système le
1206 supporte. Le dispositif syslog par défaut est <code>local7</code>,
1207 mais vous pouvez le modifier à l'aide de la syntaxe
1208 <code>syslog:<var>facility</var></code>, où <var>facility</var> peut
1209 être remplacé par un des noms habituellement documentés dans la page
1210 de man syslog(1). Le dispositif syslog <code>local7</code> est
1211 global, et si il est modifié dans un serveur virtuel, le dispositif
1212 final spécifié affecte l'ensemble du serveur</p>
1214 <example><title>Exemple</title>
1215 ErrorLog syslog:user
1218 <p>SECURITE : Voir le document <a
1219 href="../misc/security_tips.html#serverroot">conseils à propos de
1220 sécurité</a> pour des détails sur les raisons pour lesquelles votre
1221 sécurité peut être compromise si le répertoire contenant les
1222 fichiers journaux présente des droits en écriture pour tout autre
1223 utilisateur que celui sous lequel le serveur est démarré.</p>
1224 <note type="warning"><title>Note</title>
1225 <p>Lors de la spécification d'un chemin de fichier sur les
1226 plates-formes non-Unix, on doit veiller à n'utiliser que des
1227 slashes (/), même si la plate-forme autorise l'utilisation des
1228 anti-slashes (\). Et d'une manière générale, il est recommandé de
1229 n'utiliser que des slashes (/) dans les fichiers de
1233 <seealso><directive module="core">LogLevel</directive></seealso>
1234 <seealso><a href="../logs.html">Fichiers journaux du serveur HTTP Apache</a></seealso>
1235 </directivesynopsis>
1238 <name>ErrorLogFormat</name>
1239 <description>Spécification du format des entrées du journal des erreurs</description>
1240 <syntax> ErrorLog [connection|request] <var>format</var></syntax>
1241 <contextlist><context>server config</context><context>virtual host</context>
1243 <compatibility>Disponible depuis la version 2.3.9 d'Apache</compatibility>
1246 <p>La directive <directive>ErrorLogFormat</directive> permet de
1247 spécifier quelles informations supplémentaires vont être enregistrées
1248 dans le journal des erreurs en plus du message habituel.</p>
1250 <example><title>Exemple simple</title>
1251 ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"
1254 <p>La spécification de <code>connection</code> ou
1255 <code>request</code> comme premier paramètre permet de définir des
1256 formats supplémentaires, ce qui a pour effet de journaliser des
1257 informations additionnelles lorsque le premier message est
1258 enregistré respectivement pour une connexion ou une requête
1259 spécifique. Ces informations additionnelles ne sont enregistrées
1260 qu'une seule fois par connexion/requête. Si le traitement d'une
1261 connexion ou d'une requête ne génère aucun message dans le journal,
1262 alors aucune information additionnelle n'est enregistrée.</p>
1264 <p>Il peut arriver que certains items de la chaîne de format ne
1265 produisent aucune sortie. Par exemple, l'en-tête Referer n'est
1266 présent que si le message du journal est associé à une requête et s'il
1267 est généré à un moment où l'en-tête Referer a déjà été lu par le
1268 client. Si aucune sortie n'est générée, le comportement par défaut
1269 consiste à supprimer tout ce qui se trouve entre l'espace précédent
1270 et le suivant. Ceci implique que la ligne de journalisation est
1271 divisée en champs ne contenant pas d'espace séparés par des espaces.
1272 Si un item de la chaîne de format ne génère aucune sortie,
1273 l'ensemble du champ est omis. Par exemple, si l'adresse distante
1274 <code>%a</code> du format <code>[%t] [%l] [%a] %M </code> n'est
1275 pas disponible, les crochets qui l'entourent ne seront eux-mêmes pas
1276 enregistrés. Il est possible d'échapper les espaces par un anti-slash
1277 afin qu'ils ne soient pas considérés comme séparateurs de champs.
1278 La combinaison '% ' (pourcentage espace) est un délimiteur de
1279 champ de taille nulle qui ne génère aucune sortie.</p>
1281 <p>Ce comportement peut être changé en ajoutant des modificateurs à
1282 l'item de la chaîne de format. Le modificateur <code>-</code>
1283 (moins) provoque l'enregistrement d'un signe moins si l'item
1284 considéré ne génère aucune sortie. Pour les formats à enregistrement
1285 unique par connexion/requête, il est aussi possible d'utiliser le
1286 modificateur <code>+</code> (plus). Si un item ne générant aucune
1287 sortie possède le modificateur plus, la ligne dans son ensemble est
1290 <p>Un modificateur de type entier permet d'assigner un niveau de
1291 sévérité à un item de format. L'item considéré ne
1292 sera journalisé que si la sévérité du message n'est pas
1293 plus haute que le niveau de sévérité spécifié. Les
1294 valeurs possibles vont de 1 (alert) à 15 (trace8), en passant par 4
1295 (warn) ou 7 (debug).</p>
1297 <p>Certains items de format acceptent des paramètres supplémentaires
1298 entre accolades.</p>
1300 <table border="1" style="zebra">
1301 <columnspec><column width=".2"/><column width=".8"/></columnspec>
1303 <tr><th>Chaîne de format</th> <th>Description</th></tr>
1305 <tr><td><code>%%</code></td>
1306 <td>Le signe pourcentage</td></tr>
1308 <tr><td><code>%...a</code></td>
1309 <td>Adresse IP et port distants</td></tr>
1311 <tr><td><code>%...A</code></td>
1312 <td>Adresse IP et port locaux</td></tr>
1314 <tr><td><code>%...{name}e</code></td>
1315 <td>Variable d'environnement de requête <code>name</code></td></tr>
1317 <tr><td><code>%...E</code></td>
1318 <td>Etat d'erreur APR/OS et chaîne</td></tr>
1320 <tr><td><code>%...F</code></td>
1321 <td>Nom du fichier source et numéro de ligne de l'appel du
1324 <tr><td><code>%...{name}i</code></td>
1325 <td>En-tête de requête <code>name</code></td></tr>
1327 <tr><td><code>%...k</code></td>
1328 <td>Nombre de requêtes persistantes pour cette connexion</td></tr>
1330 <tr><td><code>%...l</code></td>
1331 <td>Sévérité du message</td></tr>
1333 <tr><td><code>%...L</code></td>
1334 <td>Identifiant journal de la requête</td></tr>
1336 <tr><td><code>%...{c}L</code></td>
1337 <td>Identifiant journal de la connexion</td></tr>
1339 <tr><td><code>%...{C}L</code></td>
1340 <td>Identifiant journal de la connexion si utilisé dans la
1341 portée de la connexion, vide sinon</td></tr>
1343 <tr><td><code>%...m</code></td>
1344 <td>Nom du module qui effectue la journalisation du message</td></tr>
1346 <tr><td><code>%M</code></td>
1347 <td>Le message effectif</td></tr>
1349 <tr><td><code>%...{name}n</code></td>
1350 <td>Note de requête <code>name</code></td></tr>
1352 <tr><td><code>%...P</code></td>
1353 <td>Identifiant du processus courant</td></tr>
1355 <tr><td><code>%...T</code></td>
1356 <td>Identifiant du thread courant</td></tr>
1358 <tr><td><code>%...t</code></td>
1359 <td>L'heure courante</td></tr>
1361 <tr><td><code>%...{u}t</code></td>
1362 <td>L'heure courante avec les microsecondes</td></tr>
1364 <tr><td><code>%...{cu}t</code></td>
1365 <td>L'heure courante au format compact ISO 8601, avec les
1366 microsecondes</td></tr>
1368 <tr><td><code>%...v</code></td>
1369 <td>Le nom de serveur canonique <directive
1370 module="core">ServerName</directive> du serveur courant.</td></tr>
1372 <tr><td><code>%...V</code></td>
1373 <td>Le nom de serveur du serveur qui sert la requête en accord
1374 avec la définition de la directive <directive module="core"
1375 >UseCanonicalName</directive>.</td></tr>
1377 <tr><td><code>\ </code> (anti-slash espace)</td>
1378 <td>Espace non délimiteur</td></tr>
1380 <tr><td><code>% </code> (pourcentage espace)</td>
1381 <td>Délimiteur de champ (aucune sortie)</td></tr>
1384 <p>L'item de format identifiant journal <code>%L</code> génère un
1385 identifiant unique pour une connexion ou une requête. Il peut servir
1386 à déterminer quelles lignes correspondent à la même connexion ou
1387 requête ou quelle requête est associée à tel connexion. Un item de
1388 format <code>%L</code> est aussi disponible dans le module
1389 <module>mod_log_config</module>, mais il permet dans ce contexte de
1390 corréler les entrées du journal des accès avec celles du journal des
1391 erreurs. Si le module <module>mod_unique_id</module> est chargé,
1392 c'est son identifiant unique qui sera utilisé comme identifiant de
1393 journal pour les requêtes.</p>
1395 <example><title>Exemple (assez similaire au format par défaut)</title>
1396 ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P] %7F: %E: [client\ %a]
1397 %M% ,\ referer\ %{Referer}i"
1400 <example><title>Exemple (similaire au format 2.2.x)</title>
1401 ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a]
1402 %M% ,\ referer\ %{Referer}i"
1405 <example><title>Exemple avancé avec identifiants journal de
1406 requête/connexion</title>
1407 ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M"<br/>
1408 ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"<br/>
1409 ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'"<br/>
1410 ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'"<br/>
1411 ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"<br/>
1415 <seealso><directive module="core">ErrorLog</directive></seealso>
1416 <seealso><directive module="core">LogLevel</directive></seealso>
1417 <seealso><a href="../logs.html">Fichiers journaux du serveur HTTP Apache</a></seealso>
1418 </directivesynopsis>
1421 <name>ExtendedStatus</name>
1422 <description>Extrait des informations d'état étendues pour chaque
1423 requête</description>
1424 <syntax>ExtendedStatus On|Off</syntax>
1425 <default>ExtendedStatus Off</default>
1426 <contextlist><context>server config</context></contextlist>
1430 <p>Cette option permet d'extraire des données supplémentaires
1431 concernant la requête en cours de traitement pour un processus
1432 donné, ainsi qu'un résumé d'utilisation ; vous pouvez accéder à
1433 ces variables pendant l'exécution en configurant
1434 <module>mod_status</module>. Notez que d'autres modules sont
1435 susceptibles de s'appuyer sur ce tableau de bord.</p>
1437 <p>Cette directive s'applique au serveur dans son ensemble, et ne
1438 peut pas être activée/désactivée pour un serveur virtuel
1439 particulier. Notez que l'extraction des informations d'état étendues
1440 peut ralentir le serveur. Notez aussi que cette définition ne peut
1441 pas être modifiée au cours d'un redémarrage graceful.</p>
1444 <p>Notez que le chargement de <module>mod_status</module> définit
1445 automatiquement ExtendedStatus à On, et que d'autres modules tiers
1446 sont susceptibles d'en faire de même. De tels modules ont besoin
1447 d'informations détaillées à propos de l'état de tous les processus.
1448 Depuis la version 2.3.6, <module>mod_status</module> a définit la
1449 valeur par défaut à On, alors qu'elle était à Off dans les versions
1450 antérieures.</p>
1455 </directivesynopsis>
1458 <name>FileETag</name>
1459 <description>Caractéristiques de fichier utilisées lors de la génération
1460 de l'en-tête de réponse HTTP ETag pour les fichiers statiques</description>
1461 <syntax>FileETag <var>composant</var> ...</syntax>
1462 <default>FileETag INode MTime Size</default>
1463 <contextlist><context>server config</context><context>virtual
1465 <context>directory</context><context>.htaccess</context>
1467 <override>FileInfo</override>
1471 La directive <directive>FileETag</directive> définit les
1472 caractéristiques de fichier utilisées lors de la génération de
1473 l'en-tête de réponse HTTP <code>ETag</code> (entity tag) quand le
1474 document est contenu dans un fichier statique(la valeur de
1476 est utilisée dans le cadre de la gestion du cache pour préserver la
1477 bande passante réseau). La directive
1478 <directive>FileETag</directive> vous permet maintenant de choisir
1479 quelles caractéristiques du fichier vont être utilisées, le cas
1480 échéant. Les mots-clés reconnus sont :
1484 <dt><strong>INode</strong></dt>
1485 <dd>Le numéro d'i-node du fichier sera inclus dans le processus de
1486 génération</dd>
1487 <dt><strong>MTime</strong></dt>
1488 <dd>La date et l'heure auxquelles le fichier a été modifié la
1489 dernière fois seront incluses</dd>
1490 <dt><strong>Size</strong></dt>
1491 <dd>La taille du fichier en octets sera incluse</dd>
1492 <dt><strong>All</strong></dt>
1493 <dd>Tous les champs disponibles seront utilisés. Cette définition
1494 est équivalente à : <example>FileETag INode MTime
1496 <dt><strong>None</strong></dt>
1497 <dd>Si le document se compose d'un fichier, aucun champ
1498 <code>ETag</code> ne sera inclus dans la réponse</dd>
1501 <p>Les mots-clés <code>INode</code>, <code>MTime</code>, et
1502 <code>Size</code> peuvent être préfixés par <code>+</code> ou
1503 <code>-</code>, ce qui permet de modifier les valeurs par défaut
1504 héritées d'un niveau de configuration plus général. Tout mot-clé
1505 apparaissant sans aucun préfixe annule entièrement et immédiatement
1506 les configurations héritées.</p>
1508 <p>Si la configuration d'un répertoire contient
1509 <code>FileETag INode MTime Size</code>, et si un de
1510 ses sous-répertoires contient <code>FileETag -INode</code>, la
1511 configuration de ce sous-répertoire (qui sera propagée vers tout
1512 sou-répertoire qui ne la supplante pas), sera équivalente à
1513 <code>FileETag MTime Size</code>.</p>
1514 <note type="warning"><title>Avertissement</title>
1515 Ne modifiez pas les valeurs par défaut pour les répertoires ou
1516 localisations où WebDAV est activé et qui utilisent
1517 <module>mod_dav_fs</module> comme fournisseur de stockage.
1518 <module>mod_dav_fs</module> utilise
1519 <code>INode MTime Size</code> comme format fixe pour les
1520 comparaisons de champs <code>ETag</code> dans les requêtes
1521 conditionnelles. Ces requêtes conditionnelles échoueront si le
1522 format <code>ETag</code> est modifié via la directive
1523 <directive>FileETag</directive>.
1525 <note><title>Inclusions côté serveur</title>
1526 Aucun champ ETag n'est généré pour les réponses interprétées par
1527 <module>mod_include</module>, car l'entité de la réponse peut
1528 changer sans modification de l'INode, du MTime, ou de la taille du
1529 fichier statique contenant les directives SSI.
1534 </directivesynopsis>
1536 <directivesynopsis type="section">
1538 <description>Contient des directives qui s'appliquent aux fichiers
1539 précisés</description>
1540 <syntax><Files <var>nom fichier</var>> ... </Files></syntax>
1541 <contextlist><context>server config</context><context>virtual
1543 <context>directory</context><context>.htaccess</context>
1545 <override>All</override>
1548 <p>La directive <directive type="section">Files</directive> limite
1549 la portée des directives qu'elle contient aux fichiers précisés.
1550 Elle est comparable aux directives <directive module="core"
1551 type="section">Directory</directive> et <directive module="core"
1552 type="section">Location</directive>. Elle doit se terminer par une
1553 balise <code></Files></code>. Les directives contenues dans
1554 cette section s'appliqueront à tout objet dont le nom de base (la
1555 dernière partie du nom de fichier) correspond au fichier spécifié.
1556 Les sections <directive type="section">Files</directive> sont
1557 traitées selon l'ordre dans lequel elles apparaissent dans le
1558 fichier de configuration, après les sections <directive module="core"
1559 type="section">Directory</directive> et la lecture des fichiers
1560 <code>.htaccess</code>, mais avant les sections <directive
1561 type="section" module="core">Location</directive>. Notez que les
1562 sections <directive type="section">Files</directive> peuvent être
1563 imbriquées dans les sections <directive type="section"
1564 module="core">Directory</directive> afin de restreindre la portion
1565 du système de fichiers à laquelle ces dernières vont
1568 <p>L'argument <var>filename</var> peut contenir un nom de fichier
1569 ou une chaîne de caractères avec caractères génériques, où
1570 <code>?</code> remplace un caractère, et <code>*</code> toute chaîne
1571 de caractères. On peut aussi utiliser les <glossary
1572 ref="regex">Expressions rationnelles</glossary> en ajoutant la
1573 caractère <code>~</code>. Par exemple :</p>
1576 <Files ~ "\.(gif|jpe?g|png)$">
1579 <p>correspondrait à la plupart des formats graphiques de l'Internet.
1580 Il est cependant préférable d'utiliser la directive <directive
1581 module="core" type="section">FilesMatch</directive>.</p>
1583 <p>Notez qu'à la différence des sections <directive type="section"
1584 module="core">Directory</directive> et <directive type="section"
1585 module="core">Location</directive>, les sections <directive
1586 type="section">Files</directive> peuvent être utilisées dans les
1587 fichiers <code>.htaccess</code>. Ceci permet aux utilisateurs de
1588 contrôler l'accès à leurs propres ressources, fichier par
1592 <seealso><a href="../sections.html">Comment fonctionnent les sections
1593 <Directory>, <Location> et <Files></a> pour une
1594 explication de la manière dont ces différentes sections se combinent
1595 entre elles à la réception d'une requête</seealso>
1596 </directivesynopsis>
1598 <directivesynopsis type="section">
1599 <name>FilesMatch</name>
1600 <description>Contient des directives qui s'appliquent à des fichiers
1601 spécifiés sous la forme d'expressions rationnelles</description>
1602 <syntax><FilesMatch <var>expression rationnelle</var>> ...
1603 </FilesMatch></syntax>
1604 <contextlist><context>server config</context><context>virtual
1606 <context>directory</context><context>.htaccess</context>
1608 <override>All</override>
1611 <p>La section <directive type="section">FilesMatch</directive>
1612 limite la portée des directives qu'elle contient aux fichiers
1613 spécifiés, tout comme le ferait une section <directive module="core"
1614 type="section">Files</directive>. Mais elle accepte aussi les
1615 <glossary ref="regex">expressions rationnelles</glossary>. Par
1619 <FilesMatch "\.(gif|jpe?g|png)$">
1622 <p>correspondrait à la plupart des formats graphiques de
1626 <seealso><a href="../sections.html">Comment fonctionnent les sections
1627 <Directory>, <Location> et <Files></a> pour une
1628 explication de la manière dont ces différentes sections se combinent
1629 entre elles à la réception d'une requête</seealso>
1630 </directivesynopsis>
1633 <name>ForceType</name>
1634 <description>Force le type de médium spécifié dans le champ d'en-tête
1635 HTTP Content-Type pour les fichiers correspondants</description>
1636 <syntax>ForceType <var>type médium</var>|None</syntax>
1637 <contextlist><context>directory</context><context>.htaccess</context>
1639 <override>FileInfo</override>
1640 <compatibility>Intégré dans le coeur d'Apache httpd depuis la version
1644 <p>Lorsqu'elle est placée dans un fichier <code>.htaccess</code> ou
1645 une section <directive type="section"
1646 module="core">Directory</directive>, <directive type="section"
1647 module="core">Location</directive>, ou <directive type="section"
1648 module="core">Files</directive>, cette directive force
1649 l'identification du type MIME des fichiers spécifiés à la valeur de
1650 l'argument <var>type médium</var>. Par exemple, si vous possédez un
1651 répertoire ne contenant que des fichiers GIF, et si vous ne voulez
1652 pas leur ajouter l'extension <code>.gif</code>, vous pouvez utiliser
1659 <p>Notez que cette directive l'emporte sur d'autres associations de
1660 type de médium indirectes définies dans mime.types ou via la
1661 directive <directive module="mod_mime">AddType</directive>.</p>
1663 <p>Vous pouvez aussi annuler toute définition plus générale de
1664 <directive>ForceType</directive> en affectant la valeur
1665 <code>None</code> à l'argument <var>type médium</var> :</p>
1668 # force le type MIME de tous les fichiers à image/gif:<br />
1669 <Location /images><br />
1671 ForceType image/gif<br />
1673 </Location><br />
1675 # mais utilise les méthodes classiques d'attribution du type MIME
1676 # dans le sous-répertoire suivant :<br />
1677 <Location /images/mixed><br />
1679 ForceType None<br />
1684 <p>A la base, cette directive écrase le type de contenu généré pour
1685 les fichiers statiques servis à partir du sytème de fichiers. Pour
1686 les ressources autres que les fichiers statiques pour lesquels le
1687 générateur de réponse spécifie en général un type de contenu, cette
1688 directive est ignorée.</p>
1691 </directivesynopsis>
1693 <name>GprofDir</name>
1694 <description>Répertoire dans lequel écrire les données de profiling
1695 gmon.out.</description>
1696 <syntax>GprofDir <var>/tmp/gprof/</var>|<var>/tmp/gprof/</var>%</syntax>
1697 <contextlist><context>server config</context><context>virtual host</context>
1701 <p>Lorsque le serveur a été compilé avec le support du profiling
1702 gprof, la directive <directive>GprofDir</directive> permet de
1703 spécifier dans quel répertoire les fichiers <code>gmon.out</code>
1704 doivent être écrits lorsque le processus s'arrête. Si l'argument se
1705 termine par un caractère pourcentage ('%'), des sous-répertoires
1706 sont créés pour chaque identifiant de processus.</p>
1708 <p>Cette directive ne fonctionne actuellement qu'avec le MPM
1709 <module>prefork</module>.</p>
1711 </directivesynopsis>
1714 <name>HostnameLookups</name>
1715 <description>Active la recherche DNS sur les adresses IP des
1716 clients</description>
1717 <syntax>HostnameLookups On|Off|Double</syntax>
1718 <default>HostnameLookups Off</default>
1719 <contextlist><context>server config</context><context>virtual
1721 <context>directory</context></contextlist>
1724 <p>Cette directive active la recherche DNS afin de pouvoir
1725 journaliser les nom d'hôtes (et les passer aux programmes CGI et aux
1726 inclusions SSI via la variable <code>REMOTE_HOST</code>). La valeur
1727 <code>Double</code> déclenche une double recherche DNS inverse. En
1728 d'autres termes, une fois la recherche inverse effectuée, on lance
1729 une recherche directe sur le résultat de cette dernière. Au moins
1730 une des adresses IP fournies par la recherche directe doit
1731 correspondre à l'adresse originale (ce que l'on nomme
1732 <code>PARANOID</code> dans la terminologie "tcpwrappers").</p>
1734 <p>Quelle que soit la configuration, lorsqu'on utilise
1735 <module>mod_authz_host</module> pour contrôler l'accès en fonction
1736 du nom d'hôte, une double recherche DNS inverse est effectuée,
1737 sécurité oblige. Notez cependant que le résultat de cette double
1738 recherche n'est en général pas accessible, à moins que vous n'ayez
1739 spécifié <code>HostnameLookups Double</code>. Par exemple, si vous
1740 n'avez spécifié que <code>HostnameLookups On</code>, et si une
1741 requête concerne un objet protégé par des restrictions en fonction
1742 du nom d'hôte, quel que soit le résultat de la double recherche
1743 inverse, les programmes CGI ne recevront que le résultat de la
1744 recherche inverse simple dans la variable
1745 <code>REMOTE_HOST</code>.</p>
1747 <p>La valeur par défaut est <code>Off</code> afin de préserver le
1748 traffic réseau des sites pour lesquels la recherche inverse n'est
1749 pas vraiment nécessaire. Cette valeur par défaut est aussi bénéfique
1750 pour les utilisateurs finaux car il n'ont ainsi pas à subir de temps
1751 d'attente supplémentaires dus aux recherches DNS. Les sites
1752 fortement chargés devraient laisser cette directive à
1753 <code>Off</code>, car les recherches DNS peuvent prendre des temps
1754 très longs. Vous pouvez éventuellement utiliser hors ligne
1755 l'utilitaire <program>logresolve</program>, compilé par défaut dans
1756 le sous-répertoire <code>bin</code> de votre répertoire
1757 d'installation, afin de déterminer les noms d'hôtes associés aux
1758 adresses IP journalisées.</p>
1760 </directivesynopsis>
1762 <directivesynopsis type="section">
1764 <description>Contient des directives qui ne s'appliquent que si une
1765 condition est satisfaite au cours du traitement d'une
1766 requête</description>
1767 <syntax><If <var>expression</var>> ... </If></syntax>
1768 <contextlist><context>server config</context><context>virtual
1770 <context>directory</context><context>.htaccess</context>
1772 <override>All</override>
1775 <p>La directive <directive type="section">If</directive> évalue une
1776 expression à la volée, et applique les directives qu'elle contient
1777 si et seulement si l'expression renvoie la valeur "vrai". Par
1781 <If "$req{Host} = ''">
1784 <p>sera satisfaite dans le cas des requêtes HTTP/1.0 sans en-tête
1785 <var>Host:</var>.</p>
1787 <p>Vous pouvez tester la valeur de tout en-tête de requête ($req),
1788 de tout en-tête de réponse ($resp) ou de toute variable
1789 d'environnement ($env) dans votre expression.</p>
1791 <p>En plus de <code>=</code>, <code>If</code> peut utiliser
1792 l'opérateur <code>IN</code> pour déterminer si la valeur de
1793 l'expression fait partie d'une liste donnée :</p>
1796 <If %{REQUEST_METHOD} IN GET,HEAD,OPTIONS>
1801 <seealso><a href="../expr.html">Les expressions dans le serveur HTTP
1802 Apache</a>, pour une référence complète et d'autres exemples.</seealso>
1803 <seealso><a href="../sections.html">Comment fonctionnent les sections
1804 <Directory>, <Location> et <Files></a> pour une
1805 explication de la manière dont ces différentes sections se combinent
1806 entre elles à la réception d'une requête. La directive <directive
1807 type="section">If</directive> possède la même priorité et s'utilise de
1808 la même façon que la directive <directive
1809 type="section">Files</directive></seealso>
1810 </directivesynopsis>
1812 <directivesynopsis type="section">
1813 <name>IfDefine</name>
1814 <description>Contient des directives qui ne s'appliqueront que si un
1815 test retourne "vrai" au démarrage du serveur</description>
1816 <syntax><IfDefine [!]<var>paramètre</var>> ...
1817 </IfDefine></syntax>
1818 <contextlist><context>server config</context><context>virtual
1820 <context>directory</context><context>.htaccess</context>
1822 <override>All</override>
1825 <p>La section <code><IfDefine
1826 <var>test</var>>...</IfDefine></code> permet de
1827 conférer un caractère conditionnel à un ensemble de directives. Les
1828 directives situées à l'intérieur d'une section <directive
1829 type="section">IfDefine</directive> ne s'appliquent que si
1830 <var>test</var> est vrai. Si <var>test</var> est faux, tout ce qui
1831 se trouve entre les balises de début et de fin est ignoré.</p>
1833 <p><var>test</var> peut se présenter sous deux formes :</p>
1836 <li><var>nom paramètre</var></li>
1838 <li><code>!</code><var>nom paramètre</var></li>
1841 <p>Dans le premier cas, les directives situées entre les balises de
1842 début et de fin ne s'appliqueront que si le paramètre nommé <var>nom
1843 paramètre</var> est défini. Le second format inverse le test, et
1844 dans ce cas, les directives ne s'appliqueront que si <var>nom
1845 paramètre</var> n'est <strong>pas</strong> défini.</p>
1847 <p>L'argument <var>nom paramètre</var> est une définition qui peut
1848 être effectuée par la ligne de commande
1849 <program>httpd</program> via le paramètre
1850 <code>-D<var>paramètre</var></code> au démarrage du serveur, ou via la
1851 directive <directive module="core">Define</directive>.</p>
1853 <p>Les sections <directive type="section">IfDefine</directive>
1854 peuvent être imbriquées, ce qui permet d'implémenter un test
1855 multi-paramètres simple. Exemple :</p>
1858 httpd -DReverseProxy -DUseCache -DMemCache ...<br />
1861 <IfDefine ReverseProxy><br />
1863 LoadModule proxy_module modules/mod_proxy.so<br />
1864 LoadModule proxy_http_module modules/mod_proxy_http.so<br />
1865 <IfDefine UseCache><br />
1867 LoadModule cache_module modules/mod_cache.so<br />
1868 <IfDefine MemCache><br />
1870 LoadModule mem_cache_module modules/mod_mem_cache.so<br />
1872 </IfDefine><br />
1873 <IfDefine !MemCache><br />
1875 LoadModule cache_disk_module modules/mod_cache_disk.so<br />
1884 </directivesynopsis>
1886 <directivesynopsis type="section">
1887 <name>IfModule</name>
1888 <description>Contient des directives qui ne s'appliquent qu'en fonction
1889 de la présence ou de l'absence d'un module spécifique</description>
1890 <syntax><IfModule [!]<var>fichier module</var>|<var>identificateur
1891 module</var>> ... </IfModule></syntax>
1892 <contextlist><context>server config</context><context>virtual
1894 <context>directory</context><context>.htaccess</context>
1896 <override>All</override>
1897 <compatibility>Les identificateurs de modules sont disponibles dans les
1898 versions 2.1 et supérieures.</compatibility>
1901 <p>La section <code><IfModule
1902 <var>test</var>>...</IfModule></code> permet de conférer à
1903 des directives un caractère conditionnel basé sur la présence d'un
1904 module spécifique. Les directives situées dans une section
1905 <directive type="section">IfModule</directive> ne s'appliquent que
1906 si <var>test</var> est vrai. Si <var>test</var> est faux, tout ce
1907 qui se trouve entre les balises de début et de fin est ignoré.</p>
1909 <p><var>test</var> peut se présenter sous deux formes :</p>
1912 <li><var>module</var></li>
1914 <li>!<var>module</var></li>
1917 <p>Dans le premier cas, les directives situées entre les balises de
1918 début et de fin ne s'appliquent que si le module <var>module</var>
1919 est présent -- soit compilé avec le binaire Apache httpd, soit chargé
1920 dynamiquement via la directive <directive module="mod_so"
1921 >LoadModule</directive>. Le second format inverse le test, et dans
1922 ce cas, les directives ne s'appliquent que si <var>module</var>
1923 n'est <strong>pas</strong> présent.</p>
1925 <p>L'argument <var>module</var> peut contenir soit l'identificateur
1926 du module, soit le nom du fichier source du module. Par exemple,
1927 <code>rewrite_module</code> est un identificateur et
1928 <code>mod_rewrite.c</code> le nom du fichier source
1929 correspondant. Si un module comporte plusieurs fichiers sources,
1930 utilisez le nom du fichier qui contient la chaîne de caractères
1931 <code>STANDARD20_MODULE_STUFF</code>.</p>
1933 <p>Les sections <directive type="section">IfModule</directive>
1934 peuvent être imbriquées, ce qui permet d'implémenter des tests
1935 multi-modules simples.</p>
1937 <note>Cette section ne doit être utilisée que si votre fichier de
1938 configuration ne fonctionne qu'en fonction de la présence ou de
1939 l'absence d'un module spécifique. D'une manière générale, il n'est
1940 pas nécessaire de placer les directives à l'intérieur de sections
1941 <directive type="section">IfModule</directive>.</note>
1943 </directivesynopsis>
1946 <name>Include</name>
1947 <description>Inclut d'autres fichiers de configuration dans un des
1948 fichiers de configuration du serveur</description>
1949 <syntax>Include [<var>optional</var>|<var>strict</var>] <var>chemin fichier</var>|<var>chemin
1950 répertoire|<var>wildcard</var></var></syntax>
1951 <contextlist><context>server config</context><context>virtual
1953 <context>directory</context>
1955 <compatibility>Utilisation des caractères génériques dans la partie nom
1956 de fichier depuis la version 2.0.41, et dans la partie chemin depuis la
1957 version 2.3.6</compatibility>
1960 <p>Cette directive permet l'inclusion d'autres fichiers de
1961 configuration dans un des fichiers de configuration du serveur.</p>
1963 <p>On peut utiliser des caractères génériques de style Shell
1964 (<code>fnmatch()</code>) aussi bien dans la partie nom de fichier du
1965 chemin que dans la partie répertoires pour inclure plusieurs
1967 seule fois, selon leur ordre alphabétique. De plus, si la directive
1968 <directive>Include</directive> pointe vers un répertoire, Apache
1969 httpd inclura tous les fichiers de ce répertoire et de tous ces
1970 sous-répertoires. L'inclusion de répertoires entiers est cependant
1971 déconseillée, car il est fréquent d'oublier des fichiers
1972 temporaires dans un répertoire, ce qui causerait une erreur
1973 <program>httpd</program> en cas d'inclusion. Pour inclure des
1974 fichiers qui correspondent à un certain modèle, comme *.conf par
1975 exemple, nous vous recommandons d'utiliser plutôt la syntaxe avec
1976 caractères génériques comme ci-dessous.</p>
1978 <p>Lorsque la partie <strong>nom de fichier</strong> ou répertoires
1980 comporte des caractères génériques, et si aucun fichier ou
1981 répertoire ne correspond, la directive <directive
1982 module="core">Include</directive> sera <strong>ignorée
1983 silencieusement</strong>.
1984 Lorsqu'une partie <strong>répertoires</strong> du chemin comporte
1985 des caractères génériques, et si aucun
1986 répertoire ne correspond, la directive <directive
1987 module="core">Include</directive> <strong>échouera et renverra une
1989 indiquant que le fichier ou le répertoire n'a pas été trouvé.
1992 <p>Pour contrôler plus finement le comportement du serveur
1993 lorsqu'aucun fichier ou répertoire ne correspond, préfixez le chemin
1994 avec les modificateurs <var>optional</var> ou <var>strict</var>. Si
1995 <var>optional</var> est spécifié, tout fichier ou répertoire avec
1996 caractères génériques qui ne correspond à aucun fichier ou
1997 répertoire sera ignoré silencieusement. Si <var>strict</var> est
1998 spécifié, tout fichier ou répertoire avec
1999 caractères génériques qui ne correspond pas à au moins un fichier
2000 fera échouer le démarrage du serveur.</p>
2002 <p>Lorsqu'une partie fichier ou répertoire du chemin est
2003 spécipée sans caractères génériques, et si ce fichier ou
2004 répertoire n'existe pas, la directive <directive
2005 module="core">Include</directive> échouera avec un message
2006 d'erreur indiquant que le fichier ou répertoire n'a pas pu être
2009 <p>Le chemin fichier spécifié peut être soit un chemin absolu, soit
2010 un chemin relatif au répertoire défini par la directive <directive
2011 module="core">ServerRoot</directive>.</p>
2016 Include /usr/local/apache2/conf/ssl.conf<br />
2017 Include /usr/local/apache2/conf/vhosts/*.conf
2020 <p>ou encore, avec des chemins relatifs au répertoire défini par la
2021 directive <directive module="core">ServerRoot</directive> :</p>
2024 Include conf/ssl.conf<br />
2025 Include conf/vhosts/*.conf
2028 <p>On peut aussi insérer des caractères génériques dans la partie
2029 répertoires du chemin. Dans l'exemple suivant, le démarrage du
2030 serveur échouera si aucun répertoire ne correspond à conf/vhosts/*,
2031 mais réussira si aucun fichier ne correspond à *.conf :</p>
2034 Include conf/vhosts/*/vhost.conf<br />
2035 Include conf/vhosts/*/*.conf
2038 <p>Dans cet exemple, le démarrage du serveur échouera si
2039 conf/vhosts/* ne correspond à aucun répertoire, ou si *.conf ne
2040 correspond à aucun fichier :</p>
2043 Include strict conf/vhosts/*/*.conf
2046 <p>Dans cet exemple, le démarrage du serveur réussira si
2047 conf/vhosts/* ne correspond à aucun répertoire, ou si *.conf ne
2048 correspond à aucun fichier.</p>
2051 Include optional conf/vhosts/*/*.conf
2056 <seealso><program>apachectl</program></seealso>
2057 </directivesynopsis>
2060 <name>KeepAlive</name>
2061 <description>Active les connexions HTTP persistantes</description>
2062 <syntax>KeepAlive On|Off</syntax>
2063 <default>KeepAlive On</default>
2064 <contextlist><context>server config</context><context>virtual
2069 <p>L'extension Keep-Alive de HTTP/1.0 et l'implémentation des
2070 connexions persistantes dans HTTP/1.1 ont rendu possibles des
2071 sessions HTTP de longue durée, ce qui permet de transmettre
2072 plusieurs requêtes via la même connexion TCP. Dans certains cas, le
2073 gain en rapidité pour des documents comportant de nombreuses images
2074 peut atteindre 50%. Pour activer les connexions persistantes,
2075 définissez <code>KeepAlive On</code>.</p>
2077 <p>Pour les clients HTTP/1.0, les connexions persistantes ne seront
2078 mises en oeuvre que si elles ont été spécialement demandées par un
2079 client. De plus, une connexion persistante avec un client HTTP/1.0
2080 ne peut être utilisée que si la taille du contenu est connue
2081 d'avance. Ceci implique que les contenus dynamiques comme les
2082 sorties CGI, les pages SSI, et les listings de répertoires générés
2083 par le serveur n'utiliseront en général pas les connexions
2084 persistantes avec les clients HTTP/1.0. Avec les clients HTTP/1.1,
2085 les connexions persistantes sont utilisées par défaut, sauf
2086 instructions contraires. Si le client le demande, le transfert par
2087 tronçons de taille fixe (chunked encoding) sera utilisé afin de
2088 transmettre un contenu de longueur inconnue via une connexion
2091 <p>Lorsqu'un client utilise une connexion persistante, elle comptera
2092 pour une seule requête pour la directive <directive
2093 module="mpm_common">MaxConnectionsPerChild</directive>, quel
2094 que soit le nombre de requêtes transmises via cette connexion.</p>
2097 <seealso><directive module="core">MaxKeepAliveRequests</directive></seealso>
2098 </directivesynopsis>
2101 <name>KeepAliveTimeout</name>
2102 <description>Durée pendant laquelle le serveur va attendre une requête
2103 avant de fermer une connexion persistante</description>
2104 <syntax>KeepAliveTimeout <var>nombre</var>[ms]</syntax>
2105 <default>KeepAliveTimeout 5</default>
2106 <contextlist><context>server config</context><context>virtual
2109 <compatibility>La spécification d'une valeur en millisecondes est
2110 possible depuis les versions 2.3.2 et supérieures d'Apache httpd</compatibility>
2113 <p>Le nombre de secondes pendant lesquelles Apache httpd va attendre une
2114 requête avant de fermer la connexion. Le délai peut être défini en
2115 millisecondes en suffixant sa valeur par ms. La valeur du délai
2116 spécifiée par la directive <directive
2117 module="core">Timeout</directive> s'applique dès qu'une requête a
2118 été reçue.</p>
2120 <p>Donner une valeur trop élévée à
2121 <directive>KeepAliveTimeout</directive> peut induire des problèmes
2122 de performances sur les serveurs fortement chargés. Plus le délai
2123 est élévé, plus nombreux seront les processus serveur en attente de
2124 requêtes de la part de clients inactifs.</p>
2126 <p>Dans un contexte de serveur virtuel à base de nom, c'est
2127 la valeur de la paire adresse IP/port du serveur virtuel qui
2128 correspond le mieux qui sera utilisée.</p>
2130 </directivesynopsis>
2132 <directivesynopsis type="section">
2134 <description>Limite les contrôles d'accès que la section contient à
2135 certaines méthodes HTTP</description>
2136 <syntax><Limit <var>méthode</var> [<var>méthode</var>] ... > ...
2137 </Limit></syntax>
2138 <contextlist><context>directory</context><context>.htaccess</context>
2140 <override>AuthConfig, Limit</override>
2143 <p>Les contrôles d'accès s'appliquent normalement à
2144 <strong>toutes</strong> les méthodes d'accès, et c'est en général le
2145 comportement souhaité. <strong>Dans le cas général, les directives
2146 de contrôle d'accès n'ont pas à être placées dans une section
2147 <directive type="section">Limit</directive>.</strong></p>
2149 <p>La directive <directive type="section">Limit</directive> a pour
2150 but de limiter les effets des contrôles d'accès aux méthodes HTTP
2151 spécifiées. Pour toutes les autres méthodes, les restrictions
2152 d'accès contenues dans la section <directive
2153 type="section">Limit</directive> <strong>n'auront aucun
2154 effet</strong>. L'exemple suivant n'applique les contrôles d'accès
2155 qu'aux méthodes <code>POST</code>, <code>PUT</code>, et
2156 <code>DELETE</code>, en laissant les autres méthodes sans protection
2160 <Limit POST PUT DELETE><br />
2162 Require valid-user<br />
2167 <p>La liste des noms de méthodes peut contenir une ou plusieurs
2168 valeurs parmi les suivantes : <code>GET</code>, <code>POST</code>,
2169 <code>PUT</code>, <code>DELETE</code>, <code>CONNECT</code>,
2170 <code>OPTIONS</code>, <code>PATCH</code>, <code>PROPFIND</code>,
2171 <code>PROPPATCH</code>, <code>MKCOL</code>, <code>COPY</code>,
2172 <code>MOVE</code>, <code>LOCK</code>, et <code>UNLOCK</code>.
2173 <strong>Le nom de méthode est sensible à la casse.</strong> Si la
2174 valeur <code>GET</code> est présente, les requêtes <code>HEAD</code>
2175 seront aussi concernées. La méthode <code>TRACE</code> ne peut pas
2176 être limitée (voir la directive <directive
2177 module="core">TraceEnable</directive>).</p>
2179 <note type="warning">Une section <directive
2180 type="section">LimitExcept</directive> doit toujours être préférée à
2181 une section <directive type="section">Limit</directive> pour la
2182 restriction d'accès, car une section <directive type="section"
2183 module="core">LimitExcept</directive> fournit une protection contre
2184 les méthodes arbitraires.</note>
2186 <p>Les directives <directive type="section">Limit</directive> et
2187 <directive type="section" module="core">LimitExcept</directive>
2188 peuvent être imbriquées. Dans ce cas, pour chaque niveau des
2189 directives <directive type="section">Limit</directive> ou <directive
2190 type="section" module="core">LimitExcept</directive>, ces dernières
2191 doivent restreindre l'accès pour les méthodes auxquelles les
2192 contrôles d'accès s'appliquent.</p>
2194 <note type="warning">Lorsqu'on utilise les directives <directive
2195 type="section">Limit</directive> ou <directive
2196 type="section">LimitExcept</directive> avec la directive <directive
2197 module="mod_authz_core">Require</directive>, la première directive
2198 <directive module="mod_authz_core">Require</directive> dont la
2199 condition est satisfaite autorise la requête, sans tenir compte de
2200 la présence d'autres directives <directive
2201 module="mod_authz_core">Require</directive>.</note>
2203 <p>Par exemple, avec la configuration suivante, tous les
2204 utilisateurs seront autorisés à effectuer des requêtes
2205 <code>POST</code>, et la directive <code>Require group
2206 editors</code> sera ignorée dans tous les cas :</p>
2209 <LimitExcept GET>
2213 </LimitExcept><br />
2216 Require group editors
2221 </directivesynopsis>
2223 <directivesynopsis type="section">
2224 <name>LimitExcept</name>
2225 <description>Applique les contrôles d'accès à toutes les méthodes HTTP,
2226 sauf celles qui sont spécifiées</description>
2227 <syntax><LimitExcept <var>méthode</var> [<var>méthode</var>] ... > ...
2228 </LimitExcept></syntax>
2229 <contextlist><context>directory</context><context>.htaccess</context>
2231 <override>AuthConfig, Limit</override>
2234 <p><directive type="section">LimitExcept</directive> et
2235 <code></LimitExcept></code> permettent de regrouper des
2236 directives de contrôle d'accès qui s'appliqueront à toutes les
2237 méthodes d'accès HTTP qui ne font <strong>pas</strong> partie de la
2238 liste des arguments ; en d'autres termes, elles ont un comportement
2239 opposé à celui de la section <directive type="section"
2240 module="core">Limit</directive>, et on peut les utiliser pour
2241 contrôler aussi bien les méthodes standards que les méthodes non
2242 standards ou non reconnues. Voir la documentation de la section
2243 <directive module="core" type="section">Limit</directive> pour plus
2244 de détails.</p>
2246 <p>Par exemple :</p>
2249 <LimitExcept POST GET><br />
2251 Require valid-user<br />
2253 </LimitExcept>
2257 </directivesynopsis>
2260 <name>LimitInternalRecursion</name>
2261 <description>Détermine le nombre maximal de redirections internes et de
2262 sous-requêtes imbriquées</description>
2263 <syntax>LimitInternalRecursion <var>nombre</var> [<var>nombre</var>]</syntax>
2264 <default>LimitInternalRecursion 10</default>
2265 <contextlist><context>server config</context><context>virtual
2268 <compatibility>Disponible à partir de la version 2.0.47 d'Apache httpd</compatibility>
2271 <p>Une redirection interne survient, par exemple, quand on utilise
2272 la directive <directive module="mod_actions">Action</directive> qui
2273 redirige en interne la requête d'origine vers un script CGI. Une
2274 sous-requête est le mécanisme qu'utilise Apache httpd pour déterminer ce
2275 qui se passerait pour un URI s'il faisait l'objet d'une requête. Par
2276 exemple, <module>mod_dir</module> utilise les sous-requêtes pour
2277 rechercher les fichiers listés dans la directive <directive
2278 module="mod_dir">DirectoryIndex</directive>.</p>
2280 <p>La directive <directive>LimitInternalRecursion</directive> permet
2281 d'éviter un crash du serveur dû à un bouclage infini de redirections
2282 internes ou de sous-requêtes. De tels bouclages sont dus en général
2283 à des erreurs de configuration.</p>
2285 <p>La directive accepte, comme arguments, deux limites qui sont
2286 évaluées à chaque requête. Le premier <var>nombre</var> est le
2287 nombre maximum de redirections internes qui peuvent se succéder. Le
2288 second <var>nombre</var> détermine la profondeur d'imbrication
2289 maximum des sous-requêtes. Si vous ne spécifiez qu'un seul
2290 <var>nombre</var>, il sera affecté aux deux limites.</p>
2292 <example><title>Exemple</title>
2293 LimitInternalRecursion 5
2296 </directivesynopsis>
2299 <name>LimitRequestBody</name>
2300 <description>limite la taille maximale du corps de la requête HTTP
2301 envoyée par le client</description>
2302 <syntax>LimitRequestBody <var>octets</var></syntax>
2303 <default>LimitRequestBody 0</default>
2304 <contextlist><context>server config</context><context>virtual
2306 <context>directory</context><context>.htaccess</context>
2308 <override>All</override>
2311 <p>Cette directive spécifie la taille maximale autorisée pour le
2312 corps d'une requête ; la valeur de l'argument <var>octets</var> va
2313 de 0 (pour une taille illimitée), à 2147483647 (2Go). Voir la note
2314 ci-dessous pour la limite d'applicabilité aux requêtes mandatées.</p>
2316 <p>La directive <directive>LimitRequestBody</directive> permet de
2317 définir une limite pour la taille maximale autorisée du corps d'une
2318 requête HTTP en tenant compte du contexte dans lequel la directive
2319 a été placée (c'est à dire au niveau du serveur, d'un répertoire,
2320 d'un fichier ou d'une localisation). Si la requête du client dépasse
2321 cette limite, le serveur répondra par un message d'erreur et ne
2322 traitera pas la requête. La taille du corps d'une requête normale va
2323 varier de manière importante en fonction de la nature de la
2324 ressource et des méthodes autorisées pour cette dernière. Les
2325 scripts CGI utilisent souvent le corps du message pour extraire les
2326 informations d'un formulaire. Les implémentations de la méthode
2327 <code>PUT</code> nécessitent une valeur au moins aussi élevée que la
2328 taille maximale des représentations que le serveur désire accepter
2329 pour cette ressource.</p>
2331 <p>L'administrateur du serveur peut utiliser cette directive pour
2332 contrôler plus efficacement les comportements anormaux des requêtes
2333 des clients, ce qui lui permettra de prévenir certaines formes
2334 d'attaques par déni de service.</p>
2336 <p>Si par exemple, vous autorisez le chargement de fichiers vers une
2337 localisation particulière, et souhaitez limiter la taille des
2338 fichiers chargés à 100Ko, vous pouvez utiliser la directive suivante
2342 LimitRequestBody 102400
2345 <note><p>Pour une description détaillée de la manière dont cette
2346 directive est interprétée par les requêtes mandatées, voir la
2347 documentation du module <module>mod_proxy</module>.</p>
2351 </directivesynopsis>
2354 <name>LimitRequestFields</name>
2355 <description>Limite le nombre de champs d'en-tête autorisés dans une
2356 requête HTTP</description>
2357 <syntax>LimitRequestFields <var>nombre</var></syntax>
2358 <default>LimitRequestFields 100</default>
2359 <contextlist><context>server config</context><context>virtual host</context></contextlist>
2362 <p><var>nombre</var> est un entier de 0 (nombre de champs illimité)
2363 à 32767. La valeur par défaut est définie à la compilation par la
2364 constante <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> (100 selon la
2367 <p>La directive <directive>LimitRequestFields</directive> permet à
2368 l'administrateur du serveur de modifier le nombre maximum de champs
2369 d'en-tête autorisés dans une requête HTTP. Pour un serveur, cette
2370 valeur doit être supérieure au nombre de champs qu'une requête
2371 client normale peut contenir. Le nombre de champs d'en-tête d'une
2372 requête qu'un client utilise dépasse rarement 20, mais ce nombre
2373 peut varier selon les implémentations des clients, et souvent en
2374 fonction des extensions que les utilisateurs configurent dans leurs
2375 navigateurs pour supporter la négociation de contenu détaillée. Les
2376 extensions HTTP optionnelles utilisent souvent les
2377 champs d'en-tête des requêtes.</p>
2379 <p>L'administrateur du serveur peut utiliser cette directive pour
2380 contrôler plus efficacement les comportements anormaux des requêtes
2381 des clients, ce qui lui permettra de prévenir certaines formes
2382 d'attaques par déni de service. La valeur spécifiée doit être
2383 augmentée si les clients standards reçoivent une erreur du serveur
2384 indiquant que la requête comportait un nombre d'en-têtes trop
2387 <p>Par exemple :</p>
2390 LimitRequestFields 50
2393 <note type="warning"><title>Avertissement</title>
2394 <p>Dans le cas des serveurs virtuels à base de noms, la valeur de
2395 cette directive est extraite du serveur virtuel par défaut (le
2396 premier de la liste) pour la paire adresse IP/port.</p>
2400 </directivesynopsis>
2403 <name>LimitRequestFieldSize</name>
2404 <description>Dédinit la taille maximale autorisée d'un en-tête de
2405 requête HTTP</description>
2406 <syntax>LimitRequestFieldSize <var>octets</var></syntax>
2407 <default>LimitRequestFieldSize 8190</default>
2408 <contextlist><context>server config</context><context>virtual host</context></contextlist>
2411 <p>Cette directive permet de définir le nombre maximum
2412 d'<var>octets</var> autorisés dans un en-tête de requête HTTP.</p>
2414 <p>La directive <directive>LimitRequestFieldSize</directive> permet
2415 à l'administrateur du serveur de réduire ou augmenter la taille
2416 maximale autorisée d'un en-tête de requête HTTP. Pour un serveur,
2417 cette valeur doit être suffisamment grande pour contenir tout
2418 en-tête d'une requête client normale. La taille d'un champ d'en-tête
2419 de requête normal va varier selon les implémentations des clients,
2420 et en fonction des extensions que les utilisateurs
2421 configurent dans leurs navigateurs pour supporter la négociation de
2422 contenu détaillée. Les en-têtes d'authentification SPNEGO peuvent
2423 atteindre une taille de 12392 octets.</p>
2425 <p>>L'administrateur du serveur peut utiliser cette directive pour
2426 contrôler plus efficacement les comportements anormaux des requêtes
2427 des clients, ce qui lui permettra de prévenir certaines formes
2428 d'attaques par déni de service.</p>
2430 <p>Par exemple ::</p>
2433 LimitRequestFieldSize 4094
2436 <note>Dans des conditions normales, la valeur par défaut de cette
2437 directive ne doit pas être modifiée.</note>
2439 <note type="warning"><title>Avertissement</title>
2440 <p>Dans le cas des serveurs virtuels à base de noms, la valeur de
2441 cette directive est extraite du serveur virtuel par défaut (le
2442 premier de la liste) pour lequel la paire adresse IP/port
2443 correspond le mieux.</p>
2446 </directivesynopsis>
2449 <name>LimitRequestLine</name>
2450 <description>Définit la taille maximale d'une ligne de requête
2452 <syntax>LimitRequestLine <var>octets</var></syntax>
2453 <default>LimitRequestLine 8190</default>
2454 <contextlist><context>server config</context><context>virtual host</context></contextlist>
2457 <p>Cette directive permet de définir la taille maximale autorisée
2458 pour une ligne de requête HTTP en <var>octets</var>.</p>
2460 <p>La directive <directive>LimitRequestLine</directive> permet à
2461 l'administrateur du serveur de réduire ou augmenter la taille
2462 maximale autorisée d'une ligne de requête HTTP client. Comme une
2463 requête comporte une méthode HTTP, un URI, et une version de
2464 protocole, la directive <directive>LimitRequestLine</directive>
2465 impose une restriction sur la longueur maximale autorisée pour un
2466 URI dans une requête au niveau du serveur. Pour un serveur, cette
2467 valeur doit être suffisamment grande pour référencer les noms de
2468 toutes ses ressources, y compris toutes informations pouvant être
2469 ajoutées dans la partie requête d'une méthode <code>GET</code>.</p>
2471 <p>L'administrateur du serveur peut utiliser cette directive pour
2472 contrôler plus efficacement les comportements anormaux des requêtes
2473 des clients, ce qui lui permettra de prévenir certaines formes
2474 d'attaques par déni de service.</p>
2476 <p>Par exemple :</p>
2479 LimitRequestLine 4094
2482 <note>Dans des conditions normales, la valeur par défaut de cette
2483 directive ne doit pas être modifiée.</note>
2485 <note type="warning"><title>Avertissement</title>
2486 <p>Dans le cas des serveurs virtuels à base de noms, la valeur de
2487 cette directive est extraite du serveur virtuel par défaut (le
2488 premier de la liste) pour lequel la paire adresse IP/port
2489 correspond le mieux.</p>
2493 </directivesynopsis>
2496 <name>LimitXMLRequestBody</name>
2497 <description>Définit la taille maximale du corps d'une requête au format
2499 <syntax>LimitXMLRequestBody <var>octets</var></syntax>
2500 <default>LimitXMLRequestBody 1000000</default>
2501 <contextlist><context>server config</context><context>virtual
2503 <context>directory</context><context>.htaccess</context></contextlist>
2504 <override>All</override>
2507 <p>Taille maximale (en octets) du corps d'une requête au format XML.
2508 Une valeur de <code>0</code> signifie qu'aucune limite n'est
2514 LimitXMLRequestBody 0
2518 </directivesynopsis>
2520 <directivesynopsis type="section">
2521 <name>Location</name>
2522 <description>N'applique les directives contenues qu'aux URLs
2523 spécifiées</description>
2524 <syntax><Location
2525 <var>chemin URL</var>|<var>URL</var>> ... </Location></syntax>
2526 <contextlist><context>server config</context><context>virtual
2531 <p>La directive <directive type="section">Location</directive>
2532 limite la portée des directives contenues aux URLs définies par
2533 l'argument URL. Elle est similaire à la directive <directive
2534 type="section" module="core">Directory</directive>, et marque le
2535 début d'une section qui se termine par une directive
2536 <code></Location></code>. Les sections <directive
2537 type="section">Location</directive> sont traitées selon l'ordre dans
2538 lequel elles apparaissent dans le fichier de configuration, mais
2539 après les sections <directive
2540 type="section" module="core">Directory</directive> et la lecture des
2541 fichiers <code>.htaccess</code>, et après les sections <directive
2542 type="section" module="core">Files</directive>.</p>
2544 <p>Les sections <directive type="section">Location</directive>
2545 agissent complètement en dehors du système de fichiers. Ceci a de
2546 nombreuses conséquences. Parmi les plus importantes, on ne doit pas
2547 utiliser les sections <directive type="section">Location</directive>
2548 pour contrôler l'accès aux répertoires du système de fichiers. Comme
2549 plusieurs URLs peuvent correspondre au même répertoire du système de
2550 fichiers, un tel contrôle d'accès pourrait être contourné.</p>
2552 <p>Les directives que contient cette section seront appliquées aux
2553 requêtes si la partie chemin de l'URL satisfait à l'un au moins de
2554 ces critères :
2557 <li>Le chemin spécifié correspond exactement à la partie chemin de
2560 <li>Le chemin spécifié, qui se termine par un slash, est un
2561 préfixe de la partie chemin de l'URL (traité comme une racine du
2564 <li>Le chemin spécifié, si on lui ajoute un slash de fin, est un
2565 préfixe de la partie chemin de l'URL (aussi traité comme une racine du
2570 Dans l'exemple ci-dessous, où aucun slash de fin n'est utilisé, les
2571 directives contenues dans la section s'appliqueront à /private1,
2572 /private1/ et /private1/file.txt, mais pas à /private1other.
2575 <Location /private1>
2579 De même, dans l'exemple ci-dessous, où l'on utilise un slash de fin, les
2580 directives contenues dans la section s'appliqueront à /private2/ et
2581 à /private2/file.txt, mais pas à /private2other.
2584 <Location /private2<em>/</em>>
2588 <note><title>Quand utiliser la section <directive
2589 type="section">Location</directive></title>
2591 <p>Vous pouvez utiliser une section <directive
2592 type="section">Location</directive> pour appliquer des directives à
2593 des contenus situés en dehors du système de fichiers. Pour les
2594 contenus situés à l'intérieur du système de fichiers, utilisez
2595 plutôt les sections <directive
2596 type="section" module="core">Directory</directive> et <directive
2597 type="section" module="core">Files</directive>. <code><Location
2598 /></code> constitue une exception et permet d'appliquer aisément
2599 une configuration à l'ensemble du serveur.</p>
2602 <p>Pour toutes les requêtes originales (non mandatées), l'argument
2603 URL est un chemin d'URL de la forme
2604 <code>/chemin/</code>. <em>Aucun protocole, nom d'hôte, port, ou chaîne
2605 de requête ne doivent apparaître.</em> Pour les requêtes mandatées, l'URL
2606 spécifiée doit être de la forme
2607 <code>protocole://nom_serveur/chemin</code>, et vous devez inclure
2608 le préfixe.</p>
2610 <p>L'URL peut contenir des caractères génériques. Dans une chaîne
2611 avec caractères génériques, <code>?</code> correspond à un caractère
2612 quelconque, et <code>*</code> à toute chaîne de caractères. Les
2613 caractères génériques ne peuvent pas remplacer un / dans le chemin
2616 <p>On peut aussi utiliser les <glossary ref="regex">Expressions
2617 rationnelles</glossary>, moyennant l'addition d'un caractère
2618 <code>~</code>. Par exemple :</p>
2621 <Location ~ "/(extra|special)/data">
2624 <p>concernerait les URLs contenant les sous-chaîne
2625 <code>/extra/data</code> ou <code>/special/data</code>. La directive
2626 <directive type="section" module="core">LocationMatch</directive>
2627 présente un comportement identique à la version avec expressions
2628 rationnelles de la directive <directive
2629 type="section">Location</directive>, et son utilisation est
2630 préférable à l'utilisation de cette dernière pour la simple raison
2631 qu'il est difficile de distinguer <code>~</code> de <code>-</code>
2632 dans la plupart des fontes.</p>
2634 <p>La directive <directive type="section">Location</directive>
2635 s'utilise principalement avec la directive <directive
2636 module="core">SetHandler</directive>. Par exemple, pour activer les
2637 requêtes d'état, mais ne les autoriser que depuis des navigateurs
2638 appartenant au domaine <code>example.com</code>, vous pouvez
2642 <Location /status><br />
2644 SetHandler server-status<br />
2645 Require host example.com<br />
2650 <note><title>Note à propos du slash (/)</title>
2651 <p>La signification du caractère slash dépend de l'endroit où il
2652 se trouve dans l'URL. Les utilisateurs peuvent être habitués à
2653 son comportement dans le système de fichiers où plusieurs slashes
2654 successifs sont souvent réduits à un slash unique (en d'autres
2655 termes, <code>/home///foo</code> est identique à
2656 <code>/home/foo</code>). Dans l'espace de nommage des URLs, ce
2657 n'est cependant pas toujours le cas. Pour la directive <directive
2658 type="section" module="core">LocationMatch</directive> et la
2659 version avec expressions rationnelles de la directive <directive
2660 type="section">Location</directive>, vous devez spécifier
2661 explicitement les slashes multiples si telle est votre
2664 <p>Par exemple, <code><LocationMatch ^/abc></code> va
2665 correspondre à l'URL <code>/abc</code> mais pas à l'URL <code>
2666 //abc</code>. La directive <directive type="section"
2667 >Location</directive> sans expression rationnelle se comporte de
2668 la même manière lorsqu'elle est utilisée pour des requêtes
2669 mandatées. Par contre, lorsque la directive <directive
2670 type="section">Location</directive> sans expression rationnelle
2671 est utilisée pour des requêtes non mandatées, elle fera
2672 correspondre implicitement les slashes multiples à des slashes
2673 uniques. Par exemple, si vous spécifiez <code><Location
2674 /abc/def></code>, une requête de la forme
2675 <code>/abc//def</code> correspondra.</p>
2678 <seealso><a href="../sections.html">Comment fonctionnent les sections
2679 <Directory>, <Location> et <Files></a> pour une
2680 explication de la manière dont ces différentes sections se combinent
2681 entre elles à la réception d'une requête.</seealso>
2682 </directivesynopsis>
2684 <directivesynopsis type="section">
2685 <name>LocationMatch</name>
2686 <description>N'applique les directives contenues qu'aux URLs
2687 correspondant à une expression rationnelle</description>
2688 <syntax><LocationMatch
2689 <var>regex</var>> ... </LocationMatch></syntax>
2690 <contextlist><context>server config</context><context>virtual
2695 <p>La directive <directive type="section">LocationMatch</directive>
2696 limite la portée des directives contenues à l'URL spécifiée, de
2697 manière identique à la directive <directive module="core"
2698 type="section">Location</directive>. Mais son argument permettant de
2699 spécifier les URLs concernées est une <glossary
2700 ref="regex">expression rationnelle</glossary> au lieu d'une simple
2701 chaîne de caractères. Par exemple :</p>
2704 <LocationMatch "/(extra|special)/data">
2707 <p>correspondrait à toute URL contenant les sous-chaînes
2708 <code>/extra/data</code> ou <code>/special/data</code>.</p>
2710 <seealso><a href="../sections.html">Comment fonctionnent les sections
2711 <Directory>, <Location> et <Files></a> pour une
2712 explication de la manière dont ces différentes sections se combinent
2713 entre elles à la réception d'une requête.</seealso>
2714 </directivesynopsis>
2717 <name>LogLevel</name>
2718 <description>Contrôle la verbosité du journal des erreurs</description>
2719 <syntax>LogLevel [<var>module</var>:]<var>niveau</var>
2720 [<var>module</var>:<var>niveau</var>] ...
2722 <default>LogLevel warn</default>
2723 <contextlist><context>server config</context><context>virtual
2724 host</context><context>directory</context>
2726 <compatibility>La configuration du niveau de journalisation par module
2727 et par répertoire est disponible depuis la version 2.3.6 du serveur HTTP
2728 Apache</compatibility>
2730 <p>La directive <directive>LogLevel</directive> permet d'ajuster la
2731 verbosité des messages enregistrés dans les journaux d'erreur (voir
2732 la directive <directive module="core">ErrorLog</directive>
2733 directive). Les <var>niveau</var>x disponibles sont présentés
2734 ci-après, par ordre de criticité décroissante :</p>
2737 <columnspec><column width=".2"/><column width=".3"/><column width=".5"/>
2740 <th><strong>Niveau</strong> </th>
2742 <th><strong>Description</strong> </th>
2744 <th><strong>Exemple</strong> </th>
2748 <td><code>emerg</code> </td>
2750 <td>Urgences - le système est inutilisable.</td>
2752 <td>"Child cannot open lock file. Exiting"</td>
2756 <td><code>alert</code> </td>
2758 <td>Des mesures doivent être prises immédiatement.</td>
2760 <td>"getpwuid: couldn't determine user name from uid"</td>
2764 <td><code>crit</code> </td>
2766 <td>Conditions critiques.</td>
2768 <td>"socket: Failed to get a socket, exiting child"</td>
2772 <td><code>error</code> </td>
2776 <td>"Premature end of script headers"</td>
2780 <td><code>warn</code> </td>
2782 <td>Avertissements.</td>
2784 <td>"child process 1234 did not exit, sending another
2789 <td><code>notice</code> </td>
2791 <td>Evènement important mais normal.</td>
2793 <td>"httpd: caught SIGBUS, attempting to dump core in
2798 <td><code>info</code> </td>
2800 <td>Informations.</td>
2802 <td>"Server seems busy, (you may need to increase
2803 StartServers, or Min/MaxSpareServers)..."</td>
2807 <td><code>debug</code> </td>
2809 <td>Messages de débogage.</td>
2811 <td>"Opening config file ..."</td>
2814 <td><code>trace1</code> </td>
2816 <td>Messages de traces</td>
2818 <td>"proxy: FTP: control connection complete"</td>
2821 <td><code>trace2</code> </td>
2823 <td>Messages de traces</td>
2825 <td>"proxy: CONNECT: sending the CONNECT request to the remote proxy"</td>
2828 <td><code>trace3</code> </td>
2830 <td>Messages de traces</td>
2832 <td>"openssl: Handshake: start"</td>
2835 <td><code>trace4</code> </td>
2837 <td>Messages de traces</td>
2839 <td>"read from buffered SSL brigade, mode 0, 17 bytes"</td>
2842 <td><code>trace5</code> </td>
2844 <td>Messages de traces</td>
2846 <td>"map lookup FAILED: map=rewritemap key=keyname"</td>
2849 <td><code>trace6</code> </td>
2851 <td>Messages de traces</td>
2853 <td>"cache lookup FAILED, forcing new map lookup"</td>
2856 <td><code>trace7</code> </td>
2858 <td>Messages de traces, enregistrement d'une grande quantité de
2861 <td>"| 0000: 02 23 44 30 13 40 ac 34 df 3d bf 9a 19 49 39 15 |"</td>
2864 <td><code>trace8</code> </td>
2866 <td>Messages de traces, enregistrement d'une grande quantité de
2869 <td>"| 0000: 02 23 44 30 13 40 ac 34 df 3d bf 9a 19 49 39 15 |"</td>
2873 <p>Lorsqu'un niveau particulier est spécifié, les messages de tous
2874 les autres niveaux de criticité supérieure seront aussi enregistrés.
2875 <em>Par exemple</em>, si <code>LogLevel info</code> est spécifié,
2876 les messages de niveaux <code>notice</code> et <code>warn</code>
2877 seront aussi émis.</p>
2879 <p>Il est recommandé d'utiliser un niveau <code>crit</code> ou
2880 inférieur.</p>
2882 <p>Par exemple :</p>
2888 <note><title>Note</title>
2889 <p>Si la journalisation s'effectue directement dans un fichier,
2890 les messages de niveau <code>notice</code> ne peuvent pas être
2891 supprimés et sont donc toujours journalisés. Cependant, ceci ne
2892 s'applique pas lorsque la journalisation s'effectue vers
2893 <code>syslog</code>.</p>
2896 <p>Spécifier un niveau sans nom de module va attribuer ce niveau à
2897 tous les modules. Spécifier un niveau avec nom de module va
2898 attribuer ce niveau à ce module seulement. Il est possible de
2899 spécifier un module par le nom de son fichier source ou par son
2900 identificateur, avec ou sans le suffixe <code>_module</code>. Les
2901 trois spécifications suivantes sont donc équivalentes :</p>
2904 LogLevel info ssl:warn<br />
2905 LogLevel info mod_ssl.c:warn<br />
2906 LogLevel info ssl_module:warn<br />
2909 <p>Il est aussi possible d'attribuer un niveau de journalisation par
2910 répertoire :</p>
2914 <Directory /usr/local/apache/htdocs/app><br />
2915 LogLevel debug<br />
2920 La configuration du niveau de journalisation par répertoire
2921 n'affecte que les messages journalisés après l'interprétation de
2922 la requête et qui sont associés à cette dernière. Les messages
2923 de journalisation associés à la connexion ou au serveur ne sont
2924 pas affectés.
2927 </directivesynopsis>
2930 <name>MaxKeepAliveRequests</name>
2931 <description>Nombre de requêtes permises pour une connexion
2932 persistante</description>
2933 <syntax>MaxKeepAliveRequests <var>nombre</var></syntax>
2934 <default>MaxKeepAliveRequests 100</default>
2935 <contextlist><context>server config</context><context>virtual
2940 <p>La directive <directive>MaxKeepAliveRequests</directive> permet
2941 de limiter le nombre de requêtes autorisées par connexion lorsque
2942 <directive module="core" >KeepAlive</directive> est à "on". Si sa
2943 valeur est <code>0</code>, le nombre de requêtes autorisées est
2944 illimité. Il est recommandé de définir une valeur assez haute pour
2945 des performances du serveur maximales.</p>
2947 <p>Par exemple :</p>
2950 MaxKeepAliveRequests 500
2953 </directivesynopsis>
2957 <description>Définit les mécanismes de mutex et le repertoire du fichier
2958 verrou pour tous les mutex ou seulement les mutex spécifiés</description>
2959 <syntax>Mutex <var>mécanisme</var> [default|<var>nom-mutex</var>] ... [OmitPID]</syntax>
2960 <default>Mutex default</default>
2961 <contextlist><context>server config</context></contextlist>
2962 <compatibility>Disponible depuis la version 2.3.4 du serveur HTTP Apache</compatibility>
2965 <p>La directive <directive>Mutex</directive> permet de définir le
2966 mécanisme de mutex, et éventuellement le répertoire du fichier
2967 verrou que les modules et httpd utilisent pour sérialiser l'accès aux
2968 ressources. Spécifiez <code>default</code> comme premier argument
2969 pour modifier la configuration de tous les mutex ; spécifiez un nom
2970 de mutex (voir la table ci-dessous) comme premier argument pour
2971 ne modifier que la configuration de ce mutex.</p>
2973 <p>La directive <directive>Mutex</directive> est typiquement
2974 utilisée dans les situations exceptionnelles suivantes :</p>
2977 <li>choix d'un autre mécanisme de mutex lorsque le mécanisme par
2978 défaut sélectionné par <glossary>APR</glossary> présente un
2979 problème de fonctionnement ou de performances.</li>
2981 <li>choix d'un autre répertoire utilisé par les mutex à base de
2982 fichier lorsque le répertoire par défaut ne supporte pas le
2986 <note><title>Modules supportés</title>
2987 <p>Cette directive ne configure que les mutex qui ont été
2988 enregistrés avec le serveur de base via l'API
2989 <code>ap_mutex_register()</code>. Tous les modules fournis avec
2990 httpd supportent la directive <directive>Mutex</directive>, mais il
2991 n'en sera pas forcément de même pour les modules tiers.
2992 Reportez-vous à la documentation du module tiers considéré afin de
2993 déterminer le(s) nom(s) de mutex qui pourront être définis si la
2994 directive est supportée.</p>
2999 <p>Les <em>mécanismes</em> de mutex disponibles sont les suivants :</p>
3001 <li><code>default | yes</code>
3002 <p>C'est l'implémentation du verrouillage par défaut, telle
3003 qu'elle est définie par <glossary>APR</glossary>. On peut
3004 afficher l'implémentation du verrouillage par défaut via la
3005 commande <program>httpd</program> avec l'option <code>-V</code>.</p></li>
3007 <li><code>none | no</code>
3008 <p>Le mutex est désactivé, et cette valeur n'est permise pour un
3009 mutex que si le module indique qu'il s'agit d'un choix valide.
3010 Consultez la documentation du module pour plus d'informations.</p></li>
3012 <li><code>posixsem</code>
3013 <p>Une variante de mutex basée sur un sémaphore Posix.</p>
3015 <note type="warning"><title>Avertissement</title>
3016 <p>La propriété du sémaphore n'est pas restituée si un thread du
3017 processus gérant le mutex provoque une erreur de segmentation,
3018 ce qui provoquera un blocage du serveur web.</p>
3022 <li><code>sysvsem</code>
3023 <p>Une variante de mutex basée sur un sémaphore IPC SystemV.</p>
3025 <note type="warning"><title>Avertissement</title>
3026 <p>Il peut arriver que les sémaphores SysV soient conservés si le
3027 processus se crashe avant que le sémaphore ne soit supprimé.</p>
3030 <note type="warning"><title>Sécurité</title>
3031 <p>L'API des sémaphores permet les attaques par déni de service
3032 par tout programme CGI s'exécutant sous le même uid que le
3033 serveur web (autrement dit tous les programmes CGI, à moins que
3034 vous n'utilisiez un programme du style <program>suexec</program>
3035 ou <code>cgiwrapper</code>).</p>
3039 <li><code>sem</code>
3040 <p>Sélection de la "meilleure" implémentation des sémaphores
3041 disponible ; le choix s'effectue entre les sémaphores posix et
3042 IPC SystemV, dans cet ordre.</p></li>
3044 <li><code>pthread</code>
3045 <p>Une variante de mutex à base de mutex de thread Posix
3046 inter-processus.</p>
3048 <note type="warning"><title>Avertissement</title>
3049 <p>Sur la plupart des systèmes, si un processus enfant se
3050 termine anormalement alors qu'il détenait un mutex qui utilise
3051 cette implémentation, le serveur va se bloquer et cesser de
3052 répondre aux requêtes. Dans ce cas, un redémarrage manuel est
3053 nécessaire pour récupérer le mutex.</p>
3054 <p>Solaris constitue une exception notable, en ceci qu'il fournit
3055 un mécanisme qui permet en général de récupérer le mutex après
3056 l'arrêt anormal d'un processus enfant qui détenait le mutex.</p>
3057 <p>Si votre système implémente la fonction
3058 <code>pthread_mutexattr_setrobust_np()</code>, vous devriez
3059 pouvoir utiliser l'option <code>pthread</code> sans problème.</p>
3063 <li><code>fcntl:/chemin/vers/mutex</code>
3064 <p>Une variante de mutex utilisant un fichier verrou physique et
3065 la fonction <code>fcntl()</code>.</p>
3067 <note type="warning"><title>Avertissement</title>
3068 <p>Lorsqu'on utilise plusieurs mutex basés sur ce mécanisme dans
3069 un environnement multi-processus, multi-thread, des erreurs de
3070 blocage (EDEADLK) peuvent être rapportées pour des opérations de
3071 mutex valides si la fonction <code>fcntl()</code> ne gère pas
3072 les threads, comme sous Solaris.</p>
3076 <li><code>flock:/chemin/vers/mutex</code>
3077 <p>Méthode similaire à <code>fcntl:/chemin/vers/mutex</code>,
3078 mais c'est la fonction <code>flock()</code> qui est utilisée
3079 pour gérer le verrouillage par fichier.</p></li>
3081 <li><code>file:/chemin/vers/mutex</code>
3082 <p>Sélection de la "meilleure" implémentation de verrouillage
3083 par fichier disponible ; le choix s'effectue entre
3084 <code>fcntl</code> et <code>flock</code>, dans cet ordre.</p></li>
3087 <p>La plupart des mécanismes ne sont disponibles que sur les
3088 plate-formes où ces dernières et <glossary>APR</glossary> les
3089 supportent. Les mécanismes qui ne sont pas disponibles sur toutes
3090 les plate-formes sont <em>posixsem</em>,
3091 <em>sysvsem</em>, <em>sem</em>, <em>pthread</em>, <em>fcntl</em>,
3092 <em>flock</em>, et <em>file</em>.</p>
3094 <p>Avec les mécanismes à base de fichier <em>fcntl</em> et
3095 <em>flock</em>, le chemin, s'il est fourni, est un répertoire dans
3096 lequel le fichier verrou sera créé. Le répertoire par défaut est le
3097 répertoire httpd défini par la directive <directive
3098 module="core">ServerRoot</directive>. Utilisez toujours un système
3099 de fichiers local sur disque pour <code>/chemin/vers/mutex</code> et
3100 jamais un répertoire se trouvant dans un système de fichiers NFS ou
3101 AFS. Le nom de base du fichier se composera du type de mutex, d'une
3102 chaîne optionnelle correspondant à l'instance et fournie par le
3103 module ; et, sauf si le mot-clé <code>OmitPID</code> a été spécifié,
3104 l'identificateur du processus parent httpd sera ajouté afin de
3105 rendre le nom du fichier unique, évitant ainsi tout conflit lorsque
3106 plusieurs instances d'httpd partagent le même répertoire de
3107 verrouillage. Par exemple, si le nom de mutex est
3108 <code>mpm-accept</code>, et si le répertoire de verrouillage est
3109 <code>/var/httpd/locks</code>, le nom du fichier verrou pour
3110 l'instance httpd dont le processus parent a pour identifiant 12345
3111 sera <code>/var/httpd/locks/mpm-accept.12345</code>.</p>
3113 <note type="warning"><title>Sécurité</title>
3114 <p>Il est conseillé d'<em>éviter</em> de placer les fichiers mutex
3115 dans un répertoire où tout le monde peut écrire comme
3116 <code>/var/tmp</code>, car quelqu'un pourrait initier une attaque
3117 par déni de service et empêcher le serveur de démarrer en créant un
3118 fichier verrou possédant un nom identique à celui que le serveur va
3119 tenter de créer.</p>
3122 <p>La table suivante décrit les noms de mutex utilisés par httpd et
3123 ses modules associés.</p>
3125 <table border="1" style="zebra">
3129 <th>Ressource protégée</th>
3132 <td><code>mpm-accept</code></td>
3133 <td>modules MPM <module>prefork</module> et <module>worker</module></td>
3134 <td>connexions entrantes, afin d'éviter le problème de
3135 l'afflux de requêtes ; pour plus d'informations, voir la
3137 href="../misc/perf-tuning.html">Amélioration des
3138 performances</a></td>
3141 <td><code>authdigest-client</code></td>
3142 <td><module>mod_auth_digest</module></td>
3143 <td>liste de clients en mémoire partagée</td>
3146 <td><code>authdigest-opaque</code></td>
3147 <td><module>mod_auth_digest</module></td>
3148 <td>compteur en mémoire partagée</td>
3151 <td><code>ldap-cache</code></td>
3152 <td><module>mod_ldap</module></td>
3153 <td>cache de résultat de recherche LDAP</td>
3156 <td><code>rewrite-map</code></td>
3157 <td><module>mod_rewrite</module></td>
3158 <td>communication avec des programmes externes
3159 d'associations de valeurs, afin d'éviter les interférences
3160 d'entrées/sorties entre plusieurs requêtes</td>
3163 <td><code>ssl-cache</code></td>
3164 <td><module>mod_ssl</module></td>
3165 <td>cache de session SSL</td>
3168 <td><code>ssl-stapling</code></td>
3169 <td><module>mod_ssl</module></td>
3170 <td>cache de l'étiquetage OCSP ("OCSP stapling")</td>
3173 <td><code>watchdog-callback</code></td>
3174 <td><module>mod_watchdog</module></td>
3175 <td>fonction de rappel d'un module client particulier</td>
3179 <p>Le mot-clé <code>OmitPID</code> permet d'empêcher l'addition de
3180 l'identifiant du processus httpd parent au nom du fichier verrou.</p>
3183 <p>Dans l'exemple suivant, le mécanisme de mutex pour le mutex
3184 mpm-accept est modifié pour passer du mécanisme par défaut au
3185 mécanisme <code>fcntl</code>, avec le fichier verrou associé créé
3186 dans le répertoire <code>/var/httpd/locks</code>. Le mécanisme de
3187 mutex par défaut pour tous les autres mutex deviendra
3188 <code>sysvsem</code>.</p>
3191 Mutex default sysvsem<br />
3192 Mutex mpm-accept fcntl:/var/httpd/locks
3195 </directivesynopsis>
3198 <name>NameVirtualHost</name>
3199 <description>Définit une adresse IP pour les serveurs virtuels à base de
3201 <syntax>NameVirtualHost <var>adresse</var>[:<var>port</var>]</syntax>
3202 <contextlist><context>server config</context></contextlist>
3206 <p>Avant la version 2.3.11, il était nécessaire de définir une
3207 directive <directive>NameVirtualHost</directive> pour indiquer au
3208 serveur qu'une paire adresse IP/port particulière pouvait être
3209 utilisée comme serveur virtuel à base de nom. Depuis la version
3210 2.3.11, chaque fois qu'une paire adresse IP/port est utilisée dans
3211 plusieurs serveurs virtuels, l'hébergement virtuel à base de nom est
3212 automatiquement activé pour cette adresse.</p>
3214 <p>Cette directive n'a actuellement plus aucun effet.</p>
3217 <seealso><a href="../vhosts/">Documentation sur les serveurs
3218 virtuels</a></seealso>
3220 </directivesynopsis>
3223 <name>Options</name>
3224 <description>Définit les fonctionnalités disponibles pour un répertoire
3225 particulier</description>
3227 [+|-]<var>option</var> [[+|-]<var>option</var>] ...</syntax>
3228 <default>Options FollowSymlinks</default>
3229 <contextlist><context>server config</context><context>virtual
3231 <context>directory</context><context>.htaccess</context>
3233 <override>Options</override>
3234 <compatibility>Avec la version 2.3.11, la valeur par défaut passe de All
3235 à FollowSymlinks</compatibility>
3238 <p>La directive <directive>Options</directive> permet de définir
3239 les fonctionnalités de serveur disponibles pour un répertoire
3242 <p><var>option</var> peut être défini à <code>None</code>, auquel
3243 cas aucune fonctionnalité spécifique n'est activée, ou comprendre
3244 une ou plusieurs des options suivantes :</p>
3247 <dt><code>All</code></dt>
3249 <dd>Toutes les options excepté <code>MultiViews</code>.</dd>
3251 <dt><code>ExecCGI</code></dt>
3253 <dd>L'exécution de scripts CGI à l'aide du module
3254 <module>mod_cgi</module> est permise.</dd>
3256 <dt><code>FollowSymLinks</code></dt>
3260 Le serveur va suivre les liens symboliques dans le répertoire
3261 concerné. Il s'agit de la valeur par défaut.
3263 <p>Bien que le serveur suive les liens symboliques, il ne modifie
3264 <em>pas</em> le nom de chemin concerné défini par la section
3265 <directive type="section"
3266 module="core">Directory</directive>.</p>
3267 <p>Notez aussi que cette option <strong>est ignorée</strong> si
3268 elle est définie dans une section <directive type="section"
3269 module="core">Location</directive>.</p>
3270 <p>Le fait d'omettre cette option ne doit pas être considéré comme
3271 une mesure de sécurité efficace, car il existe toujours une
3272 situation de compétition (race condition) entre l'instant où l'on
3273 vérifie qu'un chemin n'est pas un lien symbolique, et l'instant où
3274 l'on utilise effectivement ce chemin.</p>
3277 <dt><code>Includes</code></dt>
3280 Les inclusions côté serveur (SSI) à l'aide du module
3281 <module>mod_include</module> sont autorisées.</dd>
3283 <dt><code>IncludesNOEXEC</code></dt>
3287 Les inclusions côté serveur (SSI) sont permises, mais <code>#exec
3288 cmd</code> et <code>#exec cgi</code> sont désactivés.
3289 L'utilisation de <code>#include virtual</code> pour les scripts
3290 CGI est cependant toujours possible depuis des répertoires
3291 définis par <directive
3292 module="mod_alias">ScriptAlias</directive>.</dd>
3294 <dt><code>Indexes</code></dt>
3297 Si une URL requise correspond au répertoire concerné, et si aucun
3298 <directive module="mod_dir">DirectoryIndex</directive> (<em>par
3299 exemple</em> <code>index.html</code>) n'est défini pour ce
3300 répertoire, le module <module>mod_autoindex</module> va renvoyer
3301 un listing formaté du répertoire.</dd>
3303 <dt><code>MultiViews</code></dt>
3306 Les vues multiples ("multiviews") à <a
3307 href="../content-negotiation.html">contenu négocié</a> à l'aide du
3308 module <module>mod_negotiation</module> sont autorisées.
3309 <note><title>Note</title> <p>Cette option est ignorée si elle est
3310 définie en tout autre endroit qu'une section <directive
3311 module="core" type="section">Directory</directive>, car
3312 <module>mod_negotiation</module> a besoin de ressources réelles
3313 pour effectuer ses comparaisons et ses évaluations.</p></note>
3317 <dt><code>SymLinksIfOwnerMatch</code></dt>
3319 <dd>Le serveur ne suivra que les liens symboliques qui renvoient
3320 vers un fichier ou un répertoire dont le propriétaire est le même
3323 <note><title>Note</title> <p>Cette option est ignorée si elle est
3324 définie dans une section <directive module="core"
3325 type="section">Location</directive>.</p>
3326 <p>Le fait d'omettre cette option ne doit pas être considéré comme
3327 une mesure de sécurité efficace, car il existe toujours une
3328 situation de compétition (race condition) entre l'instant où l'on
3329 vérifie qu'un chemin n'est pas un lien symbolique, et l'instant où
3330 l'on utilise effectivement ce chemin.</p></note>
3334 <p>Normalement, si plusieurs directives
3335 <directive>Options</directive> peuvent s'appliquer à un répertoire,
3336 c'est la plus spécifique qui est utilisée et les autres sont
3337 ignorées ; les options ne sont pas fusionnées (voir <a
3338 href="../sections.html#mergin">comment les sections sont
3339 fusionnées</a>). Elles le sont cependant si <em>toutes</em> les
3340 options de la directive <directive>Options</directive> sont
3341 précédées d'un symbole <code>+</code> ou <code>-</code>. Toute
3342 option précédée d'un <code>+</code> est ajoutée à la liste des
3343 options courantes de manière forcée et toute option précédée d'un
3344 <code>-</code> est supprimée de la liste des options courantes de la
3345 même manière.</p>
3347 <note><title>Note</title>
3348 <p>Mélanger des <directive>Options</directive> avec <code>+</code>
3349 ou <code>-</code> avec des <directive>Options</directive> sans
3350 <code>+</code> ou <code>-</code> constitue une erreur de syntaxe, et
3351 la vérification de la syntaxe au cours du démarrage du serveur fera
3352 échouer ce dernier.</p>
3355 <p>Par exemple, sans aucun symbole <code>+</code> et <code>-</code>
3359 <Directory /web/docs><br />
3361 Options Indexes FollowSymLinks<br />
3363 </Directory><br />
3365 <Directory /web/docs/spec><br />
3367 Options Includes<br />
3372 <p>ici, seule l'option <code>Includes</code> sera prise en compte
3373 pour le répertoire <code>/web/docs/spec</code>. Par contre, si la
3374 seconde directive <directive>Options</directive> utilise les
3375 symboles <code>+</code> et <code>-</code> :</p>
3378 <Directory /web/docs><br />
3380 Options Indexes FollowSymLinks<br />
3382 </Directory><br />
3384 <Directory /web/docs/spec><br />
3386 Options +Includes -Indexes<br />
3391 <p>alors, les options <code>FollowSymLinks</code> et
3392 <code>Includes</code> seront prises en compte pour le répertoire
3393 <code>/web/docs/spec</code>.</p>
3395 <note><title>Note</title>
3396 <p>L'utilisation de <code>-IncludesNOEXEC</code> ou
3397 <code>-Includes</code> désactive complètement les inclusions côté
3398 serveur sans tenir compte des définitions précédentes.</p>
3401 <p>En l'absence de toute définition d'options, la valeur par défaut
3402 est <code>FollowSymlinks</code>.</p>
3404 </directivesynopsis>
3407 <name>Protocol</name>
3408 <description>Protocole pour une socket d'écoute</description>
3409 <syntax>Protocol <var>protocole</var></syntax>
3410 <contextlist><context>server config</context><context>virtual host</context></contextlist>
3411 <compatibility>Disponible depuis la version 2.1.5 d'Apache, mais
3412 seulement depuis la version 2.3.3 sous Windows.</compatibility>
3415 <p>Cette directive permet de spécifier le protocole utilisé pour une
3416 socket d'écoute particulière. Le protocole sert à déterminer quel
3417 module doit traiter une requête, et d'appliquer les optimisations
3418 spécifiques au protocole via la directive
3419 <directive>AcceptFilter</directive>.</p>
3421 <p>Vous ne devez définir le protocole que si vous travaillez avec
3422 des ports non standards ; dans le cas général, le protocole
3423 <code>http</code> est associé au port 80 et le protocole
3424 <code>https</code> au port 443.</p>
3426 <p>Par exemple, si vous travaillez avec le protocole
3427 <code>https</code> sur un port non standard, spécifiez le protocole
3428 de manière explicite :</p>
3434 <p>Vous pouvez aussi spécifier le protocole via la directive
3435 <directive module="mpm_common">Listen</directive>.</p>
3437 <seealso><directive>AcceptFilter</directive></seealso>
3438 <seealso><directive module="mpm_common">Listen</directive></seealso>
3439 </directivesynopsis>
3443 <name>RLimitCPU</name>
3444 <description>Limite le temps CPU alloué aux processus initiés par les
3445 processus enfants d'Apache httpd</description>
3446 <syntax>RLimitCPU <var>secondes</var>|max [<var>secondes</var>|max]</syntax>
3447 <default>Non défini ; utilise les valeurs par défaut du système
3448 d'exploitation</default>
3449 <contextlist><context>server config</context><context>virtual
3451 <context>directory</context><context>.htaccess</context></contextlist>
3452 <override>All</override>
3455 <p>Prend 1 ou 2 paramètres. Le premier definit la limite de
3456 consommation de ressources pour tous les processus, et le second la
3457 consommation de ressources maximale. Les deux paramètres peuvent
3458 contenir soit un nombre, soit <code>max</code> pour indiquer au
3459 serveur que la limite de consommation correspond à la valeur
3460 maximale autorisée par la configuration du système d'exploitation.
3461 Pour augmenter la consommation maximale de ressources, le serveur
3462 doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa
3463 phase de démarrage.</p>
3465 <p>Cette directive s'applique aux processus initiés par les
3466 processus enfants d'Apache httpd qui traitent les requêtes, et non aux
3467 processus enfants eux-mêmes. Sont concernés les scripts CGI et les
3468 commandes exec des SSI, mais en aucun cas les processus initiés par
3469 le processus parent d'Apache httpd comme les journalisations redirigées
3470 vers un programme.</p>
3472 <p>Les limites de ressources CPU sont exprimées en secondes par
3475 <seealso><directive module="core">RLimitMEM</directive></seealso>
3476 <seealso><directive module="core">RLimitNPROC</directive></seealso>
3477 </directivesynopsis>
3480 <name>RLimitMEM</name>
3481 <description>Limite la mémoire allouée aux processus initiés par les
3482 processus enfants d'Apache httpd</description>
3483 <syntax>RLimitMEM <var>octets</var>|max [<var>octets</var>|max]</syntax>
3484 <default>Non défini ; utilise les valeurs par défaut du système
3485 d'exploitation</default>
3486 <contextlist><context>server config</context><context>virtual
3488 <context>directory</context><context>.htaccess</context></contextlist>
3489 <override>All</override>
3492 <p>Prend 1 ou 2 paramètres. Le premier definit la limite de
3493 consommation de ressources pour tous les processus, et le second la
3494 consommation de ressources maximale. Les deux paramètres peuvent
3495 contenir soit un nombre, soit <code>max</code> pour indiquer au
3496 serveur que la limite de consommation correspond à la valeur
3497 maximale autorisée par la configuration du système d'exploitation.
3498 Pour augmenter la consommation maximale de ressources, le serveur
3499 doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa
3500 phase de démarrage.</p>
3502 <p>Cette directive s'applique aux processus initiés par les
3503 processus enfants d'Apache httpd qui traitent les requêtes, et non aux
3504 processus enfants eux-mêmes. Sont concernés les scripts CGI et les
3505 commandes exec des SSI, mais en aucun cas les processus initiés par
3506 le processus parent d'Apache httpd comme les journalisations redirigées
3507 vers un programme.</p>
3509 <p>Les limites de ressources mémoire sont exprimées en octets par
3512 <seealso><directive module="core">RLimitCPU</directive></seealso>
3513 <seealso><directive module="core">RLimitNPROC</directive></seealso>
3514 </directivesynopsis>
3517 <name>RLimitNPROC</name>
3518 <description>Limite le nombre de processus qui peuvent être initiés par
3519 les processus initiés par les processus enfants d'Apache httpd</description>
3520 <syntax>RLimitNPROC <var>nombre</var>|max [<var>nombre</var>|max]</syntax>
3521 <default>Unset; uses operating system defaults</default>
3522 <contextlist><context>server config</context><context>virtual
3524 <context>directory</context><context>.htaccess</context></contextlist>
3525 <override>All</override>
3528 <p>Prend 1 ou 2 paramètres. Le premier definit la limite de
3529 consommation de ressources pour tous les processus, et le second la
3530 consommation de ressources maximale. Les deux paramètres peuvent
3531 contenir soit un nombre, soit <code>max</code> pour indiquer au
3532 serveur que la limite de consommation correspond à la valeur
3533 maximale autorisée par la configuration du système d'exploitation.
3534 Pour augmenter la consommation maximale de ressources, le serveur
3535 doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa
3536 phase de démarrage.</p>
3538 <p>Cette directive s'applique aux processus initiés par les
3539 processus enfants d'Apache httpd qui traitent les requêtes, et non aux
3540 processus enfants eux-mêmes. Sont concernés les scripts CGI et les
3541 commandes exec des SSI, mais en aucun cas les processus initiés par
3542 le processus parent d'Apache httpd comme les journalisations redirigées
3543 vers un programme.</p>
3545 <p>Les limites des processus contrôlent le nombre de processus par
3548 <note><title>Note</title>
3549 <p>Si les processus CGI s'exécutent sous le même
3550 utilisateur que celui du serveur web, cette
3551 directive va limiter le nombre de processus que le serveur
3552 pourra lui-même créer. La présence de messages
3553 <strong><code>cannot fork</code></strong> dans le journal des
3554 erreurs indiquera que la limite est atteinte.</p>
3557 <seealso><directive module="core">RLimitMEM</directive></seealso>
3558 <seealso><directive module="core">RLimitCPU</directive></seealso>
3559 </directivesynopsis>
3562 <name>ScriptInterpreterSource</name>
3563 <description>Permet de localiser l'interpréteur des scripts
3565 <syntax>ScriptInterpreterSource Registry|Registry-Strict|Script</syntax>
3566 <default>ScriptInterpreterSource Script</default>
3567 <contextlist><context>server config</context><context>virtual
3569 <context>directory</context><context>.htaccess</context></contextlist>
3570 <override>FileInfo</override>
3571 <compatibility>Win32 seulement ;
3572 l'option <code>Registry-Strict</code> est disponible dans les versions
3573 2.0 et supérieures du serveur HTTP Apache</compatibility>
3576 <p>Cette directive permet de contrôler la méthode qu'utilise Apache
3577 httpd pour trouver l'interpréteur destiné à exécuter les scripts CGI. La
3578 définition par défaut est <code>Script</code> : ceci indique à
3579 Apache httpd qu'il doit utiliser l'interpréteur précisé dans la ligne
3580 shebang du script (la première ligne, commençant par
3581 <code>#!</code>). Sur les systèmes Win32, cette ligne ressemble
3582 souvent à ceci :</p>
3585 #!C:/Perl/bin/perl.exe
3588 <p>ou simplement, dans le cas où <code>perl</code> est dans le
3589 <code>PATH</code> :</p>
3595 <p>Avec <code>ScriptInterpreterSource Registry</code>, Windows va
3596 effectuer une recherche dans l'arborescence
3597 <code>HKEY_CLASSES_ROOT</code> de la base de registre avec comme
3598 mot-clé l'extension du fichier contenant le script (par exemple
3599 <code>.pl</code>). C'est la commande définie par la sous-clé de
3600 registre <code>Shell\ExecCGI\Command</code> ou, si elle n'existe
3601 pas, la sous-clé <code>Shell\Open\Command</code> qui est utilisée
3602 pour ouvrir le fichier du script. Si ces clés de registre ne sont
3603 pas trouvées, Apache httpd utilise la méthode de l'option
3604 <code>Script</code>.</p>
3606 <note type="warning"><title>Sécurité</title>
3607 <p>Soyez prudent si vous utilisez <code>ScriptInterpreterSource
3608 Registry</code> avec des répertoires faisant l'objet d'un <directive
3609 module="mod_alias">ScriptAlias</directive>, car Apache httpd va essayer
3610 d'exécuter <strong>tous</strong> les fichiers contenus dans
3611 celui-ci. L'option <code>Registry</code> peut causer des appels de
3612 programmes non voulus sur des fichiers non destinés à être exécutés.
3613 Par exemple, la commande par défaut open sur les fichiers
3614 <code>.htm</code> sur la plupart des systèmes Windows va lancer
3615 Microsoft Internet Explorer ; ainsi, toute requête HTTP pour un
3616 fichier <code>.htm</code> situé dans le répertoire des scripts
3617 va lancer le navigateur en arrière-plan sur le serveur, ce qui a
3618 toutes les chances de crasher votre système dans les minutes qui
3622 <p>L'option <code>Registry-Strict</code>, apparue avec la version
3623 2.0 du serveur HTTP Apache,
3624 agit de manière identique à <code>Registry</code>, mais n'utilise
3625 que la sous-clé <code>Shell\ExecCGI\Command</code>. La présence de
3626 la clé <code>ExecCGI</code> n'étant pas systématique, Elle doit être
3627 définie manuellement dans le registre Windows et évite ainsi tout
3628 appel de programme accidentel sur votre système.</p>
3630 </directivesynopsis>
3633 <name>SeeRequestTail</name>
3634 <description>Détermine si mod_status affiche les 63 premiers caractères
3635 d'une requête ou les 63 derniers, en supposant que la requête
3636 elle-même possède plus de 63 caractères.</description>
3637 <syntax>SeeRequestTail On|Off</syntax>
3638 <default>SeeRequestTail Off</default>
3639 <contextlist><context>server config</context></contextlist>
3640 <compatibility>Disponible depuis la version 2.2.7
3641 d'Apache httpd.</compatibility>
3644 <p>Avec <code>ExtendedStatus On</code>, mod_status affiche la
3645 véritable requête en cours de traitement. Pour des raisons
3646 historiques, seuls 63 caractères de la requête sont réellement
3647 stockés à des fins d'affichage. Cette directive permet de déterminer
3648 si ce sont les 63 premiers caractères qui seront stockés (c'est le
3649 comportement par défaut),
3650 ou si ce sont les 63 derniers. Ceci ne s'applique bien entendu que
3651 si la taille de la requête est de 64 caractères ou plus.</p>
3653 <p>Si Apache httpd traite la requête <code
3654 >GET /disque1/stockage/apache/htdocs/images/rep-images1/nourriture/pommes.jpg HTTP/1.1</code>
3655 , l'affichage de la requête par mod_status se présentera comme suit :
3660 <th>Off (défaut)</th>
3661 <td>GET /disque1/stockage/apache/htdocs/images/rep-images1/nourritu</td>
3665 <td>apache/htdocs/images/rep-images1/nourriture/pommes.jpg HTTP/1.1</td>
3671 </directivesynopsis>
3674 <name>ServerAdmin</name>
3675 <description>L'adresse électronique que le serveur inclut dans les
3676 messages d'erreur envoyés au client</description>
3677 <syntax>ServerAdmin <var>adresse électronique</var>|<var>URL</var></syntax>
3678 <contextlist><context>server config</context><context>virtual
3683 <p>La directive <directive>ServerAdmin</directive> permet de définir
3684 l'adresse de contact que le serveur va inclure dans tout message
3685 d'erreur qu'il envoie au client. Si le programme <code>httpd</code>
3686 ne reconnait pas l'argument fourni comme une URL, il suppose que
3687 c'est une <var>adresse électronique</var>, et lui ajoute le préfixe
3688 <code>mailto:</code> dans les cibles des hyperliens. Il est
3689 cependant recommandé d'utiliser exclusivement une adresse
3690 électronique, car de nombreux scripts CGI considèrent ceci comme
3691 implicite. Si vous utilisez une URL, elle doit pointer vers un autre
3692 serveur que vous contrôlez. Dans le cas contraire, les utilisateurs
3693 seraient dans l'impossibilité de vous contacter en cas de problème.</p>
3695 <p>Il peut s'avérer utile de définir une adresse dédiée à
3696 l'administration du serveur, par exemple :</p>
3699 ServerAdmin www-admin@foo.example.com
3701 <p>car les utilisateurs ne mentionnent pas systématiquement le
3702 serveur dont ils parlent !</p>
3704 </directivesynopsis>
3707 <name>ServerAlias</name>
3708 <description>Autres noms d'un serveur utilisables pour atteindre des
3709 serveurs virtuels à base de nom</description>
3710 <syntax>ServerAlias <var>nom serveur</var> [<var>nom serveur</var>]
3712 <contextlist><context>virtual host</context></contextlist>
3715 <p>La directive <directive>ServerAlias</directive> permet de définir
3716 les noms alternatifs d'un serveur utilisables pour atteindre des <a
3717 href="../vhosts/name-based.html">serveurs virtuels à base de
3718 nom</a>. La directive <directive>ServerAlias</directive> peut
3719 contenir des caractères génériques, si nécessaire.</p>
3722 <VirtualHost *:80><br />
3723 ServerName serveur.example.com<br />
3724 ServerAlias serveur serveur2.example.com serveur2<br />
3725 ServerAlias *.example.com<br />
3726 UseCanonicalName Off<br />
3728 </VirtualHost>
3731 <seealso><directive module="core">UseCanonicalName</directive></seealso>
3732 <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels
3733 du serveur HTTP Apache</a></seealso>
3734 </directivesynopsis>
3737 <name>ServerName</name>
3738 <description>Nom d'hôte et port que le serveur utilise pour
3739 s'authentifier lui-même</description>
3740 <syntax>ServerName [<var>protocole</var>://]<var>nom de domaine
3741 entièrement qualifié</var>[:<var>port</var>]</syntax>
3742 <contextlist><context>server config</context><context>virtual
3747 <p>La directive <directive>ServerName</directive> permet de définir
3748 les protocole, nom d'hôte et port d'une requête que le serveur
3749 utilise pour s'authentifier lui-même. Ceci est utile lors de la
3750 création de redirections d'URLs.</p>
3752 <p>La directive <directive>ServerName</directive> permet aussi
3753 (éventuellement en conjonction avec la directive
3754 <directive>ServerAlias</directive>) d'identifier de manière unique
3755 un serveur virtuel, lorsqu'elle est utilisée dans un contexte de <a
3756 href="../vhosts/name-based.html">serveurs virtuels à base de
3759 <p>Par exemple, si le nom de la
3760 machine hébergeant le serveur web est
3761 <code>simple.example.com</code>, la machine possède l'alias
3762 DNS <code>www.example.com</code>, et si vous voulez que le serveur
3763 web s'identifie avec cet alias, vous devez utilisez la définition
3767 ServerName www.example.com
3770 <p>La directive <directive>ServerName</directive> peut apparaître à
3771 toutes les étapes de la définition du serveur. Toute occurrence
3772 annule cependant la précédente (pour ce serveur).</p>
3774 <p>Si la directive <directive>ServerName</directive> n'est pas
3775 définie, le serveur tente de déterminer le nom d'hôte en effectuant
3776 une recherche DNS inverse sur son adresse IP. Si la directive
3777 <directive>ServerName</directive> ne précise pas de port, le serveur
3778 utilisera celui de la requête entrante. Il est recommandé de
3779 spécifier un nom d'hôte et un port spécifiques à l'aide de la
3780 directive <directive>ServerName</directive> pour une fiabilité
3781 optimale et à titre préventif.</p>
3783 <p>Si vous définissez des <a
3784 href="../vhosts/name-based.html">serveurs virtuels à base de
3785 nom</a>, une directive <directive>ServerName</directive> située à
3786 l'intérieur d'une section <directive type="section"
3787 module="core">VirtualHost</directive> spécifiera quel nom d'hôte
3788 doit apparaître dans l'en-tête de requête <code>Host:</code> pour
3789 pouvoir atteindre ce serveur virtuel.</p>
3792 <p>Parfois, le serveur s'exécute en amont d'un dispositif qui
3793 implémente SSL, comme un mandataire inverse, un répartiteur de
3794 charge ou un boîtier dédié SSL. Dans ce cas, spécifiez le protocole
3795 <code>https://</code> et le port auquel les clients se connectent
3796 dans la directive <directive>ServerName</directive>, afin de
3797 s'assurer que le serveur génère correctement ses URLs
3798 d'auto-identification.
3801 <p>Voir la description des directives <directive
3802 module="core">UseCanonicalName</directive> et <directive
3803 module="core">UseCanonicalPhysicalPort</directive> pour les
3804 définitions qui permettent de déterminer si les URLs
3805 auto-identifiantes (par exemple via le module
3806 <module>mod_dir</module>) vont faire référence au port spécifié, ou
3807 au port indiqué dans la requête du client.
3810 <note type="warning">
3811 <p>Si la valeur de la directive <directive>ServerName</directive> ne
3812 peut pas être résolue en adresse IP, le démarrage du serveur
3813 provoquera un avertissement. <code>httpd</code> va alors utiliser le
3814 résultat de la commande système <code>hostname</code> pour
3815 déterminer le nom du serveur, ce qui ne correspondra pratiquement
3816 jamais au nom de serveur que vous souhaitez réellement.</p>
3818 httpd: Could not reliably determine the server's fully qualified domain name, using rocinante.local for ServerName
3824 <seealso><a href="../dns-caveats.html">Problèmes concernant le DNS et
3825 le serveur HTTP Apache</a></seealso>
3826 <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels
3827 du serveur HTTP Apache</a></seealso>
3828 <seealso><directive module="core">UseCanonicalName</directive></seealso>
3829 <seealso><directive module="core">UseCanonicalPhysicalPort</directive></seealso>
3830 <seealso><directive module="core">ServerAlias</directive></seealso>
3831 </directivesynopsis>
3834 <name>ServerPath</name>
3835 <description>Nom de chemin d'URL hérité pour un serveur virtuel à base
3836 de nom accédé par un navigateur incompatible</description>
3837 <syntax>ServerPath <var>chemin d'URL</var></syntax>
3838 <contextlist><context>virtual host</context></contextlist>
3841 <p>La directive <directive>ServerPath</directive> permet de définir
3842 le nom de chemin d'URL hérité d'un hôte, à utiliser avec les <a
3843 href="../vhosts/">serveurs virtuels à base de nom</a>.</p>
3845 <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels
3846 du serveur HTTP Apache</a></seealso>
3847 </directivesynopsis>
3850 <name>ServerRoot</name>
3851 <description>Racine du répertoire d'installation du
3852 serveur</description>
3853 <syntax>ServerRoot <var>chemin de répertoire</var></syntax>
3854 <default>ServerRoot /usr/local/apache</default>
3855 <contextlist><context>server config</context></contextlist>
3858 <p>La directive <directive>ServerRoot</directive> permet de définir
3859 le répertoire dans lequel le serveur est installé. En particulier,
3860 il contiendra les sous-répertoires <code>conf/</code> et
3861 <code>logs/</code>. Les chemins relatifs indiqués dans les autres
3862 directives (comme <directive
3863 module="core">Include</directive> ou <directive
3864 module="mod_so">LoadModule</directive>) seront définis par
3865 rapport à ce répertoire.</p>
3867 <example><title>Example</title>
3868 ServerRoot /home/httpd
3872 <seealso><a href="../invoking.html">the <code>-d</code>
3873 options de <code>httpd</code></a></seealso>
3874 <seealso><a href="../misc/security_tips.html#serverroot">les conseils à
3875 propos de sécurité</a> pour des informations sur la manière de définir
3876 correctement les permissions sur le répertoire indiqué par la directive
3877 <directive>ServerRoot</directive></seealso>
3878 </directivesynopsis>
3881 <name>ServerSignature</name>
3882 <description>Définit un pied de page pour les documents générés par le
3883 serveur</description>
3884 <syntax>ServerSignature On|Off|EMail</syntax>
3885 <default>ServerSignature Off</default>
3886 <contextlist><context>server config</context><context>virtual
3888 <context>directory</context><context>.htaccess</context>
3890 <override>All</override>
3893 <p>La directive <directive>ServerSignature</directive> permet de
3894 définir une ligne de pied de page fixe pour les documents générés
3895 par le serveur (messages d'erreur, listings de répertoires ftp de
3896 <module>mod_proxy</module>, sorties de <module>mod_info</module>,
3897 etc...). Dans le cas d'une chaîne de mandataires, l'utilisateur n'a
3898 souvent aucun moyen de déterminer lequel des mandataires chaînés a
3899 généré un message d'erreur, et c'est une des raisons pour lesquelles
3900 on peut être amené à ajouter un tel pied de page.</p>
3902 <p>La valeur par défaut <code>Off</code> supprime la ligne de pied
3903 de page (et est ainsi compatible avec le comportement des
3904 versions 1.2 et antérieures d'Apache). la valeur <code>On</code>
3905 ajoute simplement une ligne contenant le numéro de version du
3906 serveur ainsi que le nom du serveur virtuel issu de la directive
3907 <directive module="core">ServerName</directive>, alors que la valeur
3908 <code>EMail</code> ajoute en plus une référence "mailto:" à
3909 l'administrateur du document référencé issu la directive
3910 <directive module="core">ServerAdmin</directive>.</p>
3912 <p>Après la version 2.0.44, les détails à propos du numéro de
3913 version du serveur sont contrôlés à l'aide de la directive
3914 <directive module="core">ServerTokens</directive>.</p>
3916 <seealso><directive module="core">ServerTokens</directive></seealso>
3917 </directivesynopsis>
3920 <name>ServerTokens</name>
3921 <description>Configure l'en-tête <code>Server</code> de la réponse
3923 <syntax>ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full</syntax>
3924 <default>ServerTokens Full</default>
3925 <contextlist><context>server config</context></contextlist>
3928 <p>Cette directive permet de contrôler le contenu de l'en-tête
3929 <code>Server</code> inclus dans la réponse envoyée au client : cet
3930 en-tête peut contenir le type de système d'exploitation du serveur,
3931 ainsi que des informations à propos des modules compilés avec le
3935 <dt><code>ServerTokens Full</code> (ou non spécifié)</dt>
3937 <dd>Le serveur envoie par exemple : <code>Server: Apache/2.4.1
3938 (Unix) PHP/4.2.2 MyMod/1.2</code></dd>
3943 <dt><code>ServerTokens Prod[uctOnly]</code></dt>
3945 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
3948 <dt><code>ServerTokens Major</code></dt>
3950 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
3951 Apache/2</code></dd>
3953 <dt><code>ServerTokens Minor</code></dt>
3955 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
3956 Apache/2.4</code></dd>
3958 <dt><code>ServerTokens Min[imal]</code></dt>
3960 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
3961 Apache/2.4.1</code></dd>
3963 <dt><code>ServerTokens OS</code></dt>
3965 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
3966 Apache/2.4.1 (Unix)</code></dd>
3972 <p>Cette définition s'applique à l'ensemble du serveur et ne peut
3973 être activée ou désactivée pour tel ou tel serveur virtuel.</p>
3975 <p>Dans les versions postérieures à 2.0.44, cette directive contrôle
3976 aussi les informations fournies par la directive <directive
3977 module="core">ServerSignature</directive>.</p>
3979 <note>Définir <directive>ServerTokens</directive> à une
3980 valeur inférieure à <code>minimal</code> n'est pas
3981 recommandé car le débogage des problèmes
3982 interopérationnels n'en sera alors que plus difficile. Notez
3983 aussi que la désactivation de l'en-tête Server:
3984 n'améliore en rien la sécurité de votre
3985 serveur ; le concept de "sécurité par
3986 l'obscurité" est un mythe et conduit à
3987 une mauvaise perception de ce qu'est la sécurité.</note>
3991 <seealso><directive module="core">ServerSignature</directive></seealso>
3992 </directivesynopsis>
3995 <name>SetHandler</name>
3996 <description>Force le traitement des fichiers spécifiés par un
3997 gestionnaire particulier</description>
3998 <syntax>SetHandler <var>nom gestionnaire</var>|None</syntax>
3999 <contextlist><context>server config</context><context>virtual
4001 <context>directory</context><context>.htaccess</context>
4003 <override>FileInfo</override>
4004 <compatibility>Intégré dans le noyau d'Apache httpd depuis la version
4008 <p>Lorsqu'elle se situe à l'intérieur d'un fichier
4009 <code>.htaccess</code>, ou d'une section <directive type="section"
4010 module="core">Directory</directive> ou <directive type="section"
4011 module="core">Location</directive>, cette directive force le
4012 traitement de tous les fichiers spécifiés par le <a
4013 href="../handler.html">gestionnaire</a> défini par l'argument
4014 <var>nom gestionnaire</var>. Par exemple, dans le cas d'un
4015 répertoire dont vous voulez interpréter le contenu comme des
4016 fichiers de règles d'images cliquables, sans tenir compte des
4017 extensions, vous pouvez ajouter la ligne suivante dans un fichier
4018 <code>.htaccess</code> de ce répertoire :</p>
4021 SetHandler imap-file
4024 <p>Autre exemple : si vous voulez que le serveur affiche un
4025 compte-rendu d'état chaque fois qu'une URL du type <code>http://nom
4026 serveur/status</code> est appelée, vous pouvez ajouter ceci dans
4027 <code>httpd.conf</code> :</p>
4030 <Location /status><br />
4032 SetHandler server-status<br />
4037 <p>Vous pouvez écraser la définition antérieure d'une directive
4038 <directive>SetHandler</directive> en utilisant la valeur
4039 <code>None</code>.</p>
4041 <note><title>Note</title>
4042 <p>Comme <directive>SetHandler</directive> l'emporte sur la
4043 définition des gestionnaires par défaut, le comportement habituel
4044 consistant à traiter les URLs se terminant par un slash (/) comme
4045 des répertoires ou des fichiers index est désactivé.</p></note>
4048 <seealso><directive module="mod_mime">AddHandler</directive></seealso>
4050 </directivesynopsis>
4053 <name>SetInputFilter</name>
4054 <description>Définit les filtres par lesquels vont passer les requêtes
4055 client et les données POST</description>
4056 <syntax>SetInputFilter <var>filtre</var>[;<var>filtre</var>...]</syntax>
4057 <contextlist><context>server config</context><context>virtual
4059 <context>directory</context><context>.htaccess</context>
4061 <override>FileInfo</override>
4064 <p>La directive <directive>SetInputFilter</directive> permet de
4065 définir le ou les filtres par lesquels vont passer les requêtes
4066 client et les données POST au moment où le serveur les reçoit. Cette
4067 définition vient en ajout à tout autre filtre défini en
4068 quelqu'endroit que ce soit, y compris via la directive <directive
4069 module="mod_mime">AddInputFilter</directive>.</p>
4071 <p>Si la directive comporte plusieurs filtres, ils doivent être
4072 séparés par des points-virgules, et spécifiés selon l'ordre dans
4073 lequel vous souhaitez les voir agir sur les contenus.</p>
4075 <seealso>documentation des <a
4076 href="../filter.html">Filtres</a></seealso>
4077 </directivesynopsis>
4080 <name>SetOutputFilter</name>
4081 <description>Définit les filtres par lesquels vont passer les réponses
4082 du serveur</description>
4083 <syntax>SetOutputFilter <var>filtre</var>[;<var>filtre</var>...]</syntax>
4084 <contextlist><context>server config</context><context>virtual
4086 <context>directory</context><context>.htaccess</context>
4088 <override>FileInfo</override>
4091 <p>La directive <directive>SetOutputFilter</directive> permet de
4092 définir les filtres par lesquels vont passer les réponses du serveur
4093 avant d'être envoyées au client. Cette définition vient en ajout à
4094 tout autre filtre défini en quelqu'endroit que ce soit, y compris
4095 via la directive <directive
4096 module="mod_mime">AddOutputFilter</directive>.</p>
4098 <p>Par exemple, la configuration suivante va traiter tous les
4099 fichiers du répertoire <code>/www/data/</code> comme des inclusions
4100 côté serveur (SSI) :</p>
4103 <Directory /www/data/><br />
4105 SetOutputFilter INCLUDES<br />
4110 <p>Si la directive comporte plusieurs filtres, ils doivent être
4111 séparés par des points-virgules, et spécifiés selon l'ordre dans
4112 lequel vous souhaitez les voir agir sur les contenus.</p>
4114 <seealso><a href="../filter.html">Filters</a> documentation</seealso>
4115 </directivesynopsis>
4118 <name>TimeOut</name>
4119 <description>Temps pendant lequel le serveur va attendre certains
4120 évènements avant de considérer qu'une requête a échoué</description>
4121 <syntax>TimeOut <var>secondes</var></syntax>
4122 <default>TimeOut 300</default>
4123 <contextlist><context>server config</context><context>virtual
4124 host</context></contextlist>
4127 <p>La directive <directive>TimeOut</directive> permet de définir le
4128 temps maximum pendant lequel Apache httpd va attendre des entrées/sorties
4129 selon les circonstances :</p>
4132 <li>Lors de la lecture de données en provenance du client, le
4133 temps maximum jusqu'à l'arrivée d'un paquet TCP si le tampon est
4136 <li>Lors de l'écriture de données destinées au client, le temps
4137 maximum jusqu'à l'arrivée de l'accusé-réception d'un paquet si le
4138 tampon d'envoi est plein.</li>
4140 <li>Avec <module>mod_cgi</module>, le temps d'attente maximum des
4141 sorties d'un script CGI.</li>
4143 <li>Avec <module>mod_ext_filter</module>, le temps d'attente
4144 maximum des sorties d'un processus de filtrage.</li>
4146 <li>Avec <module>mod_proxy</module>, la valeur du délai par défaut
4147 si <directive module="mod_proxy">ProxyTimeout</directive> n'est
4148 pas défini.</li>
4152 </directivesynopsis>
4155 <name>TraceEnable</name>
4156 <description>Détermine le comportement des requêtes
4157 <code>TRACE</code></description>
4158 <syntax>TraceEnable <var>[on|off|extended]</var></syntax>
4159 <default>TraceEnable on</default>
4160 <contextlist><context>server config</context></contextlist>
4161 <compatibility>Disponible dans les versions 1.3.34, 2.0.55 et
4162 supérieures du serveur HTTP Apache</compatibility>
4165 <p>Cette directive l'emporte sur le comportement de
4166 <code>TRACE</code> pour le noyau du serveur et
4167 <module>mod_proxy</module>. La définition par défaut
4168 <code>TraceEnable on</code> permet des requêtes <code>TRACE</code>
4169 selon la RFC 2616, qui interdit d'ajouter tout corps à la requête.
4170 La définition <code>TraceEnable off</code> indique au noyau du
4171 serveur et à <module>mod_proxy</module> de retourner un code
4172 d'erreur <code>405</code> (Méthode non autorisée) au client.</p>
4174 <p>En fait, et à des fins de test et de diagnostic seulement, on
4175 peut autoriser l'ajout d'un corps de requête à l'aide de la
4176 définition non standard <code>TraceEnable extended</code>. Le noyau
4177 du serveur (dans le cas d'un serveur d'origine) va limiter la taille
4178 du corps de requête à 64k (plus 8k pour les en-têtes de
4179 fractionnement si <code>Transfer-Encoding: chunked</code> est
4180 utilisé). Le noyau du serveur va reproduire l'ensemble des en-têtes,
4181 y compris les en-têtes de fractionnement avec le corps de la
4182 réponse. Dans le cas d'un serveur mandataire, la taille du corps de
4183 requête n'est pas limitée à 64k.</p>
4185 </directivesynopsis>
4188 <name>UnDefine</name>
4189 <description>Invalide la définition d'une variable</description>
4190 <syntax>UnDefine <var>nom-variable</var></syntax>
4191 <contextlist><context>server config</context></contextlist>
4194 <p>Annule l'effet d'une directive <directive
4195 module="core">Define</directive> ou d'un argument <code>-D</code> de
4196 <program>httpd</program> en invalidant l'existence de la variable
4198 <p>On peut utiliser cette directive pour inverser l'effet d'une
4199 section <directive module="core" type="section">IfDefine</directive>
4200 sans avoir à modifier les arguments <code>-D</code> dans les scripts
4201 de démarrage.</p>
4203 </directivesynopsis>
4206 <name>UseCanonicalName</name>
4207 <description>Définit la manière dont le serveur détermine son propre nom
4208 et son port</description>
4209 <syntax>UseCanonicalName On|Off|DNS</syntax>
4210 <default>UseCanonicalName Off</default>
4211 <contextlist><context>server config</context><context>virtual
4213 <context>directory</context></contextlist>
4216 <p>Dans de nombreuses situations, Apache httpd doit construire une URL
4217 <em>auto-identifiante</em> -- c'est à dire une URL qui fait
4218 référence au serveur lui-même. Avec <code>UseCanonicalName
4219 On</code>, Apache httpd va utiliser le nom d'hôte et le port spécifiés par
4220 la directive <directive module="core">ServerName</directive> pour
4221 construire le nom canonique du serveur. Ce nom est utilisé dans
4222 toutes les URLs auto-identifiantes, et affecté aux variables
4223 <code>SERVER_NAME</code> et <code>SERVER_PORT</code> dans les
4226 <p>Avec <code>UseCanonicalName Off</code>, Apache httpd va construire ses
4227 URLs auto-identifiantes à l'aide du nom d'hôte et du port fournis
4228 par le client, si ce dernier en a fourni un (dans la négative,
4229 Apache utilisera le nom canonique, de la même manière que
4230 ci-dessus). Ces valeurs sont les mêmes que celles qui sont utilisées
4231 pour implémenter les <a
4232 href="../vhosts/name-based.html">serveurs virtuels à base de
4233 nom</a>, et sont disponibles avec les mêmes clients. De même, les
4234 variables CGI <code>SERVER_NAME</code> et <code>SERVER_PORT</code>
4235 seront affectées des valeurs fournies par le client.</p>
4237 <p>Cette directive peut s'avérer utile, par exemple, sur un serveur
4238 intranet auquel les utilisateurs se connectent en utilisant des noms
4239 courts tels que <code>www</code>. Si les utilisateurs tapent un nom
4240 court suivi d'une URL qui fait référence à un répertoire, comme
4241 <code>http://www/splat</code>, <em>sans le slash terminal</em>, vous
4242 remarquerez qu'Apache httpd va les rediriger vers
4243 <code>http://www.example.com/splat/</code>. Si vous avez activé
4244 l'authentification, ceci va obliger l'utilisateur à s'authentifier
4245 deux fois (une première fois pour <code>www</code> et une seconde
4246 fois pour <code>www.example.com</code> -- voir <a
4247 href="http://httpd.apache.org/docs/misc/FAQ.html#prompted-twice">la
4248 foire aux questions sur ce sujet pour plus d'informations</a>). Par
4249 contre, si <directive>UseCanonicalName</directive> est définie à
4250 <code>Off</code>, Apache httpd redirigera l'utilisateur vers
4251 <code>http://www/splat/</code>.</p>
4253 <p>Pour l'hébergement virtuel en masse à base d'adresse IP, on
4254 utilise une troisième option, <code>UseCanonicalName
4255 DNS</code>, pour supporter les clients anciens qui ne
4256 fournissent pas d'en-tête <code>Host:</code>. Apache httpd effectue alors
4257 une recherche DNS inverse sur l'adresse IP du serveur auquel le
4258 client s'est connecté afin de construire ses URLs
4259 auto-identifiantes.</p>
4261 <note type="warning"><title>Avertissement</title>
4262 <p>Les programmes CGI risquent d'être perturbés par cette option
4263 s'ils tiennent compte de la variable <code>SERVER_NAME</code>. Le
4264 client est pratiquement libre de fournir la valeur qu'il veut comme
4265 nom d'hôte. Mais si le programme CGI n'utilise
4266 <code>SERVER_NAME</code> que pour construire des URLs
4267 auto-identifiantes, il ne devrait pas y avoir de problème.</p>
4270 <seealso><directive module="core">UseCanonicalPhysicalPort</directive></seealso>
4271 <seealso><directive module="core">ServerName</directive></seealso>
4272 <seealso><directive module="mpm_common">Listen</directive></seealso>
4273 </directivesynopsis>
4276 <name>UseCanonicalPhysicalPort</name>
4277 <description>Définit la manière dont le serveur
4278 détermine son propre port</description>
4279 <syntax>UseCanonicalPhysicalPort On|Off</syntax>
4280 <default>UseCanonicalPhysicalPort Off</default>
4281 <contextlist><context>server config</context><context>virtual
4283 <context>directory</context></contextlist>
4286 <p>Dans de nombreuses situations, Apache httpd doit construire une URL
4287 <em>auto-identifiante</em> -- c'est à dire une URL qui fait
4288 référence au serveur lui-même. Avec <code>UseCanonicalPhysicalPort
4289 On</code>, Apache httpd va fournir le numéro de port physique réel utilisé
4290 par la requête en tant que port potentiel, pour construire le port
4291 canonique afin que le serveur puisse alimenter la directive
4292 <directive module="core">UseCanonicalName</directive>. Avec
4293 <code>UseCanonicalPhysicalPort Off</code>, Apache httpd n'utilisera pas le
4294 numéro de port physique réel, mais au contraire se référera aux
4295 informations de configuration pour construire un numéro de port
4298 <note><title>Note</title>
4299 <p>L'ordre dans lequel s'effectue la recherche quand on utilise le
4300 port physique est le suivant :</p>
4302 <dt><code>UseCanonicalName On</code></dt>
4305 <li>Port indiqué dans <directive module="core">Servername</directive></li>
4306 <li>Port physique</li>
4307 <li>Port par défaut</li>
4310 <dt><code>UseCanonicalName Off | DNS</code></dt>
4313 <li>Port spécifié dans l'en-tête <code>Host:</code></li>
4314 <li>Port physique</li>
4315 <li>Port spécifié par <directive module="core">Servername</directive></li>
4316 <li>Port par défaut</li>
4321 <p>Avec <code>UseCanonicalPhysicalPort Off</code>, on reprend
4322 l'ordre ci-dessus en supprimant "Port physique".</p>
4326 <seealso><directive module="core">UseCanonicalName</directive></seealso>
4327 <seealso><directive module="core">ServerName</directive></seealso>
4328 <seealso><directive module="mpm_common">Listen</directive></seealso>
4329 </directivesynopsis>
4331 <directivesynopsis type="section">
4332 <name>VirtualHost</name>
4333 <description>Contient des directives qui ne s'appliquent qu'à un nom
4334 d'hôte spécifique ou à une adresse IP</description>
4335 <syntax><VirtualHost
4336 <var>adresse IP</var>[:<var>port</var>] [<var>adresse
4337 IP</var>[:<var>port</var>]] ...> ...
4338 </VirtualHost></syntax>
4339 <contextlist><context>server config</context></contextlist>
4342 <p>Les balises <directive type="section">VirtualHost</directive> et
4343 <code></VirtualHost></code> permettent de rassembler un groupe
4344 de directives qui ne s'appliquent qu'à un serveur virtuel
4345 particulier. Toute directive autorisée dans un contexte de serveur
4346 virtuel peut être utilisée. Lorsque le serveur reçoit un requête
4347 pour un document hébergé par un serveur virtuel particulier, il
4348 applique les directives de configuration rassemblées dans la section
4349 <directive type="section">VirtualHost</directive>. <var>adresse
4350 IP</var> peut être une des entités suivantes, éventuellement suivies
4351 d'un caractère ':' et d'un numéro de port (ou *) :</p>
4354 <li>L'adresse IP du serveur virtuel ;</li>
4356 <li>Un nom de domaine entièrement qualifié correspondant à
4357 l'adresse IP du serveur virtuel (non recommandé) ;</li>
4359 <li>Le caractère <code>*</code>, qui agit comme un
4360 caractère générique, et correspond à toute adresse IP.</li>
4362 <li>La chaîne <code>_default_</code>, dont la signification est
4363 identique à celle du caractère <code>*</code></li>
4367 <example><title>Exemple</title>
4368 <VirtualHost 10.1.2.3:80><br />
4370 ServerAdmin webmaster@host.example.com<br />
4371 DocumentRoot /www/docs/host.example.com<br />
4372 ServerName host.example.com<br />
4373 ErrorLog logs/host.example.com-error_log<br />
4374 TransferLog logs/host.example.com-access_log<br />
4376 </VirtualHost>
4380 <p>Les adresses IPv6 doivent être entourées de crochets car dans le
4381 cas contraire, un éventuel port optionnel ne pourrait pas être
4382 déterminé. Voici un exemple de serveur virtuel avec adresse IPv6
4386 <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80><br />
4388 ServerAdmin webmaster@host.example.com<br />
4389 DocumentRoot /www/docs/host.example.com<br />
4390 ServerName host.example.com<br />
4391 ErrorLog logs/host.example.com-error_log<br />
4392 TransferLog logs/host.example.com-access_log<br />
4394 </VirtualHost>
4397 <p>Chaque serveur virtuel doit correspondre à une adresse IP, un
4398 port ou un nom d'hôte spécifique ; dans le premier cas, le serveur
4399 doit être configuré pour recevoir les paquets IP de plusieurs
4400 adresses (si le serveur n'a qu'une interface réseau, on peut
4401 utiliser à cet effet la commande <code>ifconfig alias</code> -- si
4402 votre système d'exploitation le permet).</p>
4404 <note><title>Note</title>
4405 <p>L'utilisation de la directive <directive
4406 type="section">VirtualHost</directive> n'affecte en rien les
4407 adresses IP sur lesquelles Apache httpd est en écoute. Vous devez vous
4408 assurer que les adresses des serveurs virtuels sont bien incluses
4409 dans la liste des adresses précisées par la directive <directive
4410 module="mpm_common">Listen</directive>.</p>
4413 <p>Tout bloc <directive
4414 type="section">VirtualHost</directive> doit comporter une directive
4415 <directive module="core">ServerName</directive>. Dans le cas
4416 contraire, le serveur virtuel héritera de la valeur de la directive
4417 <directive module="core">ServerName</directive> issue de la
4418 configuration du serveur principal.</p>
4420 <p>A l'arrivée d'une requête, le serveur tente de la
4421 faire prendre en compte par la section <directive
4422 type="section">VirtualHost</directive> qui correspond le mieux en ne
4423 se basant que sur la paire adresse IP/port. Les chaînes sans
4424 caractères génériques l'emportent sur celles qui en contiennent. Si
4425 aucune correspondance du point de vue de l'adresse IP/port n'est
4426 trouvée, c'est la configuration du serveur "principal" qui sera
4427 utilisée.</p>
4429 <p>Si plusieurs serveurs virtuels correspondent du point de vue de
4430 l'adresse IP/port, le serveur sélectionne celui qui correspond le
4431 mieux du point de vue du nom d'hôte de la requête. Si aucune
4432 correspondance du point de vue du nom d'hôte n'est trouvée, c'est le
4433 premier serveur virtuel dont l'adresse IP/port correspond qui sera
4434 utilisé. Par voie de conséquence, le premier serveur virtuel
4435 comportant une certaine paire adresse IP/port est le serveur virtuel
4436 par défaut pour cette paire adresse IP/port.</p>
4438 <note type="warning"><title>Sécurité</title>
4439 <p>Voir le document sur les <a
4440 href="../misc/security_tips.html">conseils à propos de sécurité</a>
4441 pour une description détaillée des raisons pour lesquelles la
4442 sécurité de votre serveur pourrait être compromise, si le répertoire
4443 contenant les fichiers journaux est inscriptible par tout autre
4444 utilisateur que celui qui démarre le serveur.</p>
4447 <seealso><a href="../vhosts/">Documentation des serveurs virtuels
4448 du serveur HTTP Apache</a></seealso>
4449 <seealso><a href="../dns-caveats.html">Problèmes concernant le DNS et
4450 le serveur HTTP Apache</a></seealso>
4451 <seealso><a href="../bind.html">Définition des adresses et ports
4452 qu'utilise le serveur HTTP Apache</a></seealso>
4453 <seealso><a href="../sections.html">Comment fonctionnent les sections
4454 <Directory>, <Location> et <Files></a> pour une
4455 explication de la manière dont ces différentes sections se combinent
4456 entre elles à la réception d'une requête</seealso>
4457 </directivesynopsis>