2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1407599 -->
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 <highlight language="config">
59 AcceptFilter nntp none
62 <p>Les noms de protocoles par défaut sont <code>https</code> pour le
63 port 443 et <code>http</code> pour tous les autres ports. Pour
64 spécifier un autre protocole à utiliser avec un port en écoute,
65 ajoutez l'argument <var>protocol</var> à la directive <directive
66 module="mpm_common">Listen</directive>.</p>
68 <p>Sous FreeBSD, les valeurs par défaut sont :</p>
69 <highlight language="config">
70 AcceptFilter http httpready
71 AcceptFilter https dataready
74 <p>Le filtre d'acceptation <code>httpready</code> met en tampon des
75 requêtes HTTP entières au niveau du noyau. Quand une requête
76 entière a été reçue, le noyau l'envoie au serveur. Voir la page de
78 href="http://www.freebsd.org/cgi/man.cgi?query=accf_http&
79 sektion=9">accf_http(9)</a> pour plus de détails. Comme les requêtes
80 HTTPS sont chiffrées, celles-ci n'autorisent que le filtre <a
81 href="http://www.freebsd.org/cgi/man.cgi?query=accf_data&
82 sektion=9">accf_data(9)</a>.</p>
84 <p>Sous Linux, les valeurs par défaut sont :</p>
85 <highlight language="config">
86 AcceptFilter http data
87 AcceptFilter https data
90 <p>Le filtre <code>TCP_DEFER_ACCEPT</code> de Linux ne supporte pas
91 la mise en tampon des requêtes http. Toute valeur autre que
92 <code>none</code> active le filtre <code>TCP_DEFER_ACCEPT</code>
93 pour ce protocole. Pour plus de détails, voir la page de
95 href="http://homepages.cwi.nl/~aeb/linux/man2html/man7/
96 tcp.7.html">tcp(7)</a>.</p>
98 <p>Sous Windows, les valeurs par défaut sont :</p>
99 <highlight language="config">
100 AcceptFilter http data
101 AcceptFilter https data
104 <p>Le module MPM pour Windows mpm_winnt utilise la directive
105 AcceptFilter comme commutateur de l'API AcceptEx(), et ne supporte
106 pas la mise en tampon du protocole http. Deux valeurs utilisent
107 l'API Windows AcceptEx() et vont recycler les sockets réseau entre
108 les connexions. <code>data</code> attend jusqu'à ce que les données
109 aient été transmises comme décrit plus haut, et le tampon de données
110 initiales ainsi que les adresses réseau finales sont tous extraits
111 grâce à une seule invocation d'AcceptEx(). <code>connect</code>
112 utilise l'API AcceptEx(), extrait aussi les adresses réseau finales,
113 mais à l'instar de <code>none</code>, la valeur <code>connect</code>
114 n'attend pas la transmission des données initiales.</p>
116 <p>Sous Windows, <code>none</code> utilise accept() au lieu
117 d'AcceptEx(), et ne recycle pas les sockets entre les connexions.
118 Ceci s'avère utile pour les interfaces réseau dont le pilote est
119 défectueux, ainsi que pour certains fournisseurs de réseau comme les
120 pilotes vpn, ou les filtres anti-spam, anti-virus ou
124 <seealso><directive module="core">Protocol</directive></seealso>
128 <name>AcceptPathInfo</name>
129 <description>Les ressources acceptent des informations sous forme d'un
130 nom de chemin en fin de requête.</description>
131 <syntax>AcceptPathInfo On|Off|Default</syntax>
132 <default>AcceptPathInfo Default</default>
133 <contextlist><context>server config</context>
134 <context>virtual host</context><context>directory</context>
135 <context>.htaccess</context></contextlist>
136 <override>FileInfo</override>
137 <compatibility>Disponible dans Apache httpd version 2.0.30 et
138 supérieures</compatibility>
142 <p>Cette directive permet de définir si les requêtes contenant des
143 informations sous forme d'un nom de chemin suivant le nom d'un
144 fichier réel (ou un fichier qui n'existe pas dans un répertoire qui
145 existe) doivent être acceptées ou rejetées. Les scripts peuvent
146 accéder à cette information via la variable d'environnement
147 <code>PATH_INFO</code>.</p>
149 <p>Supposons par exemple que <code>/test/</code> pointe vers un
150 répertoire qui ne contient que le fichier <code>here.html</code>.
151 Les requêtes pour <code>/test/here.html/more</code> et
152 <code>/test/nothere.html/more</code> vont affecter la valeur
153 <code>/more</code> à la variable d'environnement
154 <code>PATH_INFO</code>.</p>
156 <p>L'argument de la directive <directive>AcceptPathInfo</directive>
157 possède trois valeurs possibles :</p>
159 <dt><code>Off</code></dt><dd>Une requête ne sera acceptée que si
160 elle correspond à un chemin qui existe. Par conséquent, une requête
161 contenant une information de chemin après le nom de fichier réel
162 comme <code>/test/here.html/more</code> dans l'exemple ci-dessus
163 renverra une erreur "404 NOT FOUND".</dd>
165 <dt><code>On</code></dt><dd>Une requête sera acceptée si la partie
166 principale du chemin correspond à un fichier existant. Dans
167 l'exemple ci-dessus <code>/test/here.html/more</code>, la requête
168 sera acceptée si <code>/test/here.html</code> correspond à un nom de
171 <dt><code>Default</code></dt><dd>Le traitement des requêtes est
172 déterminé par le <a
173 href="../handler.html">gestionnaire</a> responsable de la requête.
174 Le gestionnaire de base pour les fichiers normaux rejette par défaut
175 les requêtes avec <code>PATH_INFO</code>. Les gestionnaires qui
176 servent des scripts, comme<a
177 href="mod_cgi.html">cgi-script</a> et <a
178 href="mod_isapi.html">isapi-handler</a>, acceptent en général par
179 défaut les requêtes avec <code>PATH_INFO</code>.</dd>
182 <p>Le but premier de la directive <code>AcceptPathInfo</code> est de
183 vous permettre de remplacer le choix du gestionnaire d'accepter ou
184 de rejeter <code>PATH_INFO</code>. Ce remplacement est nécessaire
185 par exemple, lorsque vous utilisez un <a
186 href="../filter.html">filtre</a>, comme <a
187 href="mod_include.html">INCLUDES</a>, pour générer un contenu basé
188 sur <code>PATH_INFO</code>. Le gestionnaire de base va en général
189 rejeter la requête, et vous pouvez utiliser la configuration
190 suivante pour utiliser un tel script :</p>
191 <highlight language="config">
192 <Files "mypaths.shtml">
194 SetOutputFilter INCLUDES
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
221 <highlight language="config">AccessFileName .acl</highlight>
223 <p>avant de renvoyer le document
224 <code>/usr/local/web/index.html</code>, le serveur va rechercher les
225 fichiers <code>/.acl</code>, <code>/usr/.acl</code>,
226 <code>/usr/local/.acl</code> et <code>/usr/local/web/.acl</code>
227 pour y lire d'éventuelles directives, à moins quelles n'aient été
228 désactivées avec</p>
230 <highlight language="config">
236 <seealso><directive module="core">AllowOverride</directive></seealso>
237 <seealso><a href="../configuring.html">Fichiers de configuration</a></seealso>
238 <seealso><a href="../howto/htaccess.html">Fichiers .htaccess</a></seealso>
242 <name>AddDefaultCharset</name>
243 <description>Paramètre jeu de caractères par défaut à ajouter quand le
244 type de contenu d'une réponse est <code>text/plain</code> ou
245 <code>text/html</code></description>
246 <syntax>AddDefaultCharset On|Off|<var>jeu de caractères</var></syntax>
247 <default>AddDefaultCharset Off</default>
248 <contextlist><context>server config</context>
249 <context>virtual host</context><context>directory</context>
250 <context>.htaccess</context></contextlist>
251 <override>FileInfo</override>
254 <p>Cette directive spécifie une valeur par défaut pour le paramètre
255 jeu de caractères du type de média (le nom d'un codage de
256 caractères) à ajouter à une réponse, si et seulement si le type de
257 contenu de la réponse est soit <code>text/plain</code>, soit
258 <code>text/html</code>. Ceci va remplacer
259 tout jeu de caractères spécifié dans le corps de la réponse via un
260 élément <code>META</code>, bien que cet effet dépende en fait
261 souvent de la configuration du client de l'utilisateur. La
262 définition de <code>AddDefaultCharset Off</code> désactive cette
263 fonctionnalité. <code>AddDefaultCharset On</code> ajoute un jeu de
264 caractères par défaut de <code>iso-8859-1</code>. Toute autre valeur
265 peut être définie via le paramètre <var>jeu de caractères</var>, qui
266 doit appartenir à la liste des <a
267 href="http://www.iana.org/assignments/character-sets">valeurs de
268 jeux de caractères enregistrés par l'IANA</a> à utiliser dans les
269 types de média Internet (types MIME).
272 <highlight language="config">AddDefaultCharset utf-8</highlight>
274 <p>La directive <directive>AddDefaultCharset</directive> ne doit
275 être utilisée que lorsque toutes les ressources textes auxquelles
276 elle s'applique possèdent le jeu de caractère spécifié, et qu'il est
277 trop contraignant de définir leur jeu de caractères
278 individuellement. Un exemple de ce type est l'ajout du paramètre jeu
279 de caractères aux ressources comportant un contenu généré, comme les
280 scripts CGI hérités qui peuvent être vulnérables à des attaques de
281 type cross-site scripting à cause des données utilisateurs incluses
282 dans leur sortie. Notez cependant qu'une meilleur solution consiste
283 à corriger (ou supprimer) ces scripts, car la définition d'un jeu de
284 caractères par défaut ne protège pas les utilisateurs qui ont activé
285 la fonctionnalité "Détection automatique de l'encodage des
286 caractères" dans leur navigateur.</p>
288 <seealso><directive module="mod_mime">AddCharset</directive></seealso>
292 <name>AllowEncodedSlashes</name>
293 <description>Détermine si les séparateurs de chemin encodés sont
294 autorisés à transiter dans les URLs tels quels</description>
295 <syntax>AllowEncodedSlashes On|Off|NoDecode</syntax>
296 <default>AllowEncodedSlashes Off</default>
297 <contextlist><context>server config</context><context>virtual
300 <compatibility>Disponible dans Apache httpd version 2.0.46 et
301 supérieures. L'option NoDecode est disponible depuis la version
302 2.3.12.</compatibility>
305 <p>La directive <directive>AllowEncodedSlashes</directive> permet
306 l'utilisation des URLs contenant des séparateurs de chemin
307 encodés dans la partie chemin
308 (<code>%2F</code> pour <code>/</code> et même <code>%5C</code> pour
309 <code>\</code> sur les systèmes concernés).</p>
311 <p>Avec la valeur par défaut, <code>Off</code>, de telles URLs sont
312 refusées et provoquent le renvoi d'une erreur 404 (Not found).</p>
314 <p>Avec la valeur <code>On</code>, ces URLs sont acceptées, et les
315 slashes encodés sont décodés comme tout autre caractère codé.</p>
317 <p>Avec la valeur <code>NoDecode</code>, ces URLs sont acceptées,
318 mais les slashes codés ne sont pas décodés et laissés dans leur état
321 <p>Définir <directive>AllowEncodedSlashes</directive> à
322 <code>On</code> est surtout utile en association avec
323 <code>PATH_INFO</code>.</p>
325 <note><title>Note</title>
326 <p>Si le codage des slashes dans la partie chemin est nécessaire,
327 l'utilisation de l'option <code>NoDecode</code> est fortement
328 recommandée par mesure de sécurité. Permettre le décodage des
329 slashes pourrait éventuellement induire l'autorisation de chemins
333 <seealso><directive module="core">AcceptPathInfo</directive></seealso>
337 <name>AllowOverride</name>
338 <description>Types de directives autorisées dans les fichiers
339 <code>.htaccess</code></description>
340 <syntax>AllowOverride All|None|<var>type directive</var>
341 [<var>type directive</var>] ...</syntax>
342 <default>AllowOverride None à partir de la version 2.3.9, AllowOverride
343 All pour les versions antérieures</default>
344 <contextlist><context>directory</context></contextlist>
347 <p>Lorsque le serveur trouve un fichier <code>.htaccess</code> (dont
348 le nom est défini par la directive <directive
349 module="core">AccessFileName</directive>), il doit savoir lesquelles
350 des directives placées dans ce fichier sont autorisées à modifier la
351 configuration préexistante.</p>
353 <note><title>Valable seulement dans les sections
354 <Directory></title>
355 La directive <directive>AllowOverride</directive> ne peut être
356 utilisée que dans les sections <directive type="section"
357 module="core">Directory</directive> définies sans expressions
358 rationnelles, et non dans les sections <directive
359 type="section" module="core">Location</directive>, <directive
360 module="core" type="section">DirectoryMatch</directive> ou
361 <directive type="section" module="core">Files</directive>.
364 <p>Lorsque cette directive et la directive <directive
365 module="core">AllowOverrideList</directive> sont définies à <code>None</code>, les
366 fichiers <a href="#accessfilename">.htaccess</a> sont totalement
367 ignorés. Dans ce cas, le serveur n'essaiera même pas de lire les
368 fichiers <code>.htaccess</code> du système de fichiers.</p>
370 <p>Lorsque cette directive est définie à <code>All</code>, toute
371 directive valable dans le <a
372 href="directive-dict.html#Context">Contexte</a> .htaccess sera
373 autorisée dans les fichiers <code>.htaccess</code>.</p>
375 <p>L'argument <var>type directive</var> peut contenir les
376 groupements de directives suivants :</p>
383 Permet l'utilisation des directives d'autorisation (<directive
384 module="mod_authz_dbm">AuthDBMGroupFile</directive>,
385 <directive module="mod_authn_dbm">AuthDBMUserFile</directive>,
386 <directive module="mod_authz_groupfile">AuthGroupFile</directive>,
387 <directive module="mod_authn_core">AuthName</directive>,
388 <directive module="mod_authn_core">AuthType</directive>, <directive
389 module="mod_authn_file">AuthUserFile</directive>, <directive
390 module="mod_authz_core">Require</directive>, <em>etc...</em>).</dd>
395 Permet l'utilisation des directives qui contrôlent les types de
396 documents (directives <directive
397 module="core">ErrorDocument</directive>, <directive
398 module="core">ForceType</directive>, <directive
399 module="mod_negotiation">LanguagePriority</directive>,
400 <directive module="core">SetHandler</directive>, <directive
401 module="core">SetInputFilter</directive>, <directive
402 module="core">SetOutputFilter</directive>, et directives du
403 module <module>mod_mime</module> Add* et Remove*), des metadonnées
404 des documents (<directive
405 module="mod_headers">Header</directive>, <directive
406 module="mod_headers">RequestHeader</directive>, <directive
407 module="mod_setenvif">SetEnvIf</directive>, <directive
408 module="mod_setenvif">SetEnvIfNoCase</directive>, <directive
409 module="mod_setenvif">BrowserMatch</directive>, <directive
410 module="mod_usertrack">CookieExpires</directive>, <directive
411 module="mod_usertrack">CookieDomain</directive>, <directive
412 module="mod_usertrack">CookieStyle</directive>, <directive
413 module="mod_usertrack">CookieTracking</directive>, <directive
414 module="mod_usertrack">CookieName</directive>), des directives du
415 module <module>mod_rewrite</module> directives (<directive
416 module="mod_rewrite">RewriteEngine</directive>, <directive
417 module="mod_rewrite">RewriteOptions</directive>, <directive
418 module="mod_rewrite">RewriteBase</directive>, <directive
419 module="mod_rewrite">RewriteCond</directive>, <directive
420 module="mod_rewrite">RewriteRule</directive>), des directives du
421 module <module>mod_alias</module> directives (<directive
422 module="mod_alias">Redirect</directive>, <directive
423 module="mod_alias">RedirectTemp</directive>, <directive
424 module="mod_alias">RedirectPermanent</directive>, <directive
425 module="mod_alias">RedirectMatch</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_dir">FallbackResource</directive>, <a
442 href="mod_autoindex.html#indexoptions.fancyindexing"><code>FancyIndexing</code></a>,
444 module="mod_autoindex">HeaderName</directive>, <directive
445 module="mod_autoindex">IndexIgnore</directive>, <directive
446 module="mod_autoindex">IndexOptions</directive>, <directive
447 module="mod_autoindex">ReadmeName</directive>,
448 <em>etc...</em>).</dd>
453 Permet l'utilisation des directives contrôlant l'accès au serveur
455 module="mod_access_compat">Allow</directive>, <directive
456 module="mod_access_compat">Deny</directive> et <directive
457 module="mod_access_compat">Order</directive>).</dd>
459 <!-- TODO - Update this for 2.4 syntax -->
464 <dt>Nonfatal=[Override|Unknown|All]</dt>
467 Permet d'utiliser l'option AllowOverride pour rendre les erreurs
468 de syntaxe non fatales dans les fichiers .htaccess : au lieu de
469 causer une Internal Server Error, les directives non autorisées ou
470 non reconnues seront ignorées et un avertissement enregistré dans
473 <li><strong>Nonfatal=Override</strong> rend les directives
474 interdite par AllowOverride non fatales.</li>
475 <li><strong>Nonfatal=Unknown</strong> rend les directives
476 inconnues non fatales. Sont concernées les erreurs de frappe
477 et les directives implémentées par un module non chargé.</li>
478 <li><strong>Nonfatal=All</strong> rend toutes les directives
479 précédentes non fatales.</li>
481 <p>Notez qu'une erreur de syntaxe dans une directive valide
482 causera toujours une internal server error.</p>
483 <note type="warning"><title>Sécurité</title>
484 Les erreurs non fatales peuvent être à l'origine de problèmes
485 de sécurité pour les utilisateurs de fichiers .htaccess. Par
486 exemple, si AllowOverride interdit AuthConfig, toute
487 configuration utilisateur destinée à restreindre l'accès à un
488 site ne sera pas prise en compte.
492 <dt>Options[=<var>Option</var>,...]</dt>
495 Permet l'utilisation des directives contrôlant les fonctionnalités
496 spécifiques d'un répertoire (<directive
497 module="core">Options</directive> et <directive
498 module="mod_include">XBitHack</directive>). "Options" doit être
499 suivi d'un signe "égal", puis d'une liste d'options séparées par des
500 virgules (pas d'espaces) ; ces options doivent être définies à
501 l'aide de la commande <directive
502 module="core">Options</directive>.
504 <note><title>Désactivation implicite des options</title>
505 <p>Bien que la liste des options disponibles dans les fichiers
506 .htaccess puisse être limitée par cette directive, tant qu'un
507 directive <directive module="core">Options</directive> est
508 autorisée, toute autre option héritée peut être désactivée en
509 utilisant la syntaxe non-relative. En d'autres termes, ce
510 mécanisme ne peut pas forcer une option spécifique à rester
511 <em>activée</em> tout en permettant à toute autre option d'être
516 AllowOverride Options=Indexes,MultiViews
524 <highlight language="config">AllowOverride AuthConfig Indexes</highlight>
526 <p>Dans l'exemple ci-dessus, toutes les directives qui ne font
527 partie ni du groupe <code>AuthConfig</code>, ni du groupe
528 <code>Indexes</code>, provoquent une erreur "internal
531 <note><p>Pour des raisons de sécurité et de performance, ne
532 définissez pas <code>AllowOverride</code> à autre chose que
533 <code>None</code> dans votre bloc <code><Directory /></code>.
534 Recherchez plutôt (ou créez) le bloc <code><Directory></code>
535 qui se réfère au répertoire où vous allez précisément placer un
536 fichier <code>.htaccess</code>.</p>
539 <seealso><directive module="core">AccessFileName</directive></seealso>
540 <seealso><directive module="core">AllowOverrideList</directive></seealso>
541 <seealso><a href="../configuring.html">Fichiers de configuration</a></seealso>
542 <seealso><a href="../howto/htaccess.html">Fichiers .htaccess</a></seealso>
546 <name>AllowOverrideList</name>
547 <description>Directives autorisées dans les fichiers <code>.htaccess</code></description>
548 <syntax>AllowOverrideList None|<var>directive</var>
549 [<var>directive-type</var>] ...</syntax>
550 <default>AllowOverrideList None</default>
551 <contextlist><context>directory</context></contextlist>
554 <p>Lorsque le serveur trouve un fichier <code>.htaccess</code>
555 (comme spécifié par la directive <directive
556 module="core">AccessFileName</directive>), il doit savoir lesquelles
557 des directives déclarées dans ce fichier peuvent remplacer des
558 directives des fichiers de configuration du serveur.</p>
560 <note><title>Seulement disponible dans les sections <Directory></title>
561 La directive <directive>AllowOverrideList</directive> n'est
562 disponible que dans les sections <directive type="section"
563 module="core">Directory</directive> spécifiées sans expressions
567 <p>Lorsque cette directive et la directive <directive
568 module="core">AllowOverride</directive> sont définies à
569 <code>None</code>, les fichiers <a
570 href="#accessfilename">.htaccess</a> sont totalement ignorés. Dans
571 ce cas, le serveur ne cherchera même pas à lire des fichiers
572 <code>.htaccess</code> dans le système de fichiers.</p>
576 <highlight language="config">
578 AllowOverrideList Redirect RedirectMatch
581 <p>Dans l'exemple ci-dessus, seules les directives
582 <code>Redirect</code> et <code>RedirectMatch</code> sont autorisées.
583 Toutes les autres provoqueront une erreur interne du serveur.</p>
587 <highlight language="config">
588 AllowOverride AuthConfig
589 AllowOverrideList CookieTracking CookieName
592 <p>Dans l'exemple ci-dessus, la directive <directive
593 module="core">AllowOverride</directive> autorise les directives du
594 groupement <code>AuthConfig</code>, et
595 <directive>AllowOverrideList</directive> n'autorise que deux
596 directives du groupement <code>FileInfo</code>. Toutes les autres
597 provoqueront une erreur interne du serveur.</p>
600 <seealso><directive module="core">AccessFileName</directive></seealso>
601 <seealso><directive module="core">AllowOverride</directive></seealso>
602 <seealso><a href="../configuring.html">Fichiers de configuration</a></seealso>
603 <seealso><a href="../howto/htaccess.html">Fichiers .htaccess</a></seealso>
607 <name>CGIMapExtension</name>
608 <description>Technique permettant de localiser l'interpréteur des
609 scripts CGI</description>
610 <syntax>CGIMapExtension <var>chemin CGI</var> <var>.extension</var></syntax>
611 <contextlist><context>directory</context><context>.htaccess</context>
613 <override>FileInfo</override>
614 <compatibility>NetWare uniquement</compatibility>
617 <p>Cette directive permet de contrôler la manière dont Apache httpd trouve
618 l'interpréteur servant à exécuter les scripts CGI. Par exemple, avec
619 la définition <code>CGIMapExtension sys:\foo.nlm .foo</code>, tous
620 les fichiers scripts CGI possédant une extension <code>.foo</code>
621 seront passés à l'interpréteur FOO.</p>
626 <name>ContentDigest</name>
627 <description>Active la génération d'un en-tête <code>Content-MD5</code>
628 dans la réponse HTTP</description>
629 <syntax>ContentDigest On|Off</syntax>
630 <default>ContentDigest Off</default>
631 <contextlist><context>server config</context><context>virtual
633 <context>directory</context><context>.htaccess</context>
635 <override>Options</override>
636 <status>Expérimental</status>
639 <p>Cette directive active la génération d'un en-tête
640 <code>Content-MD5</code> selon les définitions des RFC 1864 et
643 <p>MD5 est un algorithme permettant de générer un condensé (parfois
644 appelé "empreinte") à partir de données d'une taille aléatoire ; le
645 degré de précision est tel que la moindre altération des données
646 d'origine entraîne une altération de l'empreinte.</p>
648 <p>L'en-tête <code>Content-MD5</code> permet de vérifier
649 l'intégrité de la réponse HTTP dans son ensemble. Un serveur mandataire
650 ou un client peut utiliser cet en-tête pour rechercher une
651 éventuelle modification accidentelle de la réponse au cours de sa
652 transmission. Exemple d'en-tête :</p>
655 Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
658 <p>Notez que des problèmes de performances peuvent affecter votre
659 serveur, car l'empreinte est générée pour chaque requête (il n'y a
660 pas de mise en cache).</p>
662 <p>L'en-tête <code>Content-MD5</code> n'est envoyé qu'avec les
663 documents servis par le module <module>core</module>, à l'exclusion
664 de tout autre module. Ainsi, les documents SSI, les sorties de
665 scripts CGI, et les réponses à des requêtes partielles (byte range)
666 ne comportent pas cet en-tête.</p>
671 <name>DefaultRuntimeDir</name>
672 <description>Répertoire de base des fichiers créés au cours de l'exécution du serveur</description>
673 <syntax>DefaultRuntimeDir <var>chemin-répertoire</var></syntax>
674 <default>DefaultRuntimeDir DEFAULT_REL_RUNTIMEDIR (logs/)</default>
675 <contextlist><context>server config</context></contextlist>
678 <p>La directive <directive>DefaultRuntimeDir</directive> permet de
679 définir le répertoire dans lequel le serveur va créer les différents
680 fichiers relatifs à son exécution (mémoire partagée, verrous,
681 etc...). Si le chemin spécifié est relatif, le chemin absolu sera
682 généré relativement à la valeur de la directive
683 <directive>ServerRoot</directive>.</p>
685 <p><strong>Example</strong></p>
686 <highlight language="config">
687 DefaultRuntimeDir scratch/
690 <p>La valeur par défaut de la directive
691 <directive>DefaultRuntimeDir</directive> peut être modifiée en
692 changeant la valeur de la macro <code>DEFAULT_REL_RUNTIMEDIR</code>
693 définie à la compilation.</p>
695 <p>Note: si la valeur de <directive>ServerRoot</directive> n'a pas
696 été spécifiée avant d'utiliser cette directive, c'est la valeur par
697 défaut de <directive>ServerRoot</directive> qui sera utilisée pour
698 définir la base du répertoire.</p>
702 href="../misc/security_tips.html#serverroot">conseils à propos de
703 sésurité</a> pour plus d'informations en vue de définir correctement les
704 permissions sur la racine du serveur <directive>ServerRoot</directive></seealso>
708 <name>DefaultType</name>
709 <description>Les seuls effets de cette directive sont des émissions
710 d'avertissements si sa valeur est différente de <code>none</code>. Dans
711 les versions précédentes, DefaultType permettait de spécifier un type de
712 média à assigner par défaut au contenu d'une réponse pour lequel aucun
713 autre type de média n'avait été trouvé.
715 <syntax>DefaultType <var>type média|none</var></syntax>
716 <default>DefaultType none</default>
717 <contextlist><context>server config</context><context>virtual
719 <context>directory</context><context>.htaccess</context>
721 <override>FileInfo</override>
722 <compatibility>L'argument <code>none</code> est disponible dans les
723 versions d'Apache httpd 2.2.7 et supérieures. Tous les autres choix sont
724 DESACTIVÉS à partir des version 2.3.x.</compatibility>
727 <p>Cette directive a été désactivée. Pour la compatibilité
728 ascendante avec les anciens fichiers de configuration, elle peut
729 être spécifiée avec la valeur <code>none</code>, c'est à dire sans
730 type de médium par défaut. Par exemple :</p>
732 <highlight language="config">DefaultType None</highlight>
734 <p><code>DefaultType None</code> n'est disponible que dans les
735 versions d'Apache 2.2.7 et supérieures.</p>
737 <p>Utilisez le fichier de configuration mime.types et la directive
738 <directive module="mod_mime">AddType</directive> pour configurer
739 l'assignement d'un type de médium via les extensions de fichiers, ou
740 la directive <directive module="core">ForceType</directive> pour
741 attribuer un type de médium à des ressources spécifiques. Dans le
742 cas contraire, le serveur enverra sa réponse sans champ d'en-tête
743 Content-Type, et le destinataire devra déterminer lui-même le type
744 de médium.</p>
750 <description>Permet de définir une variable</description>
751 <syntax>Define <var>nom-paramètre</var> [<var>valeur-paramètre</var>]</syntax>
752 <contextlist><context>server config</context><context>virtual host</context>
753 <context>directory</context></contextlist>
756 <p>Avec un seul paramètre, l'effet de la directive
757 <directive>Define</directive> est identique à celui de l'argument
758 <code>-D</code> du programme <program>httpd</program>. Il permet de
759 modifier le comportement des sections <directive module="core"
760 type="section">IfDefine</directive> sans avoir à ajouter d'argument
761 <code>-D</code> au sein des scripts de démarrage.</p>
763 <p>De plus, le second paramètre permet d'affecter une valeur à la
764 variable définie par le premier. Cette variable peut être référencée
765 dans le fichier de configuration via la syntaxe <code>${VAR}</code>.
766 La portée de la variable est toujours globale, et n'est jamais
767 limitée à la section de configuration courante.</p>
769 <highlight language="config">
770 <IfDefine TEST>
771 Define servername test.example.com
773 <IfDefine !TEST>
774 Define servername www.example.com
778 DocumentRoot /var/www/${servername}/htdocs
781 <p>Le caractère ":" est interdit dans les noms de variables afin
782 d'éviter les conflits avec la syntaxe de la directive <directive
783 module="mod_rewrite">RewriteMap</directive>.</p>
787 <directivesynopsis type="section">
788 <name>Directory</name>
789 <description>Regroupe un ensemble de directives qui ne s'appliquent
790 qu'au répertoire concerné du système de fichiers, à ses
791 sous-répertoires, et à leur contenu.</description>
792 <syntax><Directory <var>chemin répertoire</var>>
793 ... </Directory></syntax>
794 <contextlist><context>server config</context><context>virtual
799 <p>Les balises <directive type="section">Directory</directive> et
800 <code></Directory></code> permettent de regrouper un ensemble
801 de directives qui ne s'appliquent qu'au répertoire précisé,
802 à ses sous-répertoires, et aux fichiers situés dans ces
803 sous-répertoires. Toute directive
804 autorisée dans un contexte de répertoire peut être utilisée.
805 <var>chemin répertoire</var> est soit le chemin absolu d'un
806 répertoire, soit une chaîne de caractères avec caractères génériques
807 utilisant la comparaison Unix de style shell. Dans une chaîne de
808 caractères avec caractères génériques, <code>?</code> correspond à
809 un caractère quelconque, et <code>*</code> à toute chaîne de
810 caractères. Les intervalles de caractères <code>[]</code> sont aussi
811 autorisés. Aucun caractère générique ne peut remplacer le caractère
812 `/', si bien que l'expression <code><Directory
813 /*/public_html></code> ne conviendra pas pour le chemin
814 * <code>/home/user/public_html</code>, alors que <code><Directory
815 /home/*/public_html></code> conviendra. Exemple :</p>
817 <highlight language="config">
818 <Directory "/usr/local/httpd/htdocs">
819 Options Indexes FollowSymLinks
824 <p>Soyez prudent avec l'argument <var>chemin répertoire</var> : il
825 doit correspondre exactement au chemin du système de fichier
826 qu'Apache httpd utilise pour accéder aux fichiers. Les directives
827 comprises dans une section <code><Directory></code> ne
828 s'appliqueront pas aux fichiers du même répertoire auxquels on
829 aura accédé via un chemin différent, per exemple via un lien
833 <p> Les <glossary ref="regex">Expressions rationnelles</glossary>
834 peuvent aussi être utilisées en ajoutant le caractère
835 <code>~</code>. Par exemple :</p>
837 <highlight language="config">
838 <Directory ~ "^/www/[0-9]{3}">
843 <p>pourra correspondre à tout répertoire situé dans /www/ et dont le
844 nom se compose de trois chiffres.</p>
846 <p>Si plusieurs sections <directive
847 type="section">Directory</directive> (sans expression rationnelle)
848 correspondent au répertoire (ou à un de ses parents) qui contient le
849 document, les directives de la section <directive
850 type="section">Directory</directive> dont le chemin est le plus
851 court sont appliquées en premier, en s'intercalant avec les
852 directives des fichiers <a href="#accessfilename">.htaccess</a>. Par
855 <highlight language="config">
860 <Directory "/home">
861 AllowOverride FileInfo
865 <p>l'accès au document <code>/home/web/dir/doc.html</code> emprunte
866 le chemin suivant :</p>
869 <li>Aplication de la directive <code>AllowOverride None</code>
870 (qui désactive les fichiers <code>.htaccess</code>).</li>
872 <li>Application de la directive <code>AllowOverride
873 FileInfo</code> (pour le répertoire <code>/home</code>).</li>
875 <li>Application de toute directive <code>FileInfo</code> qui se
876 trouverait dans d'éventuels fichiers <code>/home/.htaccess</code>,
877 <code>/home/web/.htaccess</code> ou
878 <code>/home/web/dir/.htaccess</code>, dans cet ordre.</li>
881 <p>Les directives associées aux répertoires sous forme d'expressions
882 rationnelles ne sont prises en compte qu'une fois toutes les
883 directives des sections sans expressions rationnelles appliquées.
884 Alors, tous les répertoires avec expressions rationnelles sont
885 testés selon l'ordre dans lequel ils apparaissent dans le fichier de
886 configuration. Par exemple, avec</p>
888 <highlight language="config">
889 <Directory ~ "abc$">
890 # ... directives ici ...
894 <p>la section avec expression rationnelle ne sera prise en compte
895 qu'après les sections <directive
896 type="section">Directory</directive> sans expression rationnelle
897 et les fichiers <code>.htaccess</code>. Alors, l'expression
898 rationnelle conviendra pour <code>/home/abc/public_html/abc</code>
899 et la section <directive type="section">Directory</directive>
900 correspondante s'appliquera.</p>
902 <p><strong>Notez que la politique d'accès par défaut
903 dans les sections <code><Directory /></code> consiste à
904 autoriser tout accès sans restriction. Ceci signifie qu'Apache httpd va servir tout fichier
905 correspondant à une URL. Il est recommandé de modifier cette
906 situation à l'aide d'un bloc du style</strong></p>
908 <highlight language="config">
914 <p><strong>puis d'affiner la configuration pour les répertoires que vous
915 voulez rendre accessibles. Voir la page <a
916 href="../misc/security_tips.html">Conseils à propos de sécurité</a>
917 pour plus de détails.</strong></p>
919 <p>Les sections <directive type="section">Directory</directive> se situent
920 dans le fichier <code>httpd.conf</code>. Les directives <directive
921 type="section">Directory</directive> ne peuvent pas être imbriquées
922 et ne sont pas autorisées dans les sections <directive module="core"
923 type="section">Limit</directive> ou <directive module="core"
924 type="section">LimitExcept</directive>.</p>
926 <seealso><a href="../sections.html">Comment fonctionnent les sections
927 <Directory>, <Location> et <Files></a> pour des
928 explications à propos de la manière dont ces différentes sections se
929 combinent entre elles à la réception d'une requête</seealso>
932 <directivesynopsis type="section">
933 <name>DirectoryMatch</name>
934 <description>Regroupe des directives qui s'appliquent au contenu de répertoires
935 du système de fichiers correspondant à une expression rationnelle</description>
936 <syntax><DirectoryMatch <var>regex</var>>
937 ... </DirectoryMatch></syntax>
938 <contextlist><context>server config
939 </context><context>virtual host</context>
943 <p>Les balises <directive type="section">DirectoryMatch</directive>
944 et <code></DirectoryMatch></code> permettent de regrouper un
945 ensemble de directives qui ne s'appliqueront qu'au répertoire
946 précisé (et aux fichiers qu'il contient), comme pour la section <directive
947 module="core" type="section">Directory</directive>. Cependant, le
948 répertoire est précisé sous la forme d'une <glossary
949 ref="regex">expression rationnelle</glossary>. Par exemple :</p>
951 <highlight language="config">
952 <DirectoryMatch "^/www/(.+/)?[0-9]{3}">
954 </DirectoryMatch>
957 <p>conviendrait pour les sous-répertoires de <code>/www/</code> dont
958 le nom se compose de trois chiffres.</p>
960 <note><title>Compatibilité</title>
961 Avant la version 2.3.9, cette directive s'appliquait aussi aux
962 sous-répertoires (comme la directive <directive module="core"
963 type="section">Directory</directive>), et ne tenait pas compte du
964 symbole de fin de ligne ($). Depuis la version 2.3.9, seuls les
965 répertoires qui correspondent à l'expression sont affectés par les
966 directives contenues dans la section.
969 <note><title>slash de fin</title>
970 Cette directive s'applique aux requêtes pour des répertoires avec
971 ou sans slash de fin ; les expressions contenant un symbole de fin
972 de ligne ($) doivent donc faire l'objet d'une attention
976 <seealso><directive type="section" module="core">Directory</directive>
977 pour une description de la manière dont les expressions rationnelles
978 sont traitées en présence d'autres sections <directive
979 type="section">Directory</directive> sans expressions rationnelles</seealso>
981 href="../sections.html">Comment fonctionnent les sections
982 <Directory>, <Location> et <Files></a> pour une
983 explication à propos de la manière dont ces différentes sections se
984 combinent entre elles à la réception d'une requête</seealso>
988 <name>DocumentRoot</name>
989 <description>Racine principale de l'arborescence des documents visible
990 depuis Internet</description>
991 <syntax>DocumentRoot <var>chemin répertoire</var></syntax>
992 <default>DocumentRoot /usr/local/apache/htdocs</default>
993 <contextlist><context>server config</context><context>virtual
998 <p>Cette directive permet de définir le répertoire à partir duquel
999 <program>httpd</program> va servir les fichiers. S'il ne correspond
1000 pas à un <directive module="mod_alias">Alias</directive>, le chemin
1001 de l'URL sera ajouté par le serveur à la racine des documents afin
1002 de construire le chemin du document recherché. Exemple :</p>
1004 <highlight language="config">DocumentRoot "/usr/web"</highlight>
1006 <p>un accès à <code>http://my.example.com/index.html</code> se
1007 réfère alors à <code>/usr/web/index.html</code>. Si <var>chemin
1008 répertoire</var> n'est pas un chemin absolu, il est considéré comme
1009 relatif au chemin défini par la directive <directive
1010 module="core">ServerRoot</directive>.</p>
1012 <p>Le répertoire défini par la directive
1013 <directive>DocumentRoot</directive> ne doit pas comporter de slash
1016 <seealso><a href="../urlmapping.html#documentroot">Mise en
1017 correspondance des URLs avec le système de fichiers</a></seealso>
1018 </directivesynopsis>
1020 <directivesynopsis type="section">
1022 <description>Contient des directives qui ne s'appliquent que si la
1023 condition correspondant à la section <directive type="section"
1024 module="core">If</directive> ou <directive type="section"
1025 module="core">ElseIf</directive> précédente n'est pas satisfaite par la
1026 requête à l'exécution</description>
1027 <syntax><Else> ... </Else></syntax>
1028 <contextlist><context>server config</context><context>virtual host</context>
1029 <context>directory</context><context>.htaccess</context>
1031 <override>All</override>
1034 <p>La section <directive type="section">Else</directive> applique
1035 les directives qu'elle contient si et seulement si les conditions
1036 correspondant à la section <directive type="section">If</directive>
1037 ou <directive type="section">ElseIf</directive> immédiatement
1038 supérieure et dans la même portée n'ont pas été satisfaites. Par
1041 <highlight language="config">
1042 <If "-z req('Host')">
1050 <p>La condition de la section <directive
1051 type="section">If</directive> serait satisfaite pour les requêtes
1052 HTTP/1.0 sans en-tête <var>Host:</var>, alors que celle de la section
1053 <directive type="section">Else</directive> le serait pour les
1054 requêtes comportant un en-tête <var>Host:</var>.</p>
1057 <seealso><directive type="section" module="core">If</directive></seealso>
1058 <seealso><directive type="section" module="core">ElseIf</directive></seealso>
1059 <seealso><a href="../sections.html">Fonctionnement des sections <Directory>, <Location>,
1060 <Files></a> pour une explication de la manière dont ces
1061 différentes section se combinent entre elles lorsqu'une requête est
1062 reçue. Les directives <directive type="section">If</directive>,
1063 <directive type="section">ElseIf</directive>, et <directive
1064 type="section">Else</directive> s'appliquent en dernier.</seealso>
1065 </directivesynopsis>
1067 <directivesynopsis type="section">
1069 <description>Contient des directives qui ne s'appliquent que si la
1070 condition correspondante est satisfaite par une requête à l'exécution,
1071 alors que la condition correspondant à la section <directive
1072 type="section" module="core">If</directive> ou <directive
1073 type="section">ElseIf</directive> précédente ne l'était pas.</description>
1074 <syntax><ElseIf <var>expression</var>> ... </ElseIf></syntax>
1075 <contextlist><context>server config</context><context>virtual host</context>
1076 <context>directory</context><context>.htaccess</context>
1078 <override>All</override>
1081 <p>La section <directive type="section">ElseIf</directive> applique
1082 les directives qu'elle contient si et seulement si d'une part la
1083 condition correspondante est satisfaite, et d'autre part la condition
1084 correspondant à la section <directive type="section">If</directive>
1085 ou <directive type="section">ElseIf</directive> de la même portée ne
1086 l'est pas. Par exemple, dans :</p>
1088 <highlight language="config">
1089 <If "-R '10.1.0.0/16'">
1092 <ElseIf "-R '10.0.0.0/8'">
1100 <p>La condition correspondant à la section <directive
1101 type="section">ElseIf</directive> est satisfaite si l'adresse
1102 distante de la requête appartient au sous-réseau 10.0.0.0/8, mais
1103 pas si elle appartient au sous-réseau 10.1.0.0/16.</p>
1106 <seealso><a href="../expr.html">Les expressions dans le serveur HTTP
1107 Apache</a>, pour une référence complète et d'autres exemples.</seealso>
1108 <seealso><directive type="section" module="core">If</directive></seealso>
1109 <seealso><directive type="section" module="core">Else</directive></seealso>
1110 <seealso><a href="../sections.html">Fonctionnement des sections <Directory>, <Location>,
1111 <Files></a> pour une explication de la manière dont ces
1112 différentes section se combinent entre elles lorsqu'une requête est
1113 reçue. Les directives <directive type="section">If</directive>,
1114 <directive type="section">ElseIf</directive>, et <directive
1115 type="section">Else</directive> s'appliquent en dernier.</seealso>
1116 </directivesynopsis>
1119 <name>EnableMMAP</name>
1120 <description>Utilise la projection en mémoire (Memory-Mapping) pour
1121 lire les fichiers pendant qu'ils sont servis</description>
1122 <syntax>EnableMMAP On|Off</syntax>
1123 <default>EnableMMAP On</default>
1124 <contextlist><context>server config</context><context>virtual
1126 <context>directory</context><context>.htaccess</context>
1128 <override>FileInfo</override>
1131 <p>Cette directive définit si <program>httpd</program> peut utiliser
1132 la projection en mémoire (Memory-Mapping) quand il doit lire le contenu
1133 d'un fichier pendant qu'il est servi. Par défaut, lorsque le
1134 traitement d'une requête requiert l'accès aux données contenues dans
1135 un fichier -- par exemple, pour servir un fichier interprété par le
1136 serveur à l'aide de <module>mod_include</module> -- Apache httpd projette
1137 le fichier en mémoire si le système d'exploitation le permet.</p>
1139 <p>Cette projection en mémoire induit parfois une amélioration des
1140 performances. Sur certains systèmes cependant, il est préférable de
1141 désactiver la projection en mémoire afin d'éviter certains problèmes
1142 opérationnels :</p>
1145 <li>Sur certains systèmes multi-processeurs, la projection en
1146 mémoire peut dégrader les performances du programme
1147 <program>httpd</program>.</li>
1148 <li>S'il fait l'objet d'une projection en mémoire par
1149 <program>httpd</program>, la suppression ou la troncature d'un
1150 fichier peut provoquer un crash de <program>httpd</program> avec une
1151 erreur de segmentation.</li>
1154 <p>Pour les configurations de serveur sujettes à ce genre de
1155 problème, il est préférable de désactiver la projection en mémoire
1156 des fichiers servis en spécifiant :</p>
1158 <highlight language="config">EnableMMAP Off</highlight>
1160 <p>Pour les montages NFS, cette fonctionnalité peut être
1161 explicitement désactivée pour les fichiers concernés en spécifiant
1164 <highlight language="config">
1165 <Directory "/path-to-nfs-files">
1170 </directivesynopsis>
1173 <name>EnableSendfile</name>
1174 <description>Utilise le support sendfile du noyau pour servir les
1175 fichiers aux clients</description>
1176 <syntax>EnableSendfile On|Off</syntax>
1177 <default>EnableSendfile Off</default>
1178 <contextlist><context>server config</context><context>virtual
1180 <context>directory</context><context>.htaccess</context>
1182 <override>FileInfo</override>
1183 <compatibility>Disponible dans les versions 2.0.44 et
1184 supérieures. Par défaut à Off depuis la version 2.3.9.</compatibility>
1187 <p>Cette directive définit si le programme <program>httpd</program>
1188 peut utiliser le support sendfile du noyau pour transmettre le
1189 contenu des fichiers aux clients. Par défaut, lorsque le traitement
1190 d'une requête ne requiert pas l'accès aux données contenues dans un
1191 fichier -- par exemple, pour la transmission d'un fichier statique
1192 -- Apache httpd utilise sendfile pour transmettre le contenu du fichier
1193 sans même lire ce dernier, si le système d'exploitation le
1196 <p>Ce mécanisme sendfile évite la séparation des opérations de
1197 lecture et d'envoi, ainsi que les réservations de tampons. sur
1198 certains systèmes cependant, ou sous certains systèmes de fichiers,
1199 il est préférable de désactiver cette fonctionnalité afin d'éviter
1200 certains problèmes opérationnels :</p>
1203 <li>Certains systèmes peuvent présenter un support sendfile
1204 défectueux que le système de compilation n'a pas détecté, en
1205 particulier si les exécutables ont été compilés sur une autre
1206 machine, puis copiés sur la première avec un support sendfile
1207 défectueux.</li>
1208 <li>Sous Linux, l'utilisation de sendfile induit des bogues lors de
1209 la récupération des paquets de vérification TCP (TCP-checksum) avec
1210 certaines cartes réseau lorsqu'on utilise IPv6.</li>
1211 <li>Sous Linux sur Itanium, <code>sendfile</code> peut s'avérer incapable de
1212 traiter les fichiers de plus de 2 Go.</li>
1213 <li>Avec un montage réseau de <directive
1214 module="core">DocumentRoot</directive> (par exemple NFS, SMB, CIFS,
1216 noyau peut s'avérer incapable de servir un fichier de ce montage
1217 réseau en passant par son propre cache.</li>
1220 <p>Pour les configurations de serveur non sujettes à ce genre de
1221 problème, vous pouvez activer cette fonctionnalité en
1222 spécifiant :</p>
1224 <highlight language="config">EnableSendfile On</highlight>
1226 <p>Pour les montages réseau, cette fonctionnalité peut être
1227 explicitement désactivée pour les fichiers concernés en spécifiant
1230 <highlight language="config">
1231 <Directory "/path-to-nfs-files">
1235 <p>Veuillez noter que la configuration de la directive
1236 <directive>EnableSendfile</directive> dans un contexte de répertoire
1237 ou de fichier .htaccess n'est pas supportée par
1238 <module>mod_cache_disk</module>. Le module ne prend en compte la
1239 définition de <directive>EnableSendfile</directive> que dans un
1243 </directivesynopsis>
1247 <description>Interrompt la lecture de la configuration avec un message
1248 d'erreur personnalisé</description>
1249 <syntax>Error <var>message</var></syntax>
1250 <contextlist><context>server config</context><context>virtual host</context>
1251 <context>directory</context><context>.htaccess</context>
1253 <compatibility>à partir de la version 2.3.9</compatibility>
1256 <p>Si une erreur peut être détectée dans la configuration, souvent
1257 un module manquant, cette
1258 directive peut être utilisée pour générer un message d'erreur
1259 personnalisé, et interrompre la lecture de la configuration. </p>
1261 <highlight language="config">
1263 # vérification du chargement de mod_include
1264 <IfModule !include_module>
1265 Error "mod_include is required by mod_foo. Load it with LoadModule."
1268 # vérification de la définition de SSL ou (exclusif) NOSSL
1269 <IfDefine SSL>
1270 <IfDefine NOSSL>
1271 Error "Both SSL and NOSSL are defined. Define only one of them."
1274 <IfDefine !SSL>
1275 <IfDefine !NOSSL>
1276 Error "Either SSL or NOSSL must be defined."
1282 </directivesynopsis>
1285 <name>ErrorDocument</name>
1286 <description>Document que le serveur renvoie au client en cas
1287 d'erreur</description>
1288 <syntax>ErrorDocument <var>code erreur</var> <var>document</var></syntax>
1289 <contextlist><context>server config</context><context>virtual
1291 <context>directory</context><context>.htaccess</context>
1293 <override>FileInfo</override>
1296 <p>Apache httpd peut traiter les problèmes et les erreurs de quatre
1297 manières,</p>
1300 <li>afficher un simple message d'erreur au contenu fixe</li>
1302 <li>afficher un message personnalisé</li>
1304 <li>rediriger vers un <var>chemin d'URL</var> local pour traiter
1305 le problème ou l'erreur</li>
1307 <li>rediriger vers une <var>URL</var> externe pour traiter
1308 le problème ou l'erreur</li>
1311 <p>La première option constitue le comportement par défaut; pour
1312 choisir une des trois autres options, il faut configurer Apache à
1313 l'aide de la directive <directive>ErrorDocument</directive>, suivie
1314 du code de la réponse HTTP et d'une URL ou d'un message. Apache
1315 httpd fournit parfois des informations supplémentaires à propos du
1316 problème ou de l'erreur.</p>
1318 <p>Les URLs peuvent commencer par un slash (/) pour les chemins web
1319 locaux (relatifs au répertoire défini par la directive <directive
1320 module="core">DocumentRoot</directive>), ou se présenter sous la
1321 forme d'une URL complète que le client pourra résoudre.
1322 Alternativement, un message à afficher par le navigateur pourra être
1323 fourni. Exemples :</p>
1325 <highlight language="config">
1326 ErrorDocument 500 http://foo.example.com/cgi-bin/tester
1327 ErrorDocument 404 /cgi-bin/bad_urls.pl
1328 ErrorDocument 401 /subscription_info.html
1329 ErrorDocument 403 "Sorry can't allow you access today"
1330 ErrorDocument 403 Forbidden!
1333 <p>De plus, on peut spécifier la valeur spéciale <code>default</code>
1334 pour indiquer l'utilisation d'un simple message d'Apache httpd codé en
1335 dur. Bien que non nécessaire dans des circonstances normales, la
1336 spécification de la valeur <code>default</code> va permettre de
1337 rétablir l'utilisation du simple message d'Apache httpd codé en dur pour
1338 les configurations qui sans cela, hériteraient d'une directive
1339 <directive>ErrorDocument</directive> existante.</p>
1341 <highlight language="config">
1342 ErrorDocument 404 /cgi-bin/bad_urls.pl
1344 <Directory /web/docs>
1345 ErrorDocument 404 default
1349 <p>Notez que lorsque vous spécifiez une directive
1350 <directive>ErrorDocument</directive> pointant vers une URL distante
1351 (c'est à dire tout ce qui commence par le préfixe http), le serveur
1353 envoyer une redirection au client afin de lui indiquer où trouver le
1354 document, même dans le cas où ce document se trouve sur le serveur
1355 local. Ceci a de nombreuses conséquences dont la plus importante
1356 réside dans le fait que le client ne recevra pas le code d'erreur
1357 original, mais au contraire un code de statut de redirection. Ceci
1358 peut en retour semer la confusion chez les robots web et divers
1359 clients qui tentent de déterminer la validité d'une URL en examinant
1360 le code de statut. De plus, si vous utilisez une URL distante avec
1361 <code>ErrorDocument 401</code>, le client ne saura pas qu'il doit
1362 demander un mot de passe à l'utilisateur car il ne recevra pas le
1363 code de statut 401. C'est pourquoi, <strong>si vous utilisez une
1364 directive <code>ErrorDocument 401</code>, elle devra faire référence
1365 à un document par le biais d'un chemin local.</strong></p>
1367 <p>Microsoft Internet Explorer (MSIE) ignore par défaut les messages
1368 d'erreur générés par le serveur lorsqu'ils sont trop courts et
1369 remplacent ses propres messages d'erreur "amicaux". Le seuil de
1370 taille varie en fonction du type d'erreur, mais en général, si la
1371 taille de votre message d'erreur est supérieure à 512 octets, il y a
1372 peu de chances pour que MSIE l'occulte, et il sera affiché par ce
1373 dernier. Vous trouverez d'avantage d'informations dans l'article de
1374 la base de connaissances Microsoft <a
1375 href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807"
1378 <p>Bien que la plupart des messages d'erreur internes originaux
1379 puissent être remplacés, ceux-ci sont cependant conservés dans
1380 certaines circonstances sans tenir compte de la définition de la
1381 directive <directive module="core">ErrorDocument</directive>. En
1382 particulier, en cas de détection d'une requête mal formée, le
1383 processus de traitement normal des requêtes est immédiatement
1384 interrompu, et un message d'erreur interne est renvoyé, ceci afin de
1385 se prémunir contre les problèmes de sécurité liés aux requêtes mal
1388 <p>Si vous utilisez mod_proxy, il est en général préférable
1389 d'activer <directive
1390 module="mod_proxy">ProxyErrorOverride</directive> afin d'être en
1391 mesure de produire des messages d'erreur personnalisés pour le
1392 compte de votre serveur d'origine. Si vous n'activez pas
1393 ProxyErrorOverride, Apache httpd ne générera pas de messages d'erreur
1394 personnalisés pour le contenu mandaté.</p>
1398 <seealso><a href="../custom-error.html">documentation sur la
1399 personnalisation des réponses</a></seealso>
1400 </directivesynopsis>
1403 <name>ErrorLog</name>
1404 <description>Définition du chemin du journal des erreurs</description>
1405 <syntax> ErrorLog <var>chemin fichier</var>|syslog[:<var>facility</var>]</syntax>
1406 <default>ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows and OS/2)</default>
1407 <contextlist><context>server config</context><context>virtual
1412 <p>La directive <directive>ErrorLog</directive> permet de définir le
1413 nom du fichier dans lequel le serveur va journaliser toutes les
1414 erreurs qu'il rencontre. Si le <var>chemin fichier</var> n'est pas
1415 absolu, il est considéré comme relatif au chemin défini par la
1416 directive <directive module="core">ServerRoot</directive>.</p>
1418 <highlight language="config">ErrorLog "/var/log/httpd/error_log"</highlight>
1420 <p>Si le <var>chemin fichier</var> commence par une barre verticale
1421 "<code>(|)</code>", il est considéré comme une commande à lancer pour traiter la
1422 journalisation de l'erreur.</p>
1424 <highlight language="config">ErrorLog "|/usr/local/bin/httpd_errors"</highlight>
1426 <p>Voir les notes à propos des <a href="../logs.html#piped">journaux
1427 redirigés</a> pour plus d'informations.</p>
1429 <p>L'utilisation de <code>syslog</code> à la place d'un nom de
1430 fichier active la journalisation via syslogd(8) si le système le
1431 supporte. Le dispositif syslog par défaut est <code>local7</code>,
1432 mais vous pouvez le modifier à l'aide de la syntaxe
1433 <code>syslog:<var>facility</var></code>, où <var>facility</var> peut
1434 être remplacé par un des noms habituellement documentés dans la page
1435 de man syslog(1). Le dispositif syslog <code>local7</code> est
1436 global, et si il est modifié dans un serveur virtuel, le dispositif
1437 final spécifié affecte l'ensemble du serveur</p>
1439 <highlight language="config">ErrorLog syslog:user</highlight>
1441 <p>SECURITE : Voir le document <a
1442 href="../misc/security_tips.html#serverroot">conseils à propos de
1443 sécurité</a> pour des détails sur les raisons pour lesquelles votre
1444 sécurité peut être compromise si le répertoire contenant les
1445 fichiers journaux présente des droits en écriture pour tout autre
1446 utilisateur que celui sous lequel le serveur est démarré.</p>
1447 <note type="warning"><title>Note</title>
1448 <p>Lors de la spécification d'un chemin de fichier sur les
1449 plates-formes non-Unix, on doit veiller à n'utiliser que des
1450 slashes (/), même si la plate-forme autorise l'utilisation des
1451 anti-slashes (\). Et d'une manière générale, il est recommandé de
1452 n'utiliser que des slashes (/) dans les fichiers de
1456 <seealso><directive module="core">LogLevel</directive></seealso>
1457 <seealso><a href="../logs.html">Fichiers journaux du serveur HTTP Apache</a></seealso>
1458 </directivesynopsis>
1461 <name>ErrorLogFormat</name>
1462 <description>Spécification du format des entrées du journal des erreurs</description>
1463 <syntax> ErrorLogFormat [connection|request] <var>format</var></syntax>
1464 <contextlist><context>server config</context><context>virtual host</context>
1466 <compatibility>Disponible depuis la version 2.3.9 d'Apache</compatibility>
1469 <p>La directive <directive>ErrorLogFormat</directive> permet de
1470 spécifier quelles informations supplémentaires vont être enregistrées
1471 dans le journal des erreurs en plus du message habituel.</p>
1473 <highlight language="config">
1475 ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"
1478 <p>La spécification de <code>connection</code> ou
1479 <code>request</code> comme premier paramètre permet de définir des
1480 formats supplémentaires, ce qui a pour effet de journaliser des
1481 informations additionnelles lorsque le premier message est
1482 enregistré respectivement pour une connexion ou une requête
1483 spécifique. Ces informations additionnelles ne sont enregistrées
1484 qu'une seule fois par connexion/requête. Si le traitement d'une
1485 connexion ou d'une requête ne génère aucun message dans le journal,
1486 alors aucune information additionnelle n'est enregistrée.</p>
1488 <p>Il peut arriver que certains items de la chaîne de format ne
1489 produisent aucune sortie. Par exemple, l'en-tête Referer n'est
1490 présent que si le message du journal est associé à une requête et s'il
1491 est généré à un moment où l'en-tête Referer a déjà été lu par le
1492 client. Si aucune sortie n'est générée, le comportement par défaut
1493 consiste à supprimer tout ce qui se trouve entre l'espace précédent
1494 et le suivant. Ceci implique que la ligne de journalisation est
1495 divisée en champs ne contenant pas d'espace séparés par des espaces.
1496 Si un item de la chaîne de format ne génère aucune sortie,
1497 l'ensemble du champ est omis. Par exemple, si l'adresse distante
1498 <code>%a</code> du format <code>[%t] [%l] [%a] %M </code> n'est
1499 pas disponible, les crochets qui l'entourent ne seront eux-mêmes pas
1500 enregistrés. Il est possible d'échapper les espaces par un anti-slash
1501 afin qu'ils ne soient pas considérés comme séparateurs de champs.
1502 La combinaison '% ' (pourcentage espace) est un délimiteur de
1503 champ de taille nulle qui ne génère aucune sortie.</p>
1505 <p>Ce comportement peut être changé en ajoutant des modificateurs à
1506 l'item de la chaîne de format. Le modificateur <code>-</code>
1507 (moins) provoque l'enregistrement d'un signe moins si l'item
1508 considéré ne génère aucune sortie. Pour les formats à enregistrement
1509 unique par connexion/requête, il est aussi possible d'utiliser le
1510 modificateur <code>+</code> (plus). Si un item ne générant aucune
1511 sortie possède le modificateur plus, la ligne dans son ensemble est
1514 <p>Un modificateur de type entier permet d'assigner un niveau de
1515 sévérité à un item de format. L'item considéré ne
1516 sera journalisé que si la sévérité du message n'est pas
1517 plus haute que le niveau de sévérité spécifié. Les
1518 valeurs possibles vont de 1 (alert) à 15 (trace8), en passant par 4
1519 (warn) ou 7 (debug).</p>
1521 <p>Par exemple, voici ce qui arriverait si vous ajoutiez des
1522 modificateurs à l'item <code>%{Referer}i</code> qui enregistre le
1523 contenu de l'en-tête <code>Referer</code>.</p>
1525 <table border="1" style="zebra">
1526 <columnspec><column width=".3"/><column width=".7"/></columnspec>
1528 <tr><th>Item modifié</th><th>Signification</th></tr>
1531 <td><code>%-{Referer}i</code></td>
1532 <td>Enregistre le caractère <code>-</code> si l'en-tête
1533 <code>Referer</code> n'est pas défini.</td>
1537 <td><code>%+{Referer}i</code></td>
1538 <td>N'enregistre rien si l'en-tête
1539 <code>Referer</code> n'est pas défini.</td>
1543 <td><code>%4{Referer}i</code></td>
1544 <td>N'enregistre le contenu de l'en-tête <code>Referer</code> que si
1545 la sévérité du message de journalisation est supérieure à 4.</td>
1550 <p>Certains items de format acceptent des paramètres supplémentaires
1551 entre accolades.</p>
1553 <table border="1" style="zebra">
1554 <columnspec><column width=".2"/><column width=".8"/></columnspec>
1556 <tr><th>Chaîne de format</th> <th>Description</th></tr>
1558 <tr><td><code>%%</code></td>
1559 <td>Le signe pourcentage</td></tr>
1561 <tr><td><code>%a</code></td>
1562 <td>Adresse IP et port clients</td></tr>
1564 <tr><td><code>%{c}a</code></td>
1565 <td>Port et adresse IP sous-jacents du correspondant pour la
1566 connexion (voir le module
1567 <module>mod_remoteip</module>)</td></tr>
1569 <tr><td><code>%A</code></td>
1570 <td>Adresse IP et port locaux</td></tr>
1572 <tr><td><code>%{<em>name</em>}e</code></td>
1573 <td>Variable d'environnement de requête <em>name</em></td></tr>
1575 <tr><td><code>%E</code></td>
1576 <td>Etat d'erreur APR/OS et chaîne</td></tr>
1578 <tr><td><code>%F</code></td>
1579 <td>Nom du fichier source et numéro de ligne de l'appel du
1582 <tr><td><code>%{<em>name</em>}i</code></td>
1583 <td>En-tête de requête <em>name</em></td></tr>
1585 <tr><td><code>%k</code></td>
1586 <td>Nombre de requêtes persistantes pour cette connexion</td></tr>
1588 <tr><td><code>%l</code></td>
1589 <td>Sévérité du message</td></tr>
1591 <tr><td><code>%L</code></td>
1592 <td>Identifiant journal de la requête</td></tr>
1594 <tr><td><code>%{c}L</code></td>
1595 <td>Identifiant journal de la connexion</td></tr>
1597 <tr><td><code>%{C}L</code></td>
1598 <td>Identifiant journal de la connexion si utilisé dans la
1599 portée de la connexion, vide sinon</td></tr>
1601 <tr><td><code>%m</code></td>
1602 <td>Nom du module qui effectue la journalisation du message</td></tr>
1604 <tr><td><code>%M</code></td>
1605 <td>Le message effectif</td></tr>
1607 <tr><td><code>%{<em>name</em>}n</code></td>
1608 <td>Note de requête <em>name</em></td></tr>
1610 <tr><td><code>%P</code></td>
1611 <td>Identifiant du processus courant</td></tr>
1613 <tr><td><code>%T</code></td>
1614 <td>Identifiant du thread courant</td></tr>
1616 <tr><td><code>%{g}T</code></td>
1617 <td>Identifiant unique de thread système du thread courant
1618 (l'identifiant affiché par la commande <code>top</code> par
1619 exemple ; seulement sous Linux pour l'instant)</td></tr>
1621 <tr><td><code>%t</code></td>
1622 <td>L'heure courante</td></tr>
1624 <tr><td><code>%{u}t</code></td>
1625 <td>L'heure courante avec les microsecondes</td></tr>
1627 <tr><td><code>%{cu}t</code></td>
1628 <td>L'heure courante au format compact ISO 8601, avec les
1629 microsecondes</td></tr>
1631 <tr><td><code>%v</code></td>
1632 <td>Le nom de serveur canonique <directive
1633 module="core">ServerName</directive> du serveur courant.</td></tr>
1635 <tr><td><code>%V</code></td>
1636 <td>Le nom de serveur du serveur qui sert la requête en accord
1637 avec la définition de la directive <directive module="core"
1638 >UseCanonicalName</directive>.</td></tr>
1640 <tr><td><code>\ </code> (anti-slash espace)</td>
1641 <td>Espace non délimiteur</td></tr>
1643 <tr><td><code>% </code> (pourcentage espace)</td>
1644 <td>Délimiteur de champ (aucune sortie)</td></tr>
1647 <p>L'item de format identifiant journal <code>%L</code> génère un
1648 identifiant unique pour une connexion ou une requête. Il peut servir
1649 à déterminer quelles lignes correspondent à la même connexion ou
1650 requête ou quelle requête est associée à tel connexion. Un item de
1651 format <code>%L</code> est aussi disponible dans le module
1652 <module>mod_log_config</module>, mais il permet dans ce contexte de
1653 corréler les entrées du journal des accès avec celles du journal des
1654 erreurs. Si le module <module>mod_unique_id</module> est chargé,
1655 c'est son identifiant unique qui sera utilisé comme identifiant de
1656 journal pour les requêtes.</p>
1658 <highlight language="config">
1659 # Exemple (format par défaut)
1660 ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
1663 <p>Cet exemple renverrait un message d'erreur du style :</p>
1666 [Thu May 12 08:28:57.652118 2011] [core:error] [pid 8777:tid 4326490112] [client ::1:58619] File does not exist: /usr/local/apache2/htdocs/favicon.ico
1669 <p>Notez que, comme indiqué plus haut, certains champs sont
1670 totalement supprimés s'ils n'ont pas été définis.</p>
1672 <highlight language="config">
1673 # Exemple (similaire au format 2.2.x)
1674 ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
1677 <highlight language="config">
1678 # Exemple avancé avec identifiants journal de requête/connexion
1679 ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M"
1680 ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"
1681 ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'"
1682 ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'"
1683 ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"
1687 <seealso><directive module="core">ErrorLog</directive></seealso>
1688 <seealso><directive module="core">LogLevel</directive></seealso>
1689 <seealso><a href="../logs.html">Fichiers journaux du serveur HTTP Apache</a></seealso>
1690 </directivesynopsis>
1693 <name>ExtendedStatus</name>
1694 <description>Extrait des informations d'état étendues pour chaque
1695 requête</description>
1696 <syntax>ExtendedStatus On|Off</syntax>
1697 <default>ExtendedStatus Off</default>
1698 <contextlist><context>server config</context></contextlist>
1702 <p>Cette option permet d'extraire des données supplémentaires
1703 concernant la requête en cours de traitement pour un processus
1704 donné, ainsi qu'un résumé d'utilisation ; vous pouvez accéder à
1705 ces variables pendant l'exécution en configurant
1706 <module>mod_status</module>. Notez que d'autres modules sont
1707 susceptibles de s'appuyer sur ce tableau de bord.</p>
1709 <p>Cette directive s'applique au serveur dans son ensemble, et ne
1710 peut pas être activée/désactivée pour un serveur virtuel
1711 particulier. Notez que l'extraction des informations d'état étendues
1712 peut ralentir le serveur. Notez aussi que cette définition ne peut
1713 pas être modifiée au cours d'un redémarrage graceful.</p>
1716 <p>Notez que le chargement de <module>mod_status</module> définit
1717 automatiquement ExtendedStatus à On, et que d'autres modules tiers
1718 sont susceptibles d'en faire de même. De tels modules ont besoin
1719 d'informations détaillées à propos de l'état de tous les processus.
1720 Depuis la version 2.3.6, <module>mod_status</module> a définit la
1721 valeur par défaut à On, alors qu'elle était à Off dans les versions
1722 antérieures.</p>
1727 </directivesynopsis>
1730 <name>FileETag</name>
1731 <description>Caractéristiques de fichier utilisées lors de la génération
1732 de l'en-tête de réponse HTTP ETag pour les fichiers statiques</description>
1733 <syntax>FileETag <var>composant</var> ...</syntax>
1734 <default>FileETag MTime Size</default>
1735 <contextlist><context>server config</context><context>virtual
1737 <context>directory</context><context>.htaccess</context>
1739 <override>FileInfo</override>
1740 <compatibility>La valeur par défaut était "INode MTime Size"
1741 dans les versions 2.3.14 et antérieures.</compatibility>
1745 La directive <directive>FileETag</directive> définit les
1746 caractéristiques de fichier utilisées lors de la génération de
1747 l'en-tête de réponse HTTP <code>ETag</code> (entity tag) quand le
1748 document est contenu dans un fichier statique(la valeur de
1750 est utilisée dans le cadre de la gestion du cache pour préserver la
1751 bande passante réseau). La directive
1752 <directive>FileETag</directive> vous permet maintenant de choisir
1753 quelles caractéristiques du fichier vont être utilisées, le cas
1754 échéant. Les mots-clés reconnus sont :
1758 <dt><strong>INode</strong></dt>
1759 <dd>Le numéro d'i-node du fichier sera inclus dans le processus de
1760 génération</dd>
1761 <dt><strong>MTime</strong></dt>
1762 <dd>La date et l'heure auxquelles le fichier a été modifié la
1763 dernière fois seront incluses</dd>
1764 <dt><strong>Size</strong></dt>
1765 <dd>La taille du fichier en octets sera incluse</dd>
1766 <dt><strong>All</strong></dt>
1767 <dd>Tous les champs disponibles seront utilisés. Cette définition
1768 est équivalente à :
1769 <highlight language="config">FileETag INode MTime Size</highlight></dd>
1770 <dt><strong>None</strong></dt>
1771 <dd>Si le document se compose d'un fichier, aucun champ
1772 <code>ETag</code> ne sera inclus dans la réponse</dd>
1775 <p>Les mots-clés <code>INode</code>, <code>MTime</code>, et
1776 <code>Size</code> peuvent être préfixés par <code>+</code> ou
1777 <code>-</code>, ce qui permet de modifier les valeurs par défaut
1778 héritées d'un niveau de configuration plus général. Tout mot-clé
1779 apparaissant sans aucun préfixe annule entièrement et immédiatement
1780 les configurations héritées.</p>
1782 <p>Si la configuration d'un répertoire contient
1783 <code>FileETag INode MTime Size</code>, et si un de
1784 ses sous-répertoires contient <code>FileETag -INode</code>, la
1785 configuration de ce sous-répertoire (qui sera propagée vers tout
1786 sous-répertoire qui ne la supplante pas), sera équivalente à
1787 <code>FileETag MTime Size</code>.</p>
1788 <note type="warning"><title>Avertissement</title>
1789 Ne modifiez pas les valeurs par défaut pour les répertoires ou
1790 localisations où WebDAV est activé et qui utilisent
1791 <module>mod_dav_fs</module> comme fournisseur de stockage.
1792 <module>mod_dav_fs</module> utilise
1793 <code>MTime Size</code> comme format fixe pour les
1794 comparaisons de champs <code>ETag</code> dans les requêtes
1795 conditionnelles. Ces requêtes conditionnelles échoueront si le
1796 format <code>ETag</code> est modifié via la directive
1797 <directive>FileETag</directive>.
1799 <note><title>Inclusions côté serveur</title>
1800 Aucun champ ETag n'est généré pour les réponses interprétées par
1801 <module>mod_include</module>, car l'entité de la réponse peut
1802 changer sans modification de l'INode, du MTime, ou de la taille du
1803 fichier statique contenant les directives SSI.
1808 </directivesynopsis>
1810 <directivesynopsis type="section">
1812 <description>Contient des directives qui s'appliquent aux fichiers
1813 précisés</description>
1814 <syntax><Files <var>nom fichier</var>> ... </Files></syntax>
1815 <contextlist><context>server config</context><context>virtual
1817 <context>directory</context><context>.htaccess</context>
1819 <override>All</override>
1822 <p>La directive <directive type="section">Files</directive> limite
1823 la portée des directives qu'elle contient aux fichiers précisés.
1824 Elle est comparable aux directives <directive module="core"
1825 type="section">Directory</directive> et <directive module="core"
1826 type="section">Location</directive>. Elle doit se terminer par une
1827 balise <code></Files></code>. Les directives contenues dans
1828 cette section s'appliqueront à tout objet dont le nom de base (la
1829 dernière partie du nom de fichier) correspond au fichier spécifié.
1830 Les sections <directive type="section">Files</directive> sont
1831 traitées selon l'ordre dans lequel elles apparaissent dans le
1832 fichier de configuration, après les sections <directive module="core"
1833 type="section">Directory</directive> et la lecture des fichiers
1834 <code>.htaccess</code>, mais avant les sections <directive
1835 type="section" module="core">Location</directive>. Notez que les
1836 sections <directive type="section">Files</directive> peuvent être
1837 imbriquées dans les sections <directive type="section"
1838 module="core">Directory</directive> afin de restreindre la portion
1839 du système de fichiers à laquelle ces dernières vont
1842 <p>L'argument <var>filename</var> peut contenir un nom de fichier
1843 ou une chaîne de caractères avec caractères génériques, où
1844 <code>?</code> remplace un caractère, et <code>*</code> toute chaîne
1845 de caractères.</p>
1846 <highlight language="config">
1847 <Files "cat.html">
1848 # Insérer ici des directives qui s'appliquent au fichier cat.html
1851 <Files "?at.*">
1852 # Les directives insérées ici s'appliqueront aux fichiers
1853 # cat.html, bat.html, hat.php, et ainsi de suite.
1857 <p>On peut aussi utiliser les <glossary
1858 ref="regex">Expressions rationnelles</glossary> en ajoutant la
1859 caractère <code>~</code>. Par exemple :</p>
1861 <highlight language="config">
1862 <Files ~ "\.(gif|jpe?g|png)$">
1867 <p>correspondrait à la plupart des formats graphiques de l'Internet.
1868 Il est cependant préférable d'utiliser la directive <directive
1869 module="core" type="section">FilesMatch</directive>.</p>
1871 <p>Notez qu'à la différence des sections <directive type="section"
1872 module="core">Directory</directive> et <directive type="section"
1873 module="core">Location</directive>, les sections <directive
1874 type="section">Files</directive> peuvent être utilisées dans les
1875 fichiers <code>.htaccess</code>. Ceci permet aux utilisateurs de
1876 contrôler l'accès à leurs propres ressources, fichier par
1880 <seealso><a href="../sections.html">Comment fonctionnent les sections
1881 <Directory>, <Location> et <Files></a> pour une
1882 explication de la manière dont ces différentes sections se combinent
1883 entre elles à la réception d'une requête</seealso>
1884 </directivesynopsis>
1886 <directivesynopsis type="section">
1887 <name>FilesMatch</name>
1888 <description>Contient des directives qui s'appliquent à des fichiers
1889 spécifiés sous la forme d'expressions rationnelles</description>
1890 <syntax><FilesMatch <var>expression rationnelle</var>> ...
1891 </FilesMatch></syntax>
1892 <contextlist><context>server config</context><context>virtual
1894 <context>directory</context><context>.htaccess</context>
1896 <override>All</override>
1899 <p>La section <directive type="section">FilesMatch</directive>
1900 limite la portée des directives qu'elle contient aux fichiers
1901 spécifiés, tout comme le ferait une section <directive module="core"
1902 type="section">Files</directive>. Mais elle accepte aussi les
1903 <glossary ref="regex">expressions rationnelles</glossary>. Par
1906 <highlight language="config">
1907 <FilesMatch "\.(gif|jpe?g|png)$">
1912 <p>correspondrait à la plupart des formats graphiques de
1916 <seealso><a href="../sections.html">Comment fonctionnent les sections
1917 <Directory>, <Location> et <Files></a> pour une
1918 explication de la manière dont ces différentes sections se combinent
1919 entre elles à la réception d'une requête</seealso>
1920 </directivesynopsis>
1923 <name>ForceType</name>
1924 <description>Force le type de médium spécifié dans le champ d'en-tête
1925 HTTP Content-Type pour les fichiers correspondants</description>
1926 <syntax>ForceType <var>type médium</var>|None</syntax>
1927 <contextlist><context>directory</context><context>.htaccess</context>
1929 <override>FileInfo</override>
1930 <compatibility>Intégré dans le coeur d'Apache httpd depuis la version
1934 <p>Lorsqu'elle est placée dans un fichier <code>.htaccess</code> ou
1935 une section <directive type="section"
1936 module="core">Directory</directive>, <directive type="section"
1937 module="core">Location</directive>, ou <directive type="section"
1938 module="core">Files</directive>, cette directive force
1939 l'identification du type MIME des fichiers spécifiés à la valeur de
1940 l'argument <var>type médium</var>. Par exemple, si vous possédez un
1941 répertoire ne contenant que des fichiers GIF, et si vous ne voulez
1942 pas leur ajouter l'extension <code>.gif</code>, vous pouvez utiliser
1945 <highlight language="config">ForceType image/gif</highlight>
1947 <p>Notez que cette directive l'emporte sur d'autres associations de
1948 type de médium indirectes définies dans mime.types ou via la
1949 directive <directive module="mod_mime">AddType</directive>.</p>
1951 <p>Vous pouvez aussi annuler toute définition plus générale de
1952 <directive>ForceType</directive> en affectant la valeur
1953 <code>None</code> à l'argument <var>type médium</var> :</p>
1955 <highlight language="config">
1956 # force le type MIME de tous les fichiers à image/gif:
1957 <Location /images>
1961 # mais utilise les méthodes classiques d'attribution du type MIME
1962 # dans le sous-répertoire suivant :
1963 <Location /images/mixed>
1968 <p>A la base, cette directive écrase le type de contenu généré pour
1969 les fichiers statiques servis à partir du sytème de fichiers. Pour
1970 les ressources autres que les fichiers statiques pour lesquels le
1971 générateur de réponse spécifie en général un type de contenu, cette
1972 directive est ignorée.</p>
1975 </directivesynopsis>
1977 <name>GprofDir</name>
1978 <description>Répertoire dans lequel écrire les données de profiling
1979 gmon.out.</description>
1980 <syntax>GprofDir <var>/tmp/gprof/</var>|<var>/tmp/gprof/</var>%</syntax>
1981 <contextlist><context>server config</context><context>virtual host</context>
1985 <p>Lorsque le serveur a été compilé avec le support du profiling
1986 gprof, la directive <directive>GprofDir</directive> permet de
1987 spécifier dans quel répertoire les fichiers <code>gmon.out</code>
1988 doivent être écrits lorsque le processus s'arrête. Si l'argument se
1989 termine par un caractère pourcentage ('%'), des sous-répertoires
1990 sont créés pour chaque identifiant de processus.</p>
1992 <p>Cette directive ne fonctionne actuellement qu'avec le MPM
1993 <module>prefork</module>.</p>
1995 </directivesynopsis>
1998 <name>HostnameLookups</name>
1999 <description>Active la recherche DNS sur les adresses IP des
2000 clients</description>
2001 <syntax>HostnameLookups On|Off|Double</syntax>
2002 <default>HostnameLookups Off</default>
2003 <contextlist><context>server config</context><context>virtual
2005 <context>directory</context></contextlist>
2008 <p>Cette directive active la recherche DNS afin de pouvoir
2009 journaliser les nom d'hôtes (et les passer aux programmes CGI et aux
2010 inclusions SSI via la variable <code>REMOTE_HOST</code>). La valeur
2011 <code>Double</code> déclenche une double recherche DNS inverse. En
2012 d'autres termes, une fois la recherche inverse effectuée, on lance
2013 une recherche directe sur le résultat de cette dernière. Au moins
2014 une des adresses IP fournies par la recherche directe doit
2015 correspondre à l'adresse originale (ce que l'on nomme
2016 <code>PARANOID</code> dans la terminologie "tcpwrappers").</p>
2018 <p>Quelle que soit la configuration, lorsqu'on utilise
2019 <module>mod_authz_host</module> pour contrôler l'accès en fonction
2020 du nom d'hôte, une double recherche DNS inverse est effectuée,
2021 sécurité oblige. Notez cependant que le résultat de cette double
2022 recherche n'est en général pas accessible, à moins que vous n'ayez
2023 spécifié <code>HostnameLookups Double</code>. Par exemple, si vous
2024 n'avez spécifié que <code>HostnameLookups On</code>, et si une
2025 requête concerne un objet protégé par des restrictions en fonction
2026 du nom d'hôte, quel que soit le résultat de la double recherche
2027 inverse, les programmes CGI ne recevront que le résultat de la
2028 recherche inverse simple dans la variable
2029 <code>REMOTE_HOST</code>.</p>
2031 <p>La valeur par défaut est <code>Off</code> afin de préserver le
2032 traffic réseau des sites pour lesquels la recherche inverse n'est
2033 pas vraiment nécessaire. Cette valeur par défaut est aussi bénéfique
2034 pour les utilisateurs finaux car il n'ont ainsi pas à subir de temps
2035 d'attente supplémentaires dus aux recherches DNS. Les sites
2036 fortement chargés devraient laisser cette directive à
2037 <code>Off</code>, car les recherches DNS peuvent prendre des temps
2038 très longs. Vous pouvez éventuellement utiliser hors ligne
2039 l'utilitaire <program>logresolve</program>, compilé par défaut dans
2040 le sous-répertoire <code>bin</code> de votre répertoire
2041 d'installation, afin de déterminer les noms d'hôtes associés aux
2042 adresses IP journalisées.</p>
2044 <p>Enfin, si vous avez des <a
2045 href="mod_authz_host.html#reqhost">directives Require à base de
2046 nom</a>, une recherche de nom d'hôte sera effectuée quelle que soit
2047 la définition de la directive <code>HostnameLookups</code>.</p>
2049 </directivesynopsis>
2051 <directivesynopsis type="section">
2053 <description>Contient des directives qui ne s'appliquent que si une
2054 condition est satisfaite au cours du traitement d'une
2055 requête</description>
2056 <syntax><If <var>expression</var>> ... </If></syntax>
2057 <contextlist><context>server config</context><context>virtual
2059 <context>directory</context><context>.htaccess</context>
2061 <override>All</override>
2064 <p>La directive <directive type="section">If</directive> évalue une
2065 expression à la volée, et applique les directives qu'elle contient
2066 si et seulement si l'expression renvoie la valeur "vrai". Par
2069 <highlight language="config"><If "-z req('Host')"></highlight>
2071 <p>serait satisfaite pour les requêtes HTTP/1.0 sans en-tête
2072 <var>Host:</var>. Les expressions peuvent contenir différents
2073 opérateurs de type shell pour la comparaison de chaînes
2074 (<code>=</code>, <code>!=</code>, <code><</code>, ...), la
2075 comparaison d'entiers (<code>-eq</code>, <code>-ne</code>, ...), ou
2076 à usages divers (<code>-n</code>, <code>-z</code>, <code>-f</code>,
2077 ...). Les expressions rationnelles sont aussi supportées,</p>
2079 <highlight language="config"><If "%{QUERY_STRING} =~ /(delete|commit)=.*?elem/"></highlight>
2081 <p>ainsi que les comparaison de modèles de type shell et de
2082 nombreuses autres opérations. Ces opérations peuvent être effectuées
2083 sur les en-têtes de requêtes (<code>req</code>), les variables
2084 d'environnement (<code>env</code>), et un grand nombre d'autres
2085 propriétés. La documentation complète est disponible dans <a
2086 href="../expr.html">Les expressions dans le serveur HTTP Apache</a>.</p>
2090 <seealso><a href="../expr.html">Les expressions dans le serveur HTTP
2091 Apache</a>, pour une référence complète et d'autres exemples.</seealso>
2092 <seealso><directive type="section" module="core">ElseIf</directive></seealso>
2093 <seealso><directive type="section" module="core">Else</directive></seealso>
2094 <seealso><a href="../sections.html">Comment fonctionnent les sections
2095 <Directory>, <Location> et <Files></a> pour une
2096 explication de la manière dont ces différentes sections se combinent
2097 entre elles à la réception d'une requête. Les
2098 directives <directive type="section">If</directive>, <directive
2099 type="section">ElseIf</directive>, et <directive
2100 type="section">Else</directive> s'appliquent en dernier.</seealso>
2101 </directivesynopsis>
2103 <directivesynopsis type="section">
2104 <name>IfDefine</name>
2105 <description>Contient des directives qui ne s'appliqueront que si un
2106 test retourne "vrai" au démarrage du serveur</description>
2107 <syntax><IfDefine [!]<var>paramètre</var>> ...
2108 </IfDefine></syntax>
2109 <contextlist><context>server config</context><context>virtual
2111 <context>directory</context><context>.htaccess</context>
2113 <override>All</override>
2116 <p>La section <code><IfDefine
2117 <var>test</var>>...</IfDefine></code> permet de
2118 conférer un caractère conditionnel à un ensemble de directives. Les
2119 directives situées à l'intérieur d'une section <directive
2120 type="section">IfDefine</directive> ne s'appliquent que si
2121 <var>test</var> est vrai. Si <var>test</var> est faux, tout ce qui
2122 se trouve entre les balises de début et de fin est ignoré.</p>
2124 <p><var>test</var> peut se présenter sous deux formes :</p>
2127 <li><var>nom paramètre</var></li>
2129 <li><code>!</code><var>nom paramètre</var></li>
2132 <p>Dans le premier cas, les directives situées entre les balises de
2133 début et de fin ne s'appliqueront que si le paramètre nommé <var>nom
2134 paramètre</var> est défini. Le second format inverse le test, et
2135 dans ce cas, les directives ne s'appliqueront que si <var>nom
2136 paramètre</var> n'est <strong>pas</strong> défini.</p>
2138 <p>L'argument <var>nom paramètre</var> est une définition qui peut
2139 être effectuée par la ligne de commande
2140 <program>httpd</program> via le paramètre
2141 <code>-D<var>paramètre</var></code> au démarrage du serveur, ou via la
2142 directive <directive module="core">Define</directive>.</p>
2144 <p>Les sections <directive type="section">IfDefine</directive>
2145 peuvent être imbriquées, ce qui permet d'implémenter un test
2146 multi-paramètres simple. Exemple :</p>
2148 <example>httpd -DReverseProxy -DUseCache -DMemCache ...</example>
2149 <highlight language="config">
2150 <IfDefine ReverseProxy>
2151 LoadModule proxy_module modules/mod_proxy.so
2152 LoadModule proxy_http_module modules/mod_proxy_http.so
2153 <IfDefine UseCache>
2154 LoadModule cache_module modules/mod_cache.so
2155 <IfDefine MemCache>
2156 LoadModule mem_cache_module modules/mod_mem_cache.so
2158 <IfDefine !MemCache>
2159 LoadModule cache_disk_module modules/mod_cache_disk.so
2165 </directivesynopsis>
2167 <directivesynopsis type="section">
2168 <name>IfModule</name>
2169 <description>Contient des directives qui ne s'appliquent qu'en fonction
2170 de la présence ou de l'absence d'un module spécifique</description>
2171 <syntax><IfModule [!]<var>fichier module</var>|<var>identificateur
2172 module</var>> ... </IfModule></syntax>
2173 <contextlist><context>server config</context><context>virtual
2175 <context>directory</context><context>.htaccess</context>
2177 <override>All</override>
2178 <compatibility>Les identificateurs de modules sont disponibles dans les
2179 versions 2.1 et supérieures.</compatibility>
2182 <p>La section <code><IfModule
2183 <var>test</var>>...</IfModule></code> permet de conférer à
2184 des directives un caractère conditionnel basé sur la présence d'un
2185 module spécifique. Les directives situées dans une section
2186 <directive type="section">IfModule</directive> ne s'appliquent que
2187 si <var>test</var> est vrai. Si <var>test</var> est faux, tout ce
2188 qui se trouve entre les balises de début et de fin est ignoré.</p>
2190 <p><var>test</var> peut se présenter sous deux formes :</p>
2193 <li><var>module</var></li>
2195 <li>!<var>module</var></li>
2198 <p>Dans le premier cas, les directives situées entre les balises de
2199 début et de fin ne s'appliquent que si le module <var>module</var>
2200 est présent -- soit compilé avec le binaire Apache httpd, soit chargé
2201 dynamiquement via la directive <directive module="mod_so"
2202 >LoadModule</directive>. Le second format inverse le test, et dans
2203 ce cas, les directives ne s'appliquent que si <var>module</var>
2204 n'est <strong>pas</strong> présent.</p>
2206 <p>L'argument <var>module</var> peut contenir soit l'identificateur
2207 du module, soit le nom du fichier source du module. Par exemple,
2208 <code>rewrite_module</code> est un identificateur et
2209 <code>mod_rewrite.c</code> le nom du fichier source
2210 correspondant. Si un module comporte plusieurs fichiers sources,
2211 utilisez le nom du fichier qui contient la chaîne de caractères
2212 <code>STANDARD20_MODULE_STUFF</code>.</p>
2214 <p>Les sections <directive type="section">IfModule</directive>
2215 peuvent être imbriquées, ce qui permet d'implémenter des tests
2216 multi-modules simples.</p>
2218 <note>Cette section ne doit être utilisée que si votre fichier de
2219 configuration ne fonctionne qu'en fonction de la présence ou de
2220 l'absence d'un module spécifique. D'une manière générale, il n'est
2221 pas nécessaire de placer les directives à l'intérieur de sections
2222 <directive type="section">IfModule</directive>.</note>
2224 </directivesynopsis>
2227 <name>Include</name>
2228 <description>Inclut d'autres fichiers de configuration dans un des
2229 fichiers de configuration du serveur</description>
2230 <syntax>Include <var>chemin-fichier</var>|<var>chemin-répertoire</var>|<var>wildcard</var></syntax>
2231 <contextlist><context>server config</context><context>virtual
2233 <context>directory</context>
2235 <compatibility>Utilisation des caractères génériques dans la partie nom
2236 de fichier depuis la version 2.0.41, et dans la partie chemin depuis la
2237 version 2.3.6</compatibility>
2240 <p>Cette directive permet l'inclusion d'autres fichiers de
2241 configuration dans un des fichiers de configuration du serveur.</p>
2243 <p>On peut utiliser des caractères génériques de style Shell
2244 (<code>fnmatch()</code>) aussi bien dans la partie nom de fichier du
2245 chemin que dans la partie répertoires pour inclure plusieurs
2247 seule fois, selon leur ordre alphabétique. De plus, si la directive
2248 <directive>Include</directive> pointe vers un répertoire, Apache
2249 httpd inclura tous les fichiers de ce répertoire et de tous ces
2250 sous-répertoires. L'inclusion de répertoires entiers est cependant
2251 déconseillée, car il est fréquent d'oublier des fichiers
2252 temporaires dans un répertoire, ce qui causerait une erreur
2253 <program>httpd</program> en cas d'inclusion. Pour inclure des
2254 fichiers qui correspondent à un certain modèle, comme *.conf par
2255 exemple, nous vous recommandons d'utiliser plutôt la syntaxe avec
2256 caractères génériques comme ci-dessous.</p>
2258 <p>La directive <directive module="core">Include</directive>
2259 <strong>échouera avec un code d'erreur</strong> si une expression
2260 contenant des caractères génériques ne correspond à aucun fichier.
2261 Pour ignorer les expressions contenant des caractères génériques ne
2262 correspondant à aucun fichier, utilisez la directive <directive
2263 module="core">IncludeOptional</directive>.</p>
2265 <p>Le chemin fichier spécifié peut être soit un chemin absolu, soit
2266 un chemin relatif au répertoire défini par la directive <directive
2267 module="core">ServerRoot</directive>.</p>
2271 <highlight language="config">
2272 Include /usr/local/apache2/conf/ssl.conf
2273 Include /usr/local/apache2/conf/vhosts/*.conf
2276 <p>ou encore, avec des chemins relatifs au répertoire défini par la
2277 directive <directive module="core">ServerRoot</directive> :</p>
2279 <highlight language="config">
2280 Include conf/ssl.conf
2281 Include conf/vhosts/*.conf
2284 <p>On peut aussi insérer des caractères génériques dans la partie
2285 répertoires du chemin. Dans l'exemple suivant, la directive
2286 échouera si aucun sous-répertoire de conf/vhosts ne contient au
2287 moins un fichier *.conf :</p>
2289 <highlight language="config">Include conf/vhosts/*/*.conf</highlight>
2291 <p>Par contre, dans l'exemple suivant, la directive sera simplement
2292 ignorée si aucun sous-répertoire de conf/vhosts ne contient au
2293 moins un fichier *.conf :</p>
2295 <highlight language="config">IncludeOptional conf/vhosts/*/*.conf</highlight>
2299 <seealso><directive module="core">IncludeOptional</directive></seealso>
2300 <seealso><program>apachectl</program></seealso>
2301 </directivesynopsis>
2304 <name>IncludeOptional</name>
2305 <description>Inclusion de fichiers dans le fichier de configuration</description>
2306 <syntax>IncludeOptional
2307 <var>chemin-fichier</var>|<var>chemin-répertoire</var>|<var>wildcard</var></syntax>
2308 <contextlist><context>server config</context><context>virtual host</context>
2309 <context>directory</context>
2311 <compatibility>Disponible à partir de la version 2.3.6 du serveur HTTP
2312 Apache</compatibility>
2315 <p>Cette directive permet d'inclure des fichiers dans les fichiers
2316 de configuration du serveur. Elle fonctionne de manière identique à
2317 la directive <directive module="core">Include</directive>, à
2318 l'exception du fait que si l'expression avec caractères génériques
2319 wilcard ne correspond à aucun fichier ou répertoire, elle sera
2320 ignorée silencieusement au lieu de causer une erreur.</p>
2324 <seealso><directive module="core">Include</directive></seealso>
2325 <seealso><program>apachectl</program></seealso>
2326 </directivesynopsis>
2329 <name>KeepAlive</name>
2330 <description>Active les connexions HTTP persistantes</description>
2331 <syntax>KeepAlive On|Off</syntax>
2332 <default>KeepAlive On</default>
2333 <contextlist><context>server config</context><context>virtual
2338 <p>L'extension Keep-Alive de HTTP/1.0 et l'implémentation des
2339 connexions persistantes dans HTTP/1.1 ont rendu possibles des
2340 sessions HTTP de longue durée, ce qui permet de transmettre
2341 plusieurs requêtes via la même connexion TCP. Dans certains cas, le
2342 gain en rapidité pour des documents comportant de nombreuses images
2343 peut atteindre 50%. Pour activer les connexions persistantes,
2344 définissez <code>KeepAlive On</code>.</p>
2346 <p>Pour les clients HTTP/1.0, les connexions persistantes ne seront
2347 mises en oeuvre que si elles ont été spécialement demandées par un
2348 client. De plus, une connexion persistante avec un client HTTP/1.0
2349 ne peut être utilisée que si la taille du contenu est connue
2350 d'avance. Ceci implique que les contenus dynamiques comme les
2351 sorties CGI, les pages SSI, et les listings de répertoires générés
2352 par le serveur n'utiliseront en général pas les connexions
2353 persistantes avec les clients HTTP/1.0. Avec les clients HTTP/1.1,
2354 les connexions persistantes sont utilisées par défaut, sauf
2355 instructions contraires. Si le client le demande, le transfert par
2356 tronçons de taille fixe (chunked encoding) sera utilisé afin de
2357 transmettre un contenu de longueur inconnue via une connexion
2360 <p>Lorsqu'un client utilise une connexion persistante, elle comptera
2361 pour une seule requête pour la directive <directive
2362 module="mpm_common">MaxConnectionsPerChild</directive>, quel
2363 que soit le nombre de requêtes transmises via cette connexion.</p>
2366 <seealso><directive module="core">MaxKeepAliveRequests</directive></seealso>
2367 </directivesynopsis>
2370 <name>KeepAliveTimeout</name>
2371 <description>Durée pendant laquelle le serveur va attendre une requête
2372 avant de fermer une connexion persistante</description>
2373 <syntax>KeepAliveTimeout <var>nombre</var>[ms]</syntax>
2374 <default>KeepAliveTimeout 5</default>
2375 <contextlist><context>server config</context><context>virtual
2378 <compatibility>La spécification d'une valeur en millisecondes est
2379 possible depuis les versions 2.3.2 et supérieures d'Apache httpd</compatibility>
2382 <p>Le nombre de secondes pendant lesquelles Apache httpd va attendre une
2383 requête avant de fermer la connexion. Le délai peut être défini en
2384 millisecondes en suffixant sa valeur par ms. La valeur du délai
2385 spécifiée par la directive <directive
2386 module="core">Timeout</directive> s'applique dès qu'une requête a
2387 été reçue.</p>
2389 <p>Donner une valeur trop élévée à
2390 <directive>KeepAliveTimeout</directive> peut induire des problèmes
2391 de performances sur les serveurs fortement chargés. Plus le délai
2392 est élévé, plus nombreux seront les processus serveur en attente de
2393 requêtes de la part de clients inactifs.</p>
2395 <p>Dans un contexte de serveur virtuel à base de nom, c'est
2396 la valeur de la paire adresse IP/port du serveur virtuel qui
2397 correspond le mieux qui sera utilisée.</p>
2399 </directivesynopsis>
2401 <directivesynopsis type="section">
2403 <description>Limite les contrôles d'accès que la section contient à
2404 certaines méthodes HTTP</description>
2405 <syntax><Limit <var>méthode</var> [<var>méthode</var>] ... > ...
2406 </Limit></syntax>
2407 <contextlist><context>directory</context><context>.htaccess</context>
2409 <override>AuthConfig, Limit</override>
2412 <p>Les contrôles d'accès s'appliquent normalement à
2413 <strong>toutes</strong> les méthodes d'accès, et c'est en général le
2414 comportement souhaité. <strong>Dans le cas général, les directives
2415 de contrôle d'accès n'ont pas à être placées dans une section
2416 <directive type="section">Limit</directive>.</strong></p>
2418 <p>La directive <directive type="section">Limit</directive> a pour
2419 but de limiter les effets des contrôles d'accès aux méthodes HTTP
2420 spécifiées. Pour toutes les autres méthodes, les restrictions
2421 d'accès contenues dans la section <directive
2422 type="section">Limit</directive> <strong>n'auront aucun
2423 effet</strong>. L'exemple suivant n'applique les contrôles d'accès
2424 qu'aux méthodes <code>POST</code>, <code>PUT</code>, et
2425 <code>DELETE</code>, en laissant les autres méthodes sans protection
2428 <highlight language="config">
2429 <Limit POST PUT DELETE>
2434 <p>La liste des noms de méthodes peut contenir une ou plusieurs
2435 valeurs parmi les suivantes : <code>GET</code>, <code>POST</code>,
2436 <code>PUT</code>, <code>DELETE</code>, <code>CONNECT</code>,
2437 <code>OPTIONS</code>, <code>PATCH</code>, <code>PROPFIND</code>,
2438 <code>PROPPATCH</code>, <code>MKCOL</code>, <code>COPY</code>,
2439 <code>MOVE</code>, <code>LOCK</code>, et <code>UNLOCK</code>.
2440 <strong>Le nom de méthode est sensible à la casse.</strong> Si la
2441 valeur <code>GET</code> est présente, les requêtes <code>HEAD</code>
2442 seront aussi concernées. La méthode <code>TRACE</code> ne peut pas
2443 être limitée (voir la directive <directive
2444 module="core">TraceEnable</directive>).</p>
2446 <note type="warning">Une section <directive
2447 type="section">LimitExcept</directive> doit toujours être préférée à
2448 une section <directive type="section">Limit</directive> pour la
2449 restriction d'accès, car une section <directive type="section"
2450 module="core">LimitExcept</directive> fournit une protection contre
2451 les méthodes arbitraires.</note>
2453 <p>Les directives <directive type="section">Limit</directive> et
2454 <directive type="section" module="core">LimitExcept</directive>
2455 peuvent être imbriquées. Dans ce cas, pour chaque niveau des
2456 directives <directive type="section">Limit</directive> ou <directive
2457 type="section" module="core">LimitExcept</directive>, ces dernières
2458 doivent restreindre l'accès pour les méthodes auxquelles les
2459 contrôles d'accès s'appliquent.</p>
2461 <note type="warning">Lorsqu'on utilise les directives <directive
2462 type="section">Limit</directive> ou <directive
2463 type="section">LimitExcept</directive> avec la directive <directive
2464 module="mod_authz_core">Require</directive>, la première directive
2465 <directive module="mod_authz_core">Require</directive> dont la
2466 condition est satisfaite autorise la requête, sans tenir compte de
2467 la présence d'autres directives <directive
2468 module="mod_authz_core">Require</directive>.</note>
2470 <p>Par exemple, avec la configuration suivante, tous les
2471 utilisateurs seront autorisés à effectuer des requêtes
2472 <code>POST</code>, et la directive <code>Require group
2473 editors</code> sera ignorée dans tous les cas :</p>
2475 <highlight language="config">
2476 <LimitExcept GET>
2478 </LimitExcept>
2480 Require group editors
2484 </directivesynopsis>
2486 <directivesynopsis type="section">
2487 <name>LimitExcept</name>
2488 <description>Applique les contrôles d'accès à toutes les méthodes HTTP,
2489 sauf celles qui sont spécifiées</description>
2490 <syntax><LimitExcept <var>méthode</var> [<var>méthode</var>] ... > ...
2491 </LimitExcept></syntax>
2492 <contextlist><context>directory</context><context>.htaccess</context>
2494 <override>AuthConfig, Limit</override>
2497 <p><directive type="section">LimitExcept</directive> et
2498 <code></LimitExcept></code> permettent de regrouper des
2499 directives de contrôle d'accès qui s'appliqueront à toutes les
2500 méthodes d'accès HTTP qui ne font <strong>pas</strong> partie de la
2501 liste des arguments ; en d'autres termes, elles ont un comportement
2502 opposé à celui de la section <directive type="section"
2503 module="core">Limit</directive>, et on peut les utiliser pour
2504 contrôler aussi bien les méthodes standards que les méthodes non
2505 standards ou non reconnues. Voir la documentation de la section
2506 <directive module="core" type="section">Limit</directive> pour plus
2507 de détails.</p>
2509 <p>Par exemple :</p>
2511 <highlight language="config">
2512 <LimitExcept POST GET>
2514 </LimitExcept>
2518 </directivesynopsis>
2521 <name>LimitInternalRecursion</name>
2522 <description>Détermine le nombre maximal de redirections internes et de
2523 sous-requêtes imbriquées</description>
2524 <syntax>LimitInternalRecursion <var>nombre</var> [<var>nombre</var>]</syntax>
2525 <default>LimitInternalRecursion 10</default>
2526 <contextlist><context>server config</context><context>virtual
2529 <compatibility>Disponible à partir de la version 2.0.47 d'Apache httpd</compatibility>
2532 <p>Une redirection interne survient, par exemple, quand on utilise
2533 la directive <directive module="mod_actions">Action</directive> qui
2534 redirige en interne la requête d'origine vers un script CGI. Une
2535 sous-requête est le mécanisme qu'utilise Apache httpd pour déterminer ce
2536 qui se passerait pour un URI s'il faisait l'objet d'une requête. Par
2537 exemple, <module>mod_dir</module> utilise les sous-requêtes pour
2538 rechercher les fichiers listés dans la directive <directive
2539 module="mod_dir">DirectoryIndex</directive>.</p>
2541 <p>La directive <directive>LimitInternalRecursion</directive> permet
2542 d'éviter un crash du serveur dû à un bouclage infini de redirections
2543 internes ou de sous-requêtes. De tels bouclages sont dus en général
2544 à des erreurs de configuration.</p>
2546 <p>La directive accepte, comme arguments, deux limites qui sont
2547 évaluées à chaque requête. Le premier <var>nombre</var> est le
2548 nombre maximum de redirections internes qui peuvent se succéder. Le
2549 second <var>nombre</var> détermine la profondeur d'imbrication
2550 maximum des sous-requêtes. Si vous ne spécifiez qu'un seul
2551 <var>nombre</var>, il sera affecté aux deux limites.</p>
2553 <highlight language="config">LimitInternalRecursion 5</highlight>
2555 </directivesynopsis>
2558 <name>LimitRequestBody</name>
2559 <description>limite la taille maximale du corps de la requête HTTP
2560 envoyée par le client</description>
2561 <syntax>LimitRequestBody <var>octets</var></syntax>
2562 <default>LimitRequestBody 0</default>
2563 <contextlist><context>server config</context><context>virtual
2565 <context>directory</context><context>.htaccess</context>
2567 <override>All</override>
2570 <p>Cette directive spécifie la taille maximale autorisée pour le
2571 corps d'une requête ; la valeur de l'argument <var>octets</var> va
2572 de 0 (pour une taille illimitée), à 2147483647 (2Go). Voir la note
2573 ci-dessous pour la limite d'applicabilité aux requêtes mandatées.</p>
2575 <p>La directive <directive>LimitRequestBody</directive> permet de
2576 définir une limite pour la taille maximale autorisée du corps d'une
2577 requête HTTP en tenant compte du contexte dans lequel la directive
2578 a été placée (c'est à dire au niveau du serveur, d'un répertoire,
2579 d'un fichier ou d'une localisation). Si la requête du client dépasse
2580 cette limite, le serveur répondra par un message d'erreur et ne
2581 traitera pas la requête. La taille du corps d'une requête normale va
2582 varier de manière importante en fonction de la nature de la
2583 ressource et des méthodes autorisées pour cette dernière. Les
2584 scripts CGI utilisent souvent le corps du message pour extraire les
2585 informations d'un formulaire. Les implémentations de la méthode
2586 <code>PUT</code> nécessitent une valeur au moins aussi élevée que la
2587 taille maximale des représentations que le serveur désire accepter
2588 pour cette ressource.</p>
2590 <p>L'administrateur du serveur peut utiliser cette directive pour
2591 contrôler plus efficacement les comportements anormaux des requêtes
2592 des clients, ce qui lui permettra de prévenir certaines formes
2593 d'attaques par déni de service.</p>
2595 <p>Si par exemple, vous autorisez le chargement de fichiers vers une
2596 localisation particulière, et souhaitez limiter la taille des
2597 fichiers chargés à 100Ko, vous pouvez utiliser la directive suivante
2600 <highlight language="config">LimitRequestBody 102400</highlight>
2602 <note><p>Pour une description détaillée de la manière dont cette
2603 directive est interprétée par les requêtes mandatées, voir la
2604 documentation du module <module>mod_proxy</module>.</p>
2608 </directivesynopsis>
2611 <name>LimitRequestFields</name>
2612 <description>Limite le nombre de champs d'en-tête autorisés dans une
2613 requête HTTP</description>
2614 <syntax>LimitRequestFields <var>nombre</var></syntax>
2615 <default>LimitRequestFields 100</default>
2616 <contextlist><context>server config</context><context>virtual host</context></contextlist>
2619 <p><var>nombre</var> est un entier de 0 (nombre de champs illimité)
2620 à 32767. La valeur par défaut est définie à la compilation par la
2621 constante <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> (100 selon la
2624 <p>La directive <directive>LimitRequestFields</directive> permet à
2625 l'administrateur du serveur de modifier le nombre maximum de champs
2626 d'en-tête autorisés dans une requête HTTP. Pour un serveur, cette
2627 valeur doit être supérieure au nombre de champs qu'une requête
2628 client normale peut contenir. Le nombre de champs d'en-tête d'une
2629 requête qu'un client utilise dépasse rarement 20, mais ce nombre
2630 peut varier selon les implémentations des clients, et souvent en
2631 fonction des extensions que les utilisateurs configurent dans leurs
2632 navigateurs pour supporter la négociation de contenu détaillée. Les
2633 extensions HTTP optionnelles utilisent souvent les
2634 champs d'en-tête des requêtes.</p>
2636 <p>L'administrateur du serveur peut utiliser cette directive pour
2637 contrôler plus efficacement les comportements anormaux des requêtes
2638 des clients, ce qui lui permettra de prévenir certaines formes
2639 d'attaques par déni de service. La valeur spécifiée doit être
2640 augmentée si les clients standards reçoivent une erreur du serveur
2641 indiquant que la requête comportait un nombre d'en-têtes trop
2644 <p>Par exemple :</p>
2646 <highlight language="config">LimitRequestFields 50</highlight>
2648 <note type="warning"><title>Avertissement</title>
2649 <p>Dans le cas des serveurs virtuels à base de noms, la valeur de
2650 cette directive est extraite du serveur virtuel par défaut (le
2651 premier de la liste) pour la paire adresse IP/port.</p>
2655 </directivesynopsis>
2658 <name>LimitRequestFieldSize</name>
2659 <description>Dédinit la taille maximale autorisée d'un en-tête de
2660 requête HTTP</description>
2661 <syntax>LimitRequestFieldSize <var>octets</var></syntax>
2662 <default>LimitRequestFieldSize 8190</default>
2663 <contextlist><context>server config</context><context>virtual host</context></contextlist>
2666 <p>Cette directive permet de définir le nombre maximum
2667 d'<var>octets</var> autorisés dans un en-tête de requête HTTP.</p>
2669 <p>La directive <directive>LimitRequestFieldSize</directive> permet
2670 à l'administrateur du serveur de définir la taille
2671 maximale autorisée d'un en-tête de requête HTTP. Pour un serveur,
2672 cette valeur doit être suffisamment grande pour contenir tout
2673 en-tête d'une requête client normale. La taille d'un champ d'en-tête
2674 de requête normal va varier selon les implémentations des clients,
2675 et en fonction des extensions que les utilisateurs
2676 configurent dans leurs navigateurs pour supporter la négociation de
2677 contenu détaillée. Les en-têtes d'authentification SPNEGO peuvent
2678 atteindre une taille de 12392 octets.</p>
2680 <p>>L'administrateur du serveur peut utiliser cette directive pour
2681 contrôler plus efficacement les comportements anormaux des requêtes
2682 des clients, ce qui lui permettra de prévenir certaines formes
2683 d'attaques par déni de service.</p>
2685 <p>Par exemple ::</p>
2687 <highlight language="config">LimitRequestFieldSize 4094</highlight>
2689 <note>Dans des conditions normales, la valeur par défaut de cette
2690 directive ne doit pas être modifiée.</note>
2692 <note type="warning"><title>Avertissement</title>
2693 <p>Dans le cas des serveurs virtuels à base de noms, la valeur de
2694 cette directive est extraite du serveur virtuel par défaut (le
2695 premier de la liste) pour lequel la paire adresse IP/port
2696 correspond le mieux.</p>
2699 </directivesynopsis>
2702 <name>LimitRequestLine</name>
2703 <description>Définit la taille maximale d'une ligne de requête
2705 <syntax>LimitRequestLine <var>octets</var></syntax>
2706 <default>LimitRequestLine 8190</default>
2707 <contextlist><context>server config</context><context>virtual host</context></contextlist>
2710 <p>Cette directive permet de définir la taille maximale autorisée
2711 pour une ligne de requête HTTP en <var>octets</var>.</p>
2713 <p>La directive <directive>LimitRequestLine</directive> permet à
2714 l'administrateur du serveur de définir la taille
2715 maximale autorisée d'une ligne de requête HTTP client. Comme une
2716 requête comporte une méthode HTTP, un URI, et une version de
2717 protocole, la directive <directive>LimitRequestLine</directive>
2718 impose une restriction sur la longueur maximale autorisée pour un
2719 URI dans une requête au niveau du serveur. Pour un serveur, cette
2720 valeur doit être suffisamment grande pour référencer les noms de
2721 toutes ses ressources, y compris toutes informations pouvant être
2722 ajoutées dans la partie requête d'une méthode <code>GET</code>.</p>
2724 <p>L'administrateur du serveur peut utiliser cette directive pour
2725 contrôler plus efficacement les comportements anormaux des requêtes
2726 des clients, ce qui lui permettra de prévenir certaines formes
2727 d'attaques par déni de service.</p>
2729 <p>Par exemple :</p>
2731 <highlight language="config">LimitRequestLine 4094</highlight>
2733 <note>Dans des conditions normales, la valeur par défaut de cette
2734 directive ne doit pas être modifiée. En outre, vous ne
2735 pouvez pas spécifier une valeur supérieure à 8190 sans modifier le
2736 code source et recompiler.</note>
2738 <note type="warning"><title>Avertissement</title>
2739 <p>Dans le cas des serveurs virtuels à base de noms, la valeur de
2740 cette directive est extraite du serveur virtuel par défaut (le
2741 premier de la liste) pour lequel la paire adresse IP/port
2742 correspond le mieux.</p>
2746 </directivesynopsis>
2749 <name>LimitXMLRequestBody</name>
2750 <description>Définit la taille maximale du corps d'une requête au format
2752 <syntax>LimitXMLRequestBody <var>octets</var></syntax>
2753 <default>LimitXMLRequestBody 1000000</default>
2754 <contextlist><context>server config</context><context>virtual
2756 <context>directory</context><context>.htaccess</context></contextlist>
2757 <override>All</override>
2760 <p>Taille maximale (en octets) du corps d'une requête au format XML.
2761 Une valeur de <code>0</code> signifie qu'aucune limite n'est
2766 <highlight language="config">LimitXMLRequestBody 0</highlight>
2769 </directivesynopsis>
2771 <directivesynopsis type="section">
2772 <name>Location</name>
2773 <description>N'applique les directives contenues qu'aux URLs
2774 spécifiées</description>
2775 <syntax><Location
2776 <var>chemin URL</var>|<var>URL</var>> ... </Location></syntax>
2777 <contextlist><context>server config</context><context>virtual
2782 <p>La directive <directive type="section">Location</directive>
2783 limite la portée des directives contenues aux URLs définies par
2784 l'argument URL. Elle est similaire à la directive <directive
2785 type="section" module="core">Directory</directive>, et marque le
2786 début d'une section qui se termine par une directive
2787 <code></Location></code>. Les sections <directive
2788 type="section">Location</directive> sont traitées selon l'ordre dans
2789 lequel elles apparaissent dans le fichier de configuration, mais
2790 après les sections <directive
2791 type="section" module="core">Directory</directive> et la lecture des
2792 fichiers <code>.htaccess</code>, et après les sections <directive
2793 type="section" module="core">Files</directive>.</p>
2795 <p>Les sections <directive type="section">Location</directive>
2796 agissent complètement en dehors du système de fichiers. Ceci a de
2797 nombreuses conséquences. Parmi les plus importantes, on ne doit pas
2798 utiliser les sections <directive type="section">Location</directive>
2799 pour contrôler l'accès aux répertoires du système de fichiers. Comme
2800 plusieurs URLs peuvent correspondre au même répertoire du système de
2801 fichiers, un tel contrôle d'accès pourrait être contourné.</p>
2803 <p>Les directives que contient cette section seront appliquées aux
2804 requêtes si la partie chemin de l'URL satisfait à l'un au moins de
2805 ces critères :
2808 <li>Le chemin spécifié correspond exactement à la partie chemin de
2811 <li>Le chemin spécifié, qui se termine par un slash, est un
2812 préfixe de la partie chemin de l'URL (traité comme une racine du
2815 <li>Le chemin spécifié, si on lui ajoute un slash de fin, est un
2816 préfixe de la partie chemin de l'URL (aussi traité comme une racine du
2821 Dans l'exemple ci-dessous, où aucun slash de fin n'est utilisé, les
2822 directives contenues dans la section s'appliqueront à /private1,
2823 /private1/ et /private1/file.txt, mais pas à /private1other.
2825 <highlight language="config">
2826 <Location /private1>
2831 De même, dans l'exemple ci-dessous, où l'on utilise un slash de fin, les
2832 directives contenues dans la section s'appliqueront à /private2/ et
2833 à /private2/file.txt, mais pas à /private2other.
2835 <highlight language="config">
2836 <Location /private2<em>/</em>>
2841 <note><title>Quand utiliser la section <directive
2842 type="section">Location</directive></title>
2844 <p>Vous pouvez utiliser une section <directive
2845 type="section">Location</directive> pour appliquer des directives à
2846 des contenus situés en dehors du système de fichiers. Pour les
2847 contenus situés à l'intérieur du système de fichiers, utilisez
2848 plutôt les sections <directive
2849 type="section" module="core">Directory</directive> et <directive
2850 type="section" module="core">Files</directive>. <code><Location
2851 /></code> constitue une exception et permet d'appliquer aisément
2852 une configuration à l'ensemble du serveur.</p>
2855 <p>Pour toutes les requêtes originales (non mandatées), l'argument
2856 URL est un chemin d'URL de la forme
2857 <code>/chemin/</code>. <em>Aucun protocole, nom d'hôte, port, ou chaîne
2858 de requête ne doivent apparaître.</em> Pour les requêtes mandatées, l'URL
2859 spécifiée doit être de la forme
2860 <code>protocole://nom_serveur/chemin</code>, et vous devez inclure
2861 le préfixe.</p>
2863 <p>L'URL peut contenir des caractères génériques. Dans une chaîne
2864 avec caractères génériques, <code>?</code> correspond à un caractère
2865 quelconque, et <code>*</code> à toute chaîne de caractères. Les
2866 caractères génériques ne peuvent pas remplacer un / dans le chemin
2869 <p>On peut aussi utiliser les <glossary ref="regex">Expressions
2870 rationnelles</glossary>, moyennant l'addition d'un caractère
2871 <code>~</code>. Par exemple :</p>
2873 <highlight language="config">
2874 <Location ~ "/(extra|special)/data">
2879 <p>concernerait les URLs contenant les sous-chaîne
2880 <code>/extra/data</code> ou <code>/special/data</code>. La directive
2881 <directive type="section" module="core">LocationMatch</directive>
2882 présente un comportement identique à la version avec expressions
2883 rationnelles de la directive <directive
2884 type="section">Location</directive>, et son utilisation est
2885 préférable à l'utilisation de cette dernière pour la simple raison
2886 qu'il est difficile de distinguer <code>~</code> de <code>-</code>
2887 dans la plupart des fontes.</p>
2889 <p>La directive <directive type="section">Location</directive>
2890 s'utilise principalement avec la directive <directive
2891 module="core">SetHandler</directive>. Par exemple, pour activer les
2892 requêtes d'état, mais ne les autoriser que depuis des navigateurs
2893 appartenant au domaine <code>example.com</code>, vous pouvez
2896 <highlight language="config">
2897 <Location /status>
2898 SetHandler server-status
2899 Require host example.com
2903 <note><title>Note à propos du slash (/)</title>
2904 <p>La signification du caractère slash dépend de l'endroit où il
2905 se trouve dans l'URL. Les utilisateurs peuvent être habitués à
2906 son comportement dans le système de fichiers où plusieurs slashes
2907 successifs sont souvent réduits à un slash unique (en d'autres
2908 termes, <code>/home///foo</code> est identique à
2909 <code>/home/foo</code>). Dans l'espace de nommage des URLs, ce
2910 n'est cependant pas toujours le cas. Pour la directive <directive
2911 type="section" module="core">LocationMatch</directive> et la
2912 version avec expressions rationnelles de la directive <directive
2913 type="section">Location</directive>, vous devez spécifier
2914 explicitement les slashes multiples si telle est votre
2917 <p>Par exemple, <code><LocationMatch ^/abc></code> va
2918 correspondre à l'URL <code>/abc</code> mais pas à l'URL <code>
2919 //abc</code>. La directive <directive type="section"
2920 >Location</directive> sans expression rationnelle se comporte de
2921 la même manière lorsqu'elle est utilisée pour des requêtes
2922 mandatées. Par contre, lorsque la directive <directive
2923 type="section">Location</directive> sans expression rationnelle
2924 est utilisée pour des requêtes non mandatées, elle fera
2925 correspondre implicitement les slashes multiples à des slashes
2926 uniques. Par exemple, si vous spécifiez <code><Location
2927 /abc/def></code>, une requête de la forme
2928 <code>/abc//def</code> correspondra.</p>
2931 <seealso><a href="../sections.html">Comment fonctionnent les sections
2932 <Directory>, <Location> et <Files></a> pour une
2933 explication de la manière dont ces différentes sections se combinent
2934 entre elles à la réception d'une requête.</seealso>
2935 </directivesynopsis>
2937 <directivesynopsis type="section">
2938 <name>LocationMatch</name>
2939 <description>N'applique les directives contenues qu'aux URLs
2940 correspondant à une expression rationnelle</description>
2941 <syntax><LocationMatch
2942 <var>regex</var>> ... </LocationMatch></syntax>
2943 <contextlist><context>server config</context><context>virtual
2948 <p>La directive <directive type="section">LocationMatch</directive>
2949 limite la portée des directives contenues à l'URL spécifiée, de
2950 manière identique à la directive <directive module="core"
2951 type="section">Location</directive>. Mais son argument permettant de
2952 spécifier les URLs concernées est une <glossary
2953 ref="regex">expression rationnelle</glossary> au lieu d'une simple
2954 chaîne de caractères. Par exemple :</p>
2956 <highlight language="config">
2957 <LocationMatch "/(extra|special)/data">
2959 </LocationMatch>
2962 <p>correspondrait à toute URL contenant les sous-chaînes
2963 <code>/extra/data</code> ou <code>/special/data</code>.</p>
2965 <seealso><a href="../sections.html">Comment fonctionnent les sections
2966 <Directory>, <Location> et <Files></a> pour une
2967 explication de la manière dont ces différentes sections se combinent
2968 entre elles à la réception d'une requête.</seealso>
2969 </directivesynopsis>
2972 <name>LogLevel</name>
2973 <description>Contrôle la verbosité du journal des erreurs</description>
2974 <syntax>LogLevel [<var>module</var>:]<var>niveau</var>
2975 [<var>module</var>:<var>niveau</var>] ...
2977 <default>LogLevel warn</default>
2978 <contextlist><context>server config</context><context>virtual
2979 host</context><context>directory</context>
2981 <compatibility>La configuration du niveau de journalisation par module
2982 et par répertoire est disponible depuis la version 2.3.6 du serveur HTTP
2983 Apache</compatibility>
2985 <p>La directive <directive>LogLevel</directive> permet d'ajuster la
2986 verbosité des messages enregistrés dans les journaux d'erreur (voir
2987 la directive <directive module="core">ErrorLog</directive>
2988 directive). Les <var>niveau</var>x disponibles sont présentés
2989 ci-après, par ordre de criticité décroissante :</p>
2992 <columnspec><column width=".2"/><column width=".3"/><column width=".5"/>
2995 <th><strong>Niveau</strong> </th>
2997 <th><strong>Description</strong> </th>
2999 <th><strong>Exemple</strong> </th>
3003 <td><code>emerg</code> </td>
3005 <td>Urgences - le système est inutilisable.</td>
3007 <td>"Child cannot open lock file. Exiting"</td>
3011 <td><code>alert</code> </td>
3013 <td>Des mesures doivent être prises immédiatement.</td>
3015 <td>"getpwuid: couldn't determine user name from uid"</td>
3019 <td><code>crit</code> </td>
3021 <td>Conditions critiques.</td>
3023 <td>"socket: Failed to get a socket, exiting child"</td>
3027 <td><code>error</code> </td>
3031 <td>"Premature end of script headers"</td>
3035 <td><code>warn</code> </td>
3037 <td>Avertissements.</td>
3039 <td>"child process 1234 did not exit, sending another
3044 <td><code>notice</code> </td>
3046 <td>Evènement important mais normal.</td>
3048 <td>"httpd: caught SIGBUS, attempting to dump core in
3053 <td><code>info</code> </td>
3055 <td>Informations.</td>
3057 <td>"Server seems busy, (you may need to increase
3058 StartServers, or Min/MaxSpareServers)..."</td>
3062 <td><code>debug</code> </td>
3064 <td>Messages de débogage.</td>
3066 <td>"Opening config file ..."</td>
3069 <td><code>trace1</code> </td>
3071 <td>Messages de traces</td>
3073 <td>"proxy: FTP: control connection complete"</td>
3076 <td><code>trace2</code> </td>
3078 <td>Messages de traces</td>
3080 <td>"proxy: CONNECT: sending the CONNECT request to the remote proxy"</td>
3083 <td><code>trace3</code> </td>
3085 <td>Messages de traces</td>
3087 <td>"openssl: Handshake: start"</td>
3090 <td><code>trace4</code> </td>
3092 <td>Messages de traces</td>
3094 <td>"read from buffered SSL brigade, mode 0, 17 bytes"</td>
3097 <td><code>trace5</code> </td>
3099 <td>Messages de traces</td>
3101 <td>"map lookup FAILED: map=rewritemap key=keyname"</td>
3104 <td><code>trace6</code> </td>
3106 <td>Messages de traces</td>
3108 <td>"cache lookup FAILED, forcing new map lookup"</td>
3111 <td><code>trace7</code> </td>
3113 <td>Messages de traces, enregistrement d'une grande quantité de
3116 <td>"| 0000: 02 23 44 30 13 40 ac 34 df 3d bf 9a 19 49 39 15 |"</td>
3119 <td><code>trace8</code> </td>
3121 <td>Messages de traces, enregistrement d'une grande quantité de
3124 <td>"| 0000: 02 23 44 30 13 40 ac 34 df 3d bf 9a 19 49 39 15 |"</td>
3128 <p>Lorsqu'un niveau particulier est spécifié, les messages de tous
3129 les autres niveaux de criticité supérieure seront aussi enregistrés.
3130 <em>Par exemple</em>, si <code>LogLevel info</code> est spécifié,
3131 les messages de niveaux <code>notice</code> et <code>warn</code>
3132 seront aussi émis.</p>
3134 <p>Il est recommandé d'utiliser un niveau <code>crit</code> ou
3135 inférieur.</p>
3137 <p>Par exemple :</p>
3139 <highlight language="config">LogLevel notice</highlight>
3141 <note><title>Note</title>
3142 <p>Si la journalisation s'effectue directement dans un fichier,
3143 les messages de niveau <code>notice</code> ne peuvent pas être
3144 supprimés et sont donc toujours journalisés. Cependant, ceci ne
3145 s'applique pas lorsque la journalisation s'effectue vers
3146 <code>syslog</code>.</p>
3149 <p>Spécifier un niveau sans nom de module va attribuer ce niveau à
3150 tous les modules. Spécifier un niveau avec nom de module va
3151 attribuer ce niveau à ce module seulement. Il est possible de
3152 spécifier un module par le nom de son fichier source ou par son
3153 identificateur, avec ou sans le suffixe <code>_module</code>. Les
3154 trois spécifications suivantes sont donc équivalentes :</p>
3156 <highlight language="config">
3157 LogLevel info ssl:warn
3158 LogLevel info mod_ssl.c:warn
3159 LogLevel info ssl_module:warn
3162 <p>Il est aussi possible d'attribuer un niveau de journalisation par
3163 répertoire :</p>
3165 <highlight language="config">
3167 <Directory "/usr/local/apache/htdocs/app">
3173 La configuration du niveau de journalisation par répertoire
3174 n'affecte que les messages journalisés après l'interprétation de
3175 la requête et qui sont associés à cette dernière. Les messages
3176 de journalisation associés à la connexion ou au serveur ne sont
3177 pas affectés.
3180 </directivesynopsis>
3183 <name>MaxKeepAliveRequests</name>
3184 <description>Nombre de requêtes permises pour une connexion
3185 persistante</description>
3186 <syntax>MaxKeepAliveRequests <var>nombre</var></syntax>
3187 <default>MaxKeepAliveRequests 100</default>
3188 <contextlist><context>server config</context><context>virtual
3193 <p>La directive <directive>MaxKeepAliveRequests</directive> permet
3194 de limiter le nombre de requêtes autorisées par connexion lorsque
3195 <directive module="core" >KeepAlive</directive> est à "on". Si sa
3196 valeur est <code>0</code>, le nombre de requêtes autorisées est
3197 illimité. Il est recommandé de définir une valeur assez haute pour
3198 des performances du serveur maximales.</p>
3200 <p>Par exemple :</p>
3202 <highlight language="config">MaxKeepAliveRequests 500</highlight>
3204 </directivesynopsis>
3207 <name>MaxRanges</name>
3208 <description>Nombre de segments de données autorisé avant le renvoi de
3209 l'intégralité de la ressource</description>
3210 <syntax>MaxRanges default | unlimited | none | <var>nombre de segments</var></syntax>
3211 <default>MaxRanges 200</default>
3212 <contextlist><context>server config</context><context>virtual host</context>
3213 <context>directory</context>
3215 <compatibility>Disponible depuis la version 2.3.15 du serveur HTTP
3216 Apache</compatibility>
3219 <p>La directive <directive>MaxRanges</directive> permet de limiter
3220 le nombre de segments de données que le serveur va renvoyer au
3221 client. Si un nombre de segments plus important est demandé, la
3222 ressource sera renvoyée dans son intégralité.</p>
3225 <dt><strong>default</strong></dt>
3226 <dd>Limite le nombre de segments de données à 200 (valeur par
3227 défaut définie à la compilation).</dd>
3229 <dt><strong>none</strong></dt>
3230 <dd>Les en-têtes Range sont ignorés.</dd>
3232 <dt><strong>unlimited</strong></dt>
3233 <dd>Le nombre de segments de données est illimité.</dd>
3235 <dt><var>nombre de segments</var></dt>
3236 <dd>Un nombre positif représentera la nombre de segments de
3237 données maximal que le serveur renverra au client.</dd>
3240 </directivesynopsis>
3243 <name>MaxRangeOverlaps</name>
3244 <description>Nombre de chevauchements de segments de données autorisé
3245 (par exemple <code>100-200,150-300</code>) avant le renvoi de la
3246 ressource complète</description>
3247 <syntax>MaxRangeOverlaps default | unlimited | none | <var>nombre de
3248 chevauchements</var></syntax>
3249 <default>MaxRangeOverlaps 20</default>
3250 <contextlist><context>server config</context><context>virtual host</context>
3251 <context>directory</context>
3253 <compatibility>Disponible depuis la version 2.3.15 du serveur HTTP
3254 Apache</compatibility>
3257 <p>La directive <directive>MaxRangeOverlaps</directive> permet
3258 de limiter le nombre de chevauchements de segments de données HTTP
3259 autorisé par le serveur. Si le nombre de
3260 chevauchements de segments demandé est supérieur au nombre maximal
3261 autorisé, la ressource sera renvoyée dans son intégralité.</p>
3264 <dt><strong>default</strong></dt>
3265 <dd>Limite le nombre de chevauchements de segments à la valeur
3266 par défaut 20 définie à la compilation.</dd>
3268 <dt><strong>none</strong></dt>
3269 <dd>Aucun chevauchement de segment n'est autorisé.</dd>
3271 <dt><strong>unlimited</strong></dt>
3272 <dd>Le nombre de chevauchements de segments est illimité.</dd>
3274 <dt><var>number-of-ranges</var></dt>
3275 <dd>Un nombre positif représente le nombre maximal de
3276 chevauchements de segments autorisé par le serveur.</dd>
3279 </directivesynopsis>
3282 <name>MaxRangeReversals</name>
3283 <description>Nombre d'inversions d'ordre autorisé dans la spécification des
3284 segments de données (par exemple <code>100-200,50-70</code>) avant le renvoi de la
3285 ressource complète</description>
3286 <syntax>MaxRangeReversals default | unlimited | none | <var>nombre
3287 d'inversions</var></syntax>
3288 <default>MaxRangeReversals 20</default>
3289 <contextlist><context>server config</context><context>virtual host</context>
3290 <context>directory</context>
3292 <compatibility>Disponible depuis la version 2.3.15 du serveur HTTP
3293 Apache</compatibility>
3296 <p>La directive <directive>MaxRangeReversals</directive> permet
3297 de limiter le nombre d'inversions d'ordre dans la spécification
3298 des segments de données HTTP
3299 autorisé par le serveur. Si le nombre
3300 d'inversions demandé est supérieur au nombre maximal
3301 autorisé, la ressource sera renvoyée dans son intégralité.</p>
3304 <dt><strong>default</strong></dt>
3305 <dd>Limite le nombre d'inversions à la valeur
3306 par défaut 20 définie à la compilation.</dd>
3308 <dt><strong>none</strong></dt>
3309 <dd>Aucune inversion n'est autorisée.</dd>
3311 <dt><strong>unlimited</strong></dt>
3312 <dd>Le nombre d'inversions est illimité.</dd>
3314 <dt><var>number-of-ranges</var></dt>
3315 <dd>Un nombre positif représente le nombre maximal
3316 d'inversions autorisé par le serveur.</dd>
3319 </directivesynopsis>
3323 <description>Définit les mécanismes de mutex et le repertoire du fichier
3324 verrou pour tous les mutex ou seulement les mutex spécifiés</description>
3325 <syntax>Mutex <var>mécanisme</var> [default|<var>nom-mutex</var>] ... [OmitPID]</syntax>
3326 <default>Mutex default</default>
3327 <contextlist><context>server config</context></contextlist>
3328 <compatibility>Disponible depuis la version 2.3.4 du serveur HTTP Apache</compatibility>
3331 <p>La directive <directive>Mutex</directive> permet de définir le
3332 mécanisme de mutex, et éventuellement le répertoire du fichier
3333 verrou que les modules et httpd utilisent pour sérialiser l'accès aux
3334 ressources. Spécifiez <code>default</code> comme premier argument
3335 pour modifier la configuration de tous les mutex ; spécifiez un nom
3336 de mutex (voir la table ci-dessous) comme premier argument pour
3337 ne modifier que la configuration de ce mutex.</p>
3339 <p>La directive <directive>Mutex</directive> est typiquement
3340 utilisée dans les situations exceptionnelles suivantes :</p>
3343 <li>choix d'un autre mécanisme de mutex lorsque le mécanisme par
3344 défaut sélectionné par <glossary>APR</glossary> présente un
3345 problème de fonctionnement ou de performances.</li>
3347 <li>choix d'un autre répertoire utilisé par les mutex à base de
3348 fichier lorsque le répertoire par défaut ne supporte pas le
3352 <note><title>Modules supportés</title>
3353 <p>Cette directive ne configure que les mutex qui ont été
3354 enregistrés avec le serveur de base via l'API
3355 <code>ap_mutex_register()</code>. Tous les modules fournis avec
3356 httpd supportent la directive <directive>Mutex</directive>, mais il
3357 n'en sera pas forcément de même pour les modules tiers.
3358 Reportez-vous à la documentation du module tiers considéré afin de
3359 déterminer le(s) nom(s) de mutex qui pourront être définis si la
3360 directive est supportée.</p>
3365 <p>Les <em>mécanismes</em> de mutex disponibles sont les suivants :</p>
3367 <li><code>default | yes</code>
3368 <p>C'est l'implémentation du verrouillage par défaut, telle
3369 qu'elle est définie par <glossary>APR</glossary>. On peut
3370 afficher l'implémentation du verrouillage par défaut via la
3371 commande <program>httpd</program> avec l'option <code>-V</code>.</p></li>
3373 <li><code>none | no</code>
3374 <p>Le mutex est désactivé, et cette valeur n'est permise pour un
3375 mutex que si le module indique qu'il s'agit d'un choix valide.
3376 Consultez la documentation du module pour plus d'informations.</p></li>
3378 <li><code>posixsem</code>
3379 <p>Une variante de mutex basée sur un sémaphore Posix.</p>
3381 <note type="warning"><title>Avertissement</title>
3382 <p>La propriété du sémaphore n'est pas restituée si un thread du
3383 processus gérant le mutex provoque une erreur de segmentation,
3384 ce qui provoquera un blocage du serveur web.</p>
3388 <li><code>sysvsem</code>
3389 <p>Une variante de mutex basée sur un sémaphore IPC SystemV.</p>
3391 <note type="warning"><title>Avertissement</title>
3392 <p>Il peut arriver que les sémaphores SysV soient conservés si le
3393 processus se crashe avant que le sémaphore ne soit supprimé.</p>
3396 <note type="warning"><title>Sécurité</title>
3397 <p>L'API des sémaphores permet les attaques par déni de service
3398 par tout programme CGI s'exécutant sous le même uid que le
3399 serveur web (autrement dit tous les programmes CGI, à moins que
3400 vous n'utilisiez un programme du style <program>suexec</program>
3401 ou <code>cgiwrapper</code>).</p>
3405 <li><code>sem</code>
3406 <p>Sélection de la "meilleure" implémentation des sémaphores
3407 disponible ; le choix s'effectue entre les sémaphores posix et
3408 IPC SystemV, dans cet ordre.</p></li>
3410 <li><code>pthread</code>
3411 <p>Une variante de mutex à base de mutex de thread Posix
3412 inter-processus.</p>
3414 <note type="warning"><title>Avertissement</title>
3415 <p>Sur la plupart des systèmes, si un processus enfant se
3416 termine anormalement alors qu'il détenait un mutex qui utilise
3417 cette implémentation, le serveur va se bloquer et cesser de
3418 répondre aux requêtes. Dans ce cas, un redémarrage manuel est
3419 nécessaire pour récupérer le mutex.</p>
3420 <p>Solaris constitue une exception notable, en ceci qu'il fournit
3421 un mécanisme qui permet en général de récupérer le mutex après
3422 l'arrêt anormal d'un processus enfant qui détenait le mutex.</p>
3423 <p>Si votre système implémente la fonction
3424 <code>pthread_mutexattr_setrobust_np()</code>, vous devriez
3425 pouvoir utiliser l'option <code>pthread</code> sans problème.</p>
3429 <li><code>fcntl:/chemin/vers/mutex</code>
3430 <p>Une variante de mutex utilisant un fichier verrou physique et
3431 la fonction <code>fcntl()</code>.</p>
3433 <note type="warning"><title>Avertissement</title>
3434 <p>Lorsqu'on utilise plusieurs mutex basés sur ce mécanisme dans
3435 un environnement multi-processus, multi-thread, des erreurs de
3436 blocage (EDEADLK) peuvent être rapportées pour des opérations de
3437 mutex valides si la fonction <code>fcntl()</code> ne gère pas
3438 les threads, comme sous Solaris.</p>
3442 <li><code>flock:/chemin/vers/mutex</code>
3443 <p>Méthode similaire à <code>fcntl:/chemin/vers/mutex</code>,
3444 mais c'est la fonction <code>flock()</code> qui est utilisée
3445 pour gérer le verrouillage par fichier.</p></li>
3447 <li><code>file:/chemin/vers/mutex</code>
3448 <p>Sélection de la "meilleure" implémentation de verrouillage
3449 par fichier disponible ; le choix s'effectue entre
3450 <code>fcntl</code> et <code>flock</code>, dans cet ordre.</p></li>
3453 <p>La plupart des mécanismes ne sont disponibles que sur les
3454 plate-formes où ces dernières et <glossary>APR</glossary> les
3455 supportent. Les mécanismes qui ne sont pas disponibles sur toutes
3456 les plate-formes sont <em>posixsem</em>,
3457 <em>sysvsem</em>, <em>sem</em>, <em>pthread</em>, <em>fcntl</em>,
3458 <em>flock</em>, et <em>file</em>.</p>
3460 <p>Avec les mécanismes à base de fichier <em>fcntl</em> et
3461 <em>flock</em>, le chemin, s'il est fourni, est un répertoire dans
3462 lequel le fichier verrou sera créé. Le répertoire par défaut est le
3463 répertoire d'exécution httpd défini par la directive <directive
3464 module="core">DefaultRuntimeDir</directive>. Si le répertoire
3465 spécifié est un chemin relatif, il est relatif au chemin défini par
3466 la directive <directive module="core">DefaultRuntimeDir</directive>.
3467 Utilisez toujours un système
3468 de fichiers local sur disque pour <code>/chemin/vers/mutex</code> et
3469 jamais un répertoire se trouvant dans un système de fichiers NFS ou
3470 AFS. Le nom de base du fichier se composera du type de mutex, d'une
3471 chaîne optionnelle correspondant à l'instance et fournie par le
3472 module ; et, sauf si le mot-clé <code>OmitPID</code> a été spécifié,
3473 l'identificateur du processus parent httpd sera ajouté afin de
3474 rendre le nom du fichier unique, évitant ainsi tout conflit lorsque
3475 plusieurs instances d'httpd partagent le même répertoire de
3476 verrouillage. Par exemple, si le nom de mutex est
3477 <code>mpm-accept</code>, et si le répertoire de verrouillage est
3478 <code>/var/httpd/locks</code>, le nom du fichier verrou pour
3479 l'instance httpd dont le processus parent a pour identifiant 12345
3480 sera <code>/var/httpd/locks/mpm-accept.12345</code>.</p>
3482 <note type="warning"><title>Sécurité</title>
3483 <p>Il est conseillé d'<em>éviter</em> de placer les fichiers mutex
3484 dans un répertoire où tout le monde peut écrire comme
3485 <code>/var/tmp</code>, car quelqu'un pourrait initier une attaque
3486 par déni de service et empêcher le serveur de démarrer en créant un
3487 fichier verrou possédant un nom identique à celui que le serveur va
3488 tenter de créer.</p>
3491 <p>La table suivante décrit les noms de mutex utilisés par httpd et
3492 ses modules associés.</p>
3494 <table border="1" style="zebra">
3498 <th>Ressource protégée</th>
3501 <td><code>mpm-accept</code></td>
3502 <td>modules MPM <module>prefork</module> et <module>worker</module></td>
3503 <td>connexions entrantes, afin d'éviter le problème de
3504 l'afflux de requêtes ; pour plus d'informations, voir la
3506 href="../misc/perf-tuning.html">Amélioration des
3507 performances</a></td>
3510 <td><code>authdigest-client</code></td>
3511 <td><module>mod_auth_digest</module></td>
3512 <td>liste de clients en mémoire partagée</td>
3515 <td><code>authdigest-opaque</code></td>
3516 <td><module>mod_auth_digest</module></td>
3517 <td>compteur en mémoire partagée</td>
3520 <td><code>ldap-cache</code></td>
3521 <td><module>mod_ldap</module></td>
3522 <td>cache de résultat de recherche LDAP</td>
3525 <td><code>rewrite-map</code></td>
3526 <td><module>mod_rewrite</module></td>
3527 <td>communication avec des programmes externes
3528 d'associations de valeurs, afin d'éviter les interférences
3529 d'entrées/sorties entre plusieurs requêtes</td>
3532 <td><code>ssl-cache</code></td>
3533 <td><module>mod_ssl</module></td>
3534 <td>cache de session SSL</td>
3537 <td><code>ssl-stapling</code></td>
3538 <td><module>mod_ssl</module></td>
3539 <td>cache de l'étiquetage OCSP ("OCSP stapling")</td>
3542 <td><code>watchdog-callback</code></td>
3543 <td><module>mod_watchdog</module></td>
3544 <td>fonction de rappel d'un module client particulier</td>
3548 <p>Le mot-clé <code>OmitPID</code> permet d'empêcher l'addition de
3549 l'identifiant du processus httpd parent au nom du fichier verrou.</p>
3552 <p>Dans l'exemple suivant, le mécanisme de mutex pour le mutex
3553 mpm-accept est modifié pour passer du mécanisme par défaut au
3554 mécanisme <code>fcntl</code>, avec le fichier verrou associé créé
3555 dans le répertoire <code>/var/httpd/locks</code>. Le mécanisme de
3556 mutex par défaut pour tous les autres mutex deviendra
3557 <code>sysvsem</code>.</p>
3559 <highlight language="config">
3560 Mutex sysvsem default
3561 Mutex fcntl:/var/httpd/locks mpm-accept
3564 </directivesynopsis>
3567 <name>NameVirtualHost</name>
3568 <description>OBSOLETE : Définit une adresse IP pour les serveurs virtuels à base de
3570 <syntax>NameVirtualHost <var>adresse</var>[:<var>port</var>]</syntax>
3571 <contextlist><context>server config</context></contextlist>
3575 <p>Avant la version 2.3.11, il était nécessaire de définir une
3576 directive <directive>NameVirtualHost</directive> pour indiquer au
3577 serveur qu'une paire adresse IP/port particulière pouvait être
3578 utilisée comme serveur virtuel à base de nom. Depuis la version
3579 2.3.11, chaque fois qu'une paire adresse IP/port est utilisée dans
3580 plusieurs serveurs virtuels, l'hébergement virtuel à base de nom est
3581 automatiquement activé pour cette adresse.</p>
3583 <p>Cette directive n'a actuellement plus aucun effet.</p>
3586 <seealso><a href="../vhosts/">Documentation sur les serveurs
3587 virtuels</a></seealso>
3589 </directivesynopsis>
3592 <name>Options</name>
3593 <description>Définit les fonctionnalités disponibles pour un répertoire
3594 particulier</description>
3596 [+|-]<var>option</var> [[+|-]<var>option</var>] ...</syntax>
3597 <default>Options FollowSymlinks</default>
3598 <contextlist><context>server config</context><context>virtual
3600 <context>directory</context><context>.htaccess</context>
3602 <override>Options</override>
3603 <compatibility>Avec la version 2.3.11, la valeur par défaut passe de All
3604 à FollowSymlinks</compatibility>
3607 <p>La directive <directive>Options</directive> permet de définir
3608 les fonctionnalités de serveur disponibles pour un répertoire
3611 <p><var>option</var> peut être défini à <code>None</code>, auquel
3612 cas aucune fonctionnalité spécifique n'est activée, ou comprendre
3613 une ou plusieurs des options suivantes :</p>
3616 <dt><code>All</code></dt>
3618 <dd>Toutes les options excepté <code>MultiViews</code>.</dd>
3620 <dt><code>ExecCGI</code></dt>
3622 <dd>L'exécution de scripts CGI à l'aide du module
3623 <module>mod_cgi</module> est permise.</dd>
3625 <dt><code>FollowSymLinks</code></dt>
3629 Le serveur va suivre les liens symboliques dans le répertoire
3630 concerné. Il s'agit de la valeur par défaut.
3632 <p>Bien que le serveur suive les liens symboliques, il ne modifie
3633 <em>pas</em> le nom de chemin concerné défini par la section
3634 <directive type="section"
3635 module="core">Directory</directive>.</p>
3637 <p>Les options <code>FollowSymLinks</code> et
3638 <code>SymLinksIfOwnerMatch</code> ne fonctionnent que dans les
3639 sections <directive type="section"
3640 module="core">Directory</directive> ou les fichiers
3641 <code>.htaccess</code>.</p>
3643 <p>Le fait d'omettre cette option ne doit pas être considéré comme
3644 une mesure de sécurité efficace, car il existe toujours une
3645 situation de compétition (race condition) entre l'instant où l'on
3646 vérifie qu'un chemin n'est pas un lien symbolique, et l'instant où
3647 l'on utilise effectivement ce chemin.</p>
3650 <dt><code>Includes</code></dt>
3653 Les inclusions côté serveur (SSI) à l'aide du module
3654 <module>mod_include</module> sont autorisées.</dd>
3656 <dt><code>IncludesNOEXEC</code></dt>
3660 Les inclusions côté serveur (SSI) sont permises, mais <code>#exec
3661 cmd</code> et <code>#exec cgi</code> sont désactivés.
3662 L'utilisation de <code>#include virtual</code> pour les scripts
3663 CGI est cependant toujours possible depuis des répertoires
3664 définis par <directive
3665 module="mod_alias">ScriptAlias</directive>.</dd>
3667 <dt><code>Indexes</code></dt>
3670 Si une URL requise correspond au répertoire concerné, et si aucun
3671 <directive module="mod_dir">DirectoryIndex</directive> (<em>par
3672 exemple</em> <code>index.html</code>) n'est défini pour ce
3673 répertoire, le module <module>mod_autoindex</module> va renvoyer
3674 un listing formaté du répertoire.</dd>
3676 <dt><code>MultiViews</code></dt>
3679 Les vues multiples ("multiviews") à <a
3680 href="../content-negotiation.html">contenu négocié</a> à l'aide du
3681 module <module>mod_negotiation</module> sont autorisées.
3682 <note><title>Note</title> <p>Cette option est ignorée si elle est
3683 définie en tout autre endroit qu'une section <directive
3684 module="core" type="section">Directory</directive>, car
3685 <module>mod_negotiation</module> a besoin de ressources réelles
3686 pour effectuer ses comparaisons et ses évaluations.</p></note>
3690 <dt><code>SymLinksIfOwnerMatch</code></dt>
3692 <dd>Le serveur ne suivra que les liens symboliques qui renvoient
3693 vers un fichier ou un répertoire dont le propriétaire est le même
3696 <note><title>Note</title>
3697 <p>Les options <code>FollowSymLinks</code> et
3698 <code>SymLinksIfOwnerMatch</code> ne fonctionnent que dans les
3699 sections <directive type="section"
3700 module="core">Directory</directive> ou les fichiers
3701 <code>.htaccess</code>.</p>
3703 <p>Le fait d'omettre cette option ne doit pas être considéré comme
3704 une mesure de sécurité efficace, car il existe toujours une
3705 situation de compétition (race condition) entre l'instant où l'on
3706 vérifie qu'un chemin n'est pas un lien symbolique, et l'instant où
3707 l'on utilise effectivement ce chemin.</p>
3711 <p>Normalement, si plusieurs directives
3712 <directive>Options</directive> peuvent s'appliquer à un répertoire,
3713 c'est la plus spécifique qui est utilisée et les autres sont
3714 ignorées ; les options ne sont pas fusionnées (voir <a
3715 href="../sections.html#mergin">comment les sections sont
3716 fusionnées</a>). Elles le sont cependant si <em>toutes</em> les
3717 options de la directive <directive>Options</directive> sont
3718 précédées d'un symbole <code>+</code> ou <code>-</code>. Toute
3719 option précédée d'un <code>+</code> est ajoutée à la liste des
3720 options courantes de manière forcée et toute option précédée d'un
3721 <code>-</code> est supprimée de la liste des options courantes de la
3722 même manière.</p>
3724 <note><title>Note</title>
3725 <p>Mélanger des <directive>Options</directive> avec <code>+</code>
3726 ou <code>-</code> avec des <directive>Options</directive> sans
3727 <code>+</code> ou <code>-</code> constitue une erreur de syntaxe, et
3728 la vérification de la syntaxe au cours du démarrage du serveur fera
3729 échouer ce dernier.</p>
3732 <p>Par exemple, sans aucun symbole <code>+</code> et <code>-</code>
3735 <highlight language="config">
3736 <Directory "/web/docs">
3737 Options Indexes FollowSymLinks
3740 <Directory "/web/docs/spec">
3745 <p>ici, seule l'option <code>Includes</code> sera prise en compte
3746 pour le répertoire <code>/web/docs/spec</code>. Par contre, si la
3747 seconde directive <directive>Options</directive> utilise les
3748 symboles <code>+</code> et <code>-</code> :</p>
3750 <highlight language="config">
3751 <Directory "/web/docs">
3752 Options Indexes FollowSymLinks
3755 <Directory "/web/docs/spec">
3756 Options +Includes -Indexes
3760 <p>alors, les options <code>FollowSymLinks</code> et
3761 <code>Includes</code> seront prises en compte pour le répertoire
3762 <code>/web/docs/spec</code>.</p>
3764 <note><title>Note</title>
3765 <p>L'utilisation de <code>-IncludesNOEXEC</code> ou
3766 <code>-Includes</code> désactive complètement les inclusions côté
3767 serveur sans tenir compte des définitions précédentes.</p>
3770 <p>En l'absence de toute définition d'options, la valeur par défaut
3771 est <code>FollowSymlinks</code>.</p>
3773 </directivesynopsis>
3776 <name>Protocol</name>
3777 <description>Protocole pour une socket d'écoute</description>
3778 <syntax>Protocol <var>protocole</var></syntax>
3779 <contextlist><context>server config</context><context>virtual host</context></contextlist>
3780 <compatibility>Disponible depuis la version 2.1.5 d'Apache, mais
3781 seulement depuis la version 2.3.3 sous Windows.</compatibility>
3784 <p>Cette directive permet de spécifier le protocole utilisé pour une
3785 socket d'écoute particulière. Le protocole sert à déterminer quel
3786 module doit traiter une requête, et d'appliquer les optimisations
3787 spécifiques au protocole via la directive
3788 <directive>AcceptFilter</directive>.</p>
3790 <p>Vous ne devez définir le protocole que si vous travaillez avec
3791 des ports non standards ; dans le cas général, le protocole
3792 <code>http</code> est associé au port 80 et le protocole
3793 <code>https</code> au port 443.</p>
3795 <p>Par exemple, si vous travaillez avec le protocole
3796 <code>https</code> sur un port non standard, spécifiez le protocole
3797 de manière explicite :</p>
3799 <highlight language="config">Protocol https</highlight>
3801 <p>Vous pouvez aussi spécifier le protocole via la directive
3802 <directive module="mpm_common">Listen</directive>.</p>
3804 <seealso><directive module="core">AcceptFilter</directive></seealso>
3805 <seealso><directive module="mpm_common">Listen</directive></seealso>
3806 </directivesynopsis>
3810 <name>RLimitCPU</name>
3811 <description>Limite le temps CPU alloué aux processus initiés par les
3812 processus enfants d'Apache httpd</description>
3813 <syntax>RLimitCPU <var>secondes</var>|max [<var>secondes</var>|max]</syntax>
3814 <default>Non défini ; utilise les valeurs par défaut du système
3815 d'exploitation</default>
3816 <contextlist><context>server config</context><context>virtual
3818 <context>directory</context><context>.htaccess</context></contextlist>
3819 <override>All</override>
3822 <p>Prend 1 ou 2 paramètres. Le premier definit la limite de
3823 consommation de ressources pour tous les processus, et le second la
3824 consommation de ressources maximale. Les deux paramètres peuvent
3825 contenir soit un nombre, soit <code>max</code> pour indiquer au
3826 serveur que la limite de consommation correspond à la valeur
3827 maximale autorisée par la configuration du système d'exploitation.
3828 Pour augmenter la consommation maximale de ressources, le serveur
3829 doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa
3830 phase de démarrage.</p>
3832 <p>Cette directive s'applique aux processus initiés par les
3833 processus enfants d'Apache httpd qui traitent les requêtes, et non aux
3834 processus enfants eux-mêmes. Sont concernés les scripts CGI et les
3835 commandes exec des SSI, mais en aucun cas les processus initiés par
3836 le processus parent d'Apache httpd comme les journalisations redirigées
3837 vers un programme.</p>
3839 <p>Les limites de ressources CPU sont exprimées en secondes par
3842 <seealso><directive module="core">RLimitMEM</directive></seealso>
3843 <seealso><directive module="core">RLimitNPROC</directive></seealso>
3844 </directivesynopsis>
3847 <name>RLimitMEM</name>
3848 <description>Limite la mémoire allouée aux processus initiés par les
3849 processus enfants d'Apache httpd</description>
3850 <syntax>RLimitMEM <var>octets</var>|max [<var>octets</var>|max]</syntax>
3851 <default>Non défini ; utilise les valeurs par défaut du système
3852 d'exploitation</default>
3853 <contextlist><context>server config</context><context>virtual
3855 <context>directory</context><context>.htaccess</context></contextlist>
3856 <override>All</override>
3859 <p>Prend 1 ou 2 paramètres. Le premier definit la limite de
3860 consommation de ressources pour tous les processus, et le second la
3861 consommation de ressources maximale. Les deux paramètres peuvent
3862 contenir soit un nombre, soit <code>max</code> pour indiquer au
3863 serveur que la limite de consommation correspond à la valeur
3864 maximale autorisée par la configuration du système d'exploitation.
3865 Pour augmenter la consommation maximale de ressources, le serveur
3866 doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa
3867 phase de démarrage.</p>
3869 <p>Cette directive s'applique aux processus initiés par les
3870 processus enfants d'Apache httpd qui traitent les requêtes, et non aux
3871 processus enfants eux-mêmes. Sont concernés les scripts CGI et les
3872 commandes exec des SSI, mais en aucun cas les processus initiés par
3873 le processus parent d'Apache httpd comme les journalisations redirigées
3874 vers un programme.</p>
3876 <p>Les limites de ressources mémoire sont exprimées en octets par
3879 <seealso><directive module="core">RLimitCPU</directive></seealso>
3880 <seealso><directive module="core">RLimitNPROC</directive></seealso>
3881 </directivesynopsis>
3884 <name>RLimitNPROC</name>
3885 <description>Limite le nombre de processus qui peuvent être initiés par
3886 les processus initiés par les processus enfants d'Apache httpd</description>
3887 <syntax>RLimitNPROC <var>nombre</var>|max [<var>nombre</var>|max]</syntax>
3888 <default>Unset; uses operating system defaults</default>
3889 <contextlist><context>server config</context><context>virtual
3891 <context>directory</context><context>.htaccess</context></contextlist>
3892 <override>All</override>
3895 <p>Prend 1 ou 2 paramètres. Le premier definit la limite de
3896 consommation de ressources pour tous les processus, et le second la
3897 consommation de ressources maximale. Les deux paramètres peuvent
3898 contenir soit un nombre, soit <code>max</code> pour indiquer au
3899 serveur que la limite de consommation correspond à la valeur
3900 maximale autorisée par la configuration du système d'exploitation.
3901 Pour augmenter la consommation maximale de ressources, le serveur
3902 doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa
3903 phase de démarrage.</p>
3905 <p>Cette directive s'applique aux processus initiés par les
3906 processus enfants d'Apache httpd qui traitent les requêtes, et non aux
3907 processus enfants eux-mêmes. Sont concernés les scripts CGI et les
3908 commandes exec des SSI, mais en aucun cas les processus initiés par
3909 le processus parent d'Apache httpd comme les journalisations redirigées
3910 vers un programme.</p>
3912 <p>Les limites des processus contrôlent le nombre de processus par
3915 <note><title>Note</title>
3916 <p>Si les processus CGI s'exécutent sous le même
3917 utilisateur que celui du serveur web, cette
3918 directive va limiter le nombre de processus que le serveur
3919 pourra lui-même créer. La présence de messages
3920 <strong><code>cannot fork</code></strong> dans le journal des
3921 erreurs indiquera que la limite est atteinte.</p>
3924 <seealso><directive module="core">RLimitMEM</directive></seealso>
3925 <seealso><directive module="core">RLimitCPU</directive></seealso>
3926 </directivesynopsis>
3929 <name>ScriptInterpreterSource</name>
3930 <description>Permet de localiser l'interpréteur des scripts
3932 <syntax>ScriptInterpreterSource Registry|Registry-Strict|Script</syntax>
3933 <default>ScriptInterpreterSource Script</default>
3934 <contextlist><context>server config</context><context>virtual
3936 <context>directory</context><context>.htaccess</context></contextlist>
3937 <override>FileInfo</override>
3938 <compatibility>Win32 seulement ;
3939 l'option <code>Registry-Strict</code> est disponible dans les versions
3940 2.0 et supérieures du serveur HTTP Apache</compatibility>
3943 <p>Cette directive permet de contrôler la méthode qu'utilise Apache
3944 httpd pour trouver l'interpréteur destiné à exécuter les scripts CGI. La
3945 définition par défaut est <code>Script</code> : ceci indique à
3946 Apache httpd qu'il doit utiliser l'interpréteur précisé dans la ligne
3947 shebang du script (la première ligne, commençant par
3948 <code>#!</code>). Sur les systèmes Win32, cette ligne ressemble
3949 souvent à ceci :</p>
3951 <highlight language="perl">#!C:/Perl/bin/perl.exe</highlight>
3953 <p>ou simplement, dans le cas où <code>perl</code> est dans le
3954 <code>PATH</code> :</p>
3956 <highlight language="perl">#!perl</highlight>
3958 <p>Avec <code>ScriptInterpreterSource Registry</code>, Windows va
3959 effectuer une recherche dans l'arborescence
3960 <code>HKEY_CLASSES_ROOT</code> de la base de registre avec comme
3961 mot-clé l'extension du fichier contenant le script (par exemple
3962 <code>.pl</code>). C'est la commande définie par la sous-clé de
3963 registre <code>Shell\ExecCGI\Command</code> ou, si elle n'existe
3964 pas, la sous-clé <code>Shell\Open\Command</code> qui est utilisée
3965 pour ouvrir le fichier du script. Si ces clés de registre ne sont
3966 pas trouvées, Apache httpd utilise la méthode de l'option
3967 <code>Script</code>.</p>
3969 <note type="warning"><title>Sécurité</title>
3970 <p>Soyez prudent si vous utilisez <code>ScriptInterpreterSource
3971 Registry</code> avec des répertoires faisant l'objet d'un <directive
3972 module="mod_alias">ScriptAlias</directive>, car Apache httpd va essayer
3973 d'exécuter <strong>tous</strong> les fichiers contenus dans
3974 celui-ci. L'option <code>Registry</code> peut causer des appels de
3975 programmes non voulus sur des fichiers non destinés à être exécutés.
3976 Par exemple, la commande par défaut open sur les fichiers
3977 <code>.htm</code> sur la plupart des systèmes Windows va lancer
3978 Microsoft Internet Explorer ; ainsi, toute requête HTTP pour un
3979 fichier <code>.htm</code> situé dans le répertoire des scripts
3980 va lancer le navigateur en arrière-plan sur le serveur, ce qui a
3981 toutes les chances de crasher votre système dans les minutes qui
3985 <p>L'option <code>Registry-Strict</code>, apparue avec la version
3986 2.0 du serveur HTTP Apache,
3987 agit de manière identique à <code>Registry</code>, mais n'utilise
3988 que la sous-clé <code>Shell\ExecCGI\Command</code>. La présence de
3989 la clé <code>ExecCGI</code> n'étant pas systématique, Elle doit être
3990 définie manuellement dans le registre Windows et évite ainsi tout
3991 appel de programme accidentel sur votre système.</p>
3993 </directivesynopsis>
3996 <name>SeeRequestTail</name>
3997 <description>Détermine si mod_status affiche les 63 premiers caractères
3998 d'une requête ou les 63 derniers, en supposant que la requête
3999 elle-même possède plus de 63 caractères.</description>
4000 <syntax>SeeRequestTail On|Off</syntax>
4001 <default>SeeRequestTail Off</default>
4002 <contextlist><context>server config</context></contextlist>
4003 <compatibility>Disponible depuis la version 2.2.7
4004 d'Apache httpd.</compatibility>
4007 <p>Avec <code>ExtendedStatus On</code>, mod_status affiche la
4008 véritable requête en cours de traitement. Pour des raisons
4009 historiques, seuls 63 caractères de la requête sont réellement
4010 stockés à des fins d'affichage. Cette directive permet de déterminer
4011 si ce sont les 63 premiers caractères qui seront stockés (c'est le
4012 comportement par défaut),
4013 ou si ce sont les 63 derniers. Ceci ne s'applique bien entendu que
4014 si la taille de la requête est de 64 caractères ou plus.</p>
4016 <p>Si Apache httpd traite la requête <code
4017 >GET /disque1/stockage/apache/htdocs/images/rep-images1/nourriture/pommes.jpg HTTP/1.1</code>
4018 , l'affichage de la requête par mod_status se présentera comme suit :
4023 <th>Off (défaut)</th>
4024 <td>GET /disque1/stockage/apache/htdocs/images/rep-images1/nourritu</td>
4028 <td>apache/htdocs/images/rep-images1/nourriture/pommes.jpg HTTP/1.1</td>
4034 </directivesynopsis>
4037 <name>ServerAdmin</name>
4038 <description>L'adresse électronique que le serveur inclut dans les
4039 messages d'erreur envoyés au client</description>
4040 <syntax>ServerAdmin <var>adresse électronique</var>|<var>URL</var></syntax>
4041 <contextlist><context>server config</context><context>virtual
4046 <p>La directive <directive>ServerAdmin</directive> permet de définir
4047 l'adresse de contact que le serveur va inclure dans tout message
4048 d'erreur qu'il envoie au client. Si le programme <code>httpd</code>
4049 ne reconnait pas l'argument fourni comme une URL, il suppose que
4050 c'est une <var>adresse électronique</var>, et lui ajoute le préfixe
4051 <code>mailto:</code> dans les cibles des hyperliens. Il est
4052 cependant recommandé d'utiliser exclusivement une adresse
4053 électronique, car de nombreux scripts CGI considèrent ceci comme
4054 implicite. Si vous utilisez une URL, elle doit pointer vers un autre
4055 serveur que vous contrôlez. Dans le cas contraire, les utilisateurs
4056 seraient dans l'impossibilité de vous contacter en cas de problème.</p>
4058 <p>Il peut s'avérer utile de définir une adresse dédiée à
4059 l'administration du serveur, par exemple :</p>
4061 <highlight language="config">ServerAdmin www-admin@foo.example.com</highlight>
4062 <p>car les utilisateurs ne mentionnent pas systématiquement le
4063 serveur dont ils parlent !</p>
4065 </directivesynopsis>
4068 <name>ServerAlias</name>
4069 <description>Autres noms d'un serveur utilisables pour atteindre des
4070 serveurs virtuels à base de nom</description>
4071 <syntax>ServerAlias <var>nom serveur</var> [<var>nom serveur</var>]
4073 <contextlist><context>virtual host</context></contextlist>
4076 <p>La directive <directive>ServerAlias</directive> permet de définir
4077 les noms alternatifs d'un serveur utilisables pour atteindre des <a
4078 href="../vhosts/name-based.html">serveurs virtuels à base de
4079 nom</a>. La directive <directive>ServerAlias</directive> peut
4080 contenir des caractères génériques, si nécessaire.</p>
4082 <highlight language="config">
4083 <VirtualHost *:80>
4084 ServerName server.example.com
4085 ServerAlias server server2.example.com server2
4086 ServerAlias *.example.com
4087 UseCanonicalName Off
4089 </VirtualHost>
4091 <p>La recherche du serveur virtuel à base de nom correspondant au
4092 plus près à la requête s'effectue selon l'ordre d'apparition des
4093 directives <directive type="section"
4094 module="core">virtualhost</directive> dans le fichier de
4095 configuration. Le premier serveur virtuel dont le <directive
4096 module="core">ServerName</directive> ou le <directive
4097 module="core">ServerAlias</directive> correspond est choisi, sans
4098 priorité particulière si le nom contient des caractères génériques
4099 (que ce soit pour ServerName ou ServerAlias).</p>
4101 <p>Tous les noms spécifiés au sein d'une section
4102 <directive>VirtualHost</directive> sont traités comme un
4103 <directive>ServerAlias</directive> (sans caractères génériques).</p>
4106 <seealso><directive module="core">UseCanonicalName</directive></seealso>
4107 <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels
4108 du serveur HTTP Apache</a></seealso>
4109 </directivesynopsis>
4112 <name>ServerName</name>
4113 <description>Nom d'hôte et port que le serveur utilise pour
4114 s'authentifier lui-même</description>
4115 <syntax>ServerName [<var>protocole</var>://]<var>nom de domaine
4116 entièrement qualifié</var>[:<var>port</var>]</syntax>
4117 <contextlist><context>server config</context><context>virtual
4122 <p>La directive <directive>ServerName</directive> permet de définir
4123 les protocole, nom d'hôte et port d'une requête que le serveur
4124 utilise pour s'authentifier lui-même. Ceci est utile lors de la
4125 création de redirections d'URLs.</p>
4127 <p>La directive <directive>ServerName</directive> permet aussi
4128 (éventuellement en conjonction avec la directive
4129 <directive>ServerAlias</directive>) d'identifier de manière unique
4130 un serveur virtuel, lorsqu'elle est utilisée dans un contexte de <a
4131 href="../vhosts/name-based.html">serveurs virtuels à base de
4134 <p>Par exemple, si le nom de la
4135 machine hébergeant le serveur web est
4136 <code>simple.example.com</code>, la machine possède l'alias
4137 DNS <code>www.example.com</code>, et si vous voulez que le serveur
4138 web s'identifie avec cet alias, vous devez utilisez la définition
4141 <highlight language="config">ServerName www.example.com</highlight>
4143 <p>La directive <directive>ServerName</directive> peut apparaître à
4144 toutes les étapes de la définition du serveur. Toute occurrence
4145 annule cependant la précédente (pour ce serveur).</p>
4147 <p>Si la directive <directive>ServerName</directive> n'est pas
4148 définie, le serveur tente de déterminer le nom d'hôte en effectuant
4149 une recherche DNS inverse sur son adresse IP. Si la directive
4150 <directive>ServerName</directive> ne précise pas de port, le serveur
4151 utilisera celui de la requête entrante. Il est recommandé de
4152 spécifier un nom d'hôte et un port spécifiques à l'aide de la
4153 directive <directive>ServerName</directive> pour une fiabilité
4154 optimale et à titre préventif.</p>
4156 <p>Si vous définissez des <a
4157 href="../vhosts/name-based.html">serveurs virtuels à base de
4158 nom</a>, une directive <directive>ServerName</directive> située à
4159 l'intérieur d'une section <directive type="section"
4160 module="core">VirtualHost</directive> spécifiera quel nom d'hôte
4161 doit apparaître dans l'en-tête de requête <code>Host:</code> pour
4162 pouvoir atteindre ce serveur virtuel.</p>
4165 <p>Parfois, le serveur s'exécute en amont d'un dispositif qui
4166 implémente SSL, comme un mandataire inverse, un répartiteur de
4167 charge ou un boîtier dédié SSL. Dans ce cas, spécifiez le protocole
4168 <code>https://</code> et le port auquel les clients se connectent
4169 dans la directive <directive>ServerName</directive>, afin de
4170 s'assurer que le serveur génère correctement ses URLs
4171 d'auto-identification.
4174 <p>Voir la description des directives <directive
4175 module="core">UseCanonicalName</directive> et <directive
4176 module="core">UseCanonicalPhysicalPort</directive> pour les
4177 définitions qui permettent de déterminer si les URLs
4178 auto-identifiantes (par exemple via le module
4179 <module>mod_dir</module>) vont faire référence au port spécifié, ou
4180 au port indiqué dans la requête du client.
4183 <note type="warning">
4184 <p>Si la valeur de la directive <directive>ServerName</directive> ne
4185 peut pas être résolue en adresse IP, le démarrage du serveur
4186 provoquera un avertissement. <code>httpd</code> va alors utiliser le
4187 résultat de la commande système <code>hostname</code> pour
4188 déterminer le nom du serveur, ce qui ne correspondra pratiquement
4189 jamais au nom de serveur que vous souhaitez réellement.</p>
4191 httpd: Could not reliably determine the server's fully qualified domain name, using rocinante.local for ServerName
4197 <seealso><a href="../dns-caveats.html">Problèmes concernant le DNS et
4198 le serveur HTTP Apache</a></seealso>
4199 <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels
4200 du serveur HTTP Apache</a></seealso>
4201 <seealso><directive module="core">UseCanonicalName</directive></seealso>
4202 <seealso><directive module="core">UseCanonicalPhysicalPort</directive></seealso>
4203 <seealso><directive module="core">ServerAlias</directive></seealso>
4204 </directivesynopsis>
4207 <name>ServerPath</name>
4208 <description>Nom de chemin d'URL hérité pour un serveur virtuel à base
4209 de nom accédé par un navigateur incompatible</description>
4210 <syntax>ServerPath <var>chemin d'URL</var></syntax>
4211 <contextlist><context>virtual host</context></contextlist>
4214 <p>La directive <directive>ServerPath</directive> permet de définir
4215 le nom de chemin d'URL hérité d'un hôte, à utiliser avec les <a
4216 href="../vhosts/">serveurs virtuels à base de nom</a>.</p>
4218 <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels
4219 du serveur HTTP Apache</a></seealso>
4220 </directivesynopsis>
4223 <name>ServerRoot</name>
4224 <description>Racine du répertoire d'installation du
4225 serveur</description>
4226 <syntax>ServerRoot <var>chemin de répertoire</var></syntax>
4227 <default>ServerRoot /usr/local/apache</default>
4228 <contextlist><context>server config</context></contextlist>
4231 <p>La directive <directive>ServerRoot</directive> permet de définir
4232 le répertoire dans lequel le serveur est installé. En particulier,
4233 il contiendra les sous-répertoires <code>conf/</code> et
4234 <code>logs/</code>. Les chemins relatifs indiqués dans les autres
4235 directives (comme <directive
4236 module="core">Include</directive> ou <directive
4237 module="mod_so">LoadModule</directive>) seront définis par
4238 rapport à ce répertoire.</p>
4240 <highlight language="config">ServerRoot "/home/httpd"</highlight>
4242 <p>La valeur par défaut de <directive>ServerRoot</directive> peut
4243 être modifiée via l'argument <code>--prefix</code> de la commande <a
4244 href="../programs/configure.html"><code>configure</code></a>, et de
4245 nombreuses distributions tierces du serveur proposent une valeur
4246 différente de celles listées ci-dessus.</p>
4249 <seealso><a href="../invoking.html">the <code>-d</code>
4250 options de <code>httpd</code></a></seealso>
4251 <seealso><a href="../misc/security_tips.html#serverroot">les conseils à
4252 propos de sécurité</a> pour des informations sur la manière de définir
4253 correctement les permissions sur le répertoire indiqué par la directive
4254 <directive>ServerRoot</directive></seealso>
4255 </directivesynopsis>
4258 <name>ServerSignature</name>
4259 <description>Définit un pied de page pour les documents générés par le
4260 serveur</description>
4261 <syntax>ServerSignature On|Off|EMail</syntax>
4262 <default>ServerSignature Off</default>
4263 <contextlist><context>server config</context><context>virtual
4265 <context>directory</context><context>.htaccess</context>
4267 <override>All</override>
4270 <p>La directive <directive>ServerSignature</directive> permet de
4271 définir une ligne de pied de page fixe pour les documents générés
4272 par le serveur (messages d'erreur, listings de répertoires ftp de
4273 <module>mod_proxy</module>, sorties de <module>mod_info</module>,
4274 etc...). Dans le cas d'une chaîne de mandataires, l'utilisateur n'a
4275 souvent aucun moyen de déterminer lequel des mandataires chaînés a
4276 généré un message d'erreur, et c'est une des raisons pour lesquelles
4277 on peut être amené à ajouter un tel pied de page.</p>
4279 <p>La valeur par défaut <code>Off</code> supprime la ligne de pied
4280 de page (et est ainsi compatible avec le comportement des
4281 versions 1.2 et antérieures d'Apache). la valeur <code>On</code>
4282 ajoute simplement une ligne contenant le numéro de version du
4283 serveur ainsi que le nom du serveur virtuel issu de la directive
4284 <directive module="core">ServerName</directive>, alors que la valeur
4285 <code>EMail</code> ajoute en plus une référence "mailto:" à
4286 l'administrateur du document référencé issu la directive
4287 <directive module="core">ServerAdmin</directive>.</p>
4289 <p>Après la version 2.0.44, les détails à propos du numéro de
4290 version du serveur sont contrôlés à l'aide de la directive
4291 <directive module="core">ServerTokens</directive>.</p>
4293 <seealso><directive module="core">ServerTokens</directive></seealso>
4294 </directivesynopsis>
4297 <name>ServerTokens</name>
4298 <description>Configure l'en-tête <code>Server</code> de la réponse
4300 <syntax>ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full</syntax>
4301 <default>ServerTokens Full</default>
4302 <contextlist><context>server config</context></contextlist>
4305 <p>Cette directive permet de contrôler le contenu de l'en-tête
4306 <code>Server</code> inclus dans la réponse envoyée au client : cet
4307 en-tête peut contenir le type de système d'exploitation du serveur,
4308 ainsi que des informations à propos des modules compilés avec le
4312 <dt><code>ServerTokens Full</code> (ou non spécifié)</dt>
4314 <dd>Le serveur envoie par exemple : <code>Server: Apache/2.4.2
4315 (Unix) PHP/4.2.2 MyMod/1.2</code></dd>
4317 <dt><code>ServerTokens Prod[uctOnly]</code></dt>
4319 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4322 <dt><code>ServerTokens Major</code></dt>
4324 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4325 Apache/2</code></dd>
4327 <dt><code>ServerTokens Minor</code></dt>
4329 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4330 Apache/2.4</code></dd>
4332 <dt><code>ServerTokens Min[imal]</code></dt>
4334 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4335 Apache/2.4.2</code></dd>
4337 <dt><code>ServerTokens OS</code></dt>
4339 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4340 Apache/2.4.2 (Unix)</code></dd>
4346 <p>Cette définition s'applique à l'ensemble du serveur et ne peut
4347 être activée ou désactivée pour tel ou tel serveur virtuel.</p>
4349 <p>Dans les versions postérieures à 2.0.44, cette directive contrôle
4350 aussi les informations fournies par la directive <directive
4351 module="core">ServerSignature</directive>.</p>
4353 <note>Définir <directive>ServerTokens</directive> à une
4354 valeur inférieure à <code>minimal</code> n'est pas
4355 recommandé car le débogage des problèmes
4356 interopérationnels n'en sera alors que plus difficile. Notez
4357 aussi que la désactivation de l'en-tête Server:
4358 n'améliore en rien la sécurité de votre
4359 serveur ; le concept de "sécurité par
4360 l'obscurité" est un mythe et conduit à
4361 une mauvaise perception de ce qu'est la sécurité.</note>
4365 <seealso><directive module="core">ServerSignature</directive></seealso>
4366 </directivesynopsis>
4369 <name>SetHandler</name>
4370 <description>Force le traitement des fichiers spécifiés par un
4371 gestionnaire particulier</description>
4372 <syntax>SetHandler <var>nom gestionnaire</var>|None</syntax>
4373 <contextlist><context>server config</context><context>virtual
4375 <context>directory</context><context>.htaccess</context>
4377 <override>FileInfo</override>
4378 <compatibility>Intégré dans le noyau d'Apache httpd depuis la version
4382 <p>Lorsqu'elle se situe à l'intérieur d'un fichier
4383 <code>.htaccess</code>, ou d'une section <directive type="section"
4384 module="core">Directory</directive> ou <directive type="section"
4385 module="core">Location</directive>, cette directive force le
4386 traitement de tous les fichiers spécifiés par le <a
4387 href="../handler.html">gestionnaire</a> défini par l'argument
4388 <var>nom gestionnaire</var>. Par exemple, dans le cas d'un
4389 répertoire dont vous voulez interpréter le contenu comme des
4390 fichiers de règles d'images cliquables, sans tenir compte des
4391 extensions, vous pouvez ajouter la ligne suivante dans un fichier
4392 <code>.htaccess</code> de ce répertoire :</p>
4394 <highlight language="config">SetHandler imap-file</highlight>
4396 <p>Autre exemple : si vous voulez que le serveur affiche un
4397 compte-rendu d'état chaque fois qu'une URL du type <code>http://nom
4398 serveur/status</code> est appelée, vous pouvez ajouter ceci dans
4399 <code>httpd.conf</code> :</p>
4401 <highlight language="config">
4402 <Location "/status">
4403 SetHandler server-status
4407 <p>Vous pouvez aussi utiliser cette directive pour associer un
4408 gestionnaire à des fichiers possèdant une extension de nom de
4409 fichier particulière. Par exemple :</p>
4411 <highlight language="config">
4412 <FilesMatch \.php$>
4413 SetHandler application/x-httpd-php
4417 <p>Vous pouvez écraser la définition antérieure d'une directive
4418 <directive>SetHandler</directive> en utilisant la valeur
4419 <code>None</code>.</p>
4421 <note><title>Note</title>
4422 <p>Comme <directive>SetHandler</directive> l'emporte sur la
4423 définition des gestionnaires par défaut, le comportement habituel
4424 consistant à traiter les URLs se terminant par un slash (/) comme
4425 des répertoires ou des fichiers index est désactivé.</p></note>
4428 <seealso><directive module="mod_mime">AddHandler</directive></seealso>
4430 </directivesynopsis>
4433 <name>SetInputFilter</name>
4434 <description>Définit les filtres par lesquels vont passer les requêtes
4435 client et les données POST</description>
4436 <syntax>SetInputFilter <var>filtre</var>[;<var>filtre</var>...]</syntax>
4437 <contextlist><context>server config</context><context>virtual
4439 <context>directory</context><context>.htaccess</context>
4441 <override>FileInfo</override>
4444 <p>La directive <directive>SetInputFilter</directive> permet de
4445 définir le ou les filtres par lesquels vont passer les requêtes
4446 client et les données POST au moment où le serveur les reçoit. Cette
4447 définition vient en ajout à tout autre filtre défini en
4448 quelqu'endroit que ce soit, y compris via la directive <directive
4449 module="mod_mime">AddInputFilter</directive>.</p>
4451 <p>Si la directive comporte plusieurs filtres, ils doivent être
4452 séparés par des points-virgules, et spécifiés selon l'ordre dans
4453 lequel vous souhaitez les voir agir sur les contenus.</p>
4455 <seealso>documentation des <a
4456 href="../filter.html">Filtres</a></seealso>
4457 </directivesynopsis>
4460 <name>SetOutputFilter</name>
4461 <description>Définit les filtres par lesquels vont passer les réponses
4462 du serveur</description>
4463 <syntax>SetOutputFilter <var>filtre</var>[;<var>filtre</var>...]</syntax>
4464 <contextlist><context>server config</context><context>virtual
4466 <context>directory</context><context>.htaccess</context>
4468 <override>FileInfo</override>
4471 <p>La directive <directive>SetOutputFilter</directive> permet de
4472 définir les filtres par lesquels vont passer les réponses du serveur
4473 avant d'être envoyées au client. Cette définition vient en ajout à
4474 tout autre filtre défini en quelqu'endroit que ce soit, y compris
4475 via la directive <directive
4476 module="mod_mime">AddOutputFilter</directive>.</p>
4478 <p>Par exemple, la configuration suivante va traiter tous les
4479 fichiers du répertoire <code>/www/data/</code> comme des inclusions
4480 côté serveur (SSI) :</p>
4482 <highlight language="config">
4483 <Directory "/www/data/">
4484 SetOutputFilter INCLUDES
4488 <p>Si la directive comporte plusieurs filtres, ils doivent être
4489 séparés par des points-virgules, et spécifiés selon l'ordre dans
4490 lequel vous souhaitez les voir agir sur les contenus.</p>
4492 <seealso><a href="../filter.html">Filters</a> documentation</seealso>
4493 </directivesynopsis>
4496 <name>TimeOut</name>
4497 <description>Temps pendant lequel le serveur va attendre certains
4498 évènements avant de considérer qu'une requête a échoué</description>
4499 <syntax>TimeOut <var>secondes</var></syntax>
4500 <default>TimeOut 60</default>
4501 <contextlist><context>server config</context><context>virtual
4502 host</context></contextlist>
4505 <p>La directive <directive>TimeOut</directive> permet de définir le
4506 temps maximum pendant lequel Apache httpd va attendre des entrées/sorties
4507 selon les circonstances :</p>
4510 <li>Lors de la lecture de données en provenance du client, le
4511 temps maximum jusqu'à l'arrivée d'un paquet TCP si le tampon est
4514 <li>Lors de l'écriture de données destinées au client, le temps
4515 maximum jusqu'à l'arrivée de l'accusé-réception d'un paquet si le
4516 tampon d'envoi est plein.</li>
4518 <li>Avec <module>mod_cgi</module>, le temps d'attente maximum des
4519 sorties d'un script CGI.</li>
4521 <li>Avec <module>mod_ext_filter</module>, le temps d'attente
4522 maximum des sorties d'un processus de filtrage.</li>
4524 <li>Avec <module>mod_proxy</module>, la valeur du délai par défaut
4525 si <directive module="mod_proxy">ProxyTimeout</directive> n'est
4526 pas défini.</li>
4530 </directivesynopsis>
4533 <name>TraceEnable</name>
4534 <description>Détermine le comportement des requêtes
4535 <code>TRACE</code></description>
4536 <syntax>TraceEnable <var>[on|off|extended]</var></syntax>
4537 <default>TraceEnable on</default>
4538 <contextlist><context>server config</context><context>virtual host</context></contextlist>
4539 <compatibility>Disponible dans les versions 1.3.34, 2.0.55 et
4540 supérieures du serveur HTTP Apache</compatibility>
4543 <p>Cette directive l'emporte sur le comportement de
4544 <code>TRACE</code> pour le noyau du serveur et
4545 <module>mod_proxy</module>. La définition par défaut
4546 <code>TraceEnable on</code> permet des requêtes <code>TRACE</code>
4547 selon la RFC 2616, qui interdit d'ajouter tout corps à la requête.
4548 La définition <code>TraceEnable off</code> indique au noyau du
4549 serveur et à <module>mod_proxy</module> de retourner un code
4550 d'erreur <code>405</code> (Méthode non autorisée) au client.</p>
4552 <p>En fait, et à des fins de test et de diagnostic seulement, on
4553 peut autoriser l'ajout d'un corps de requête à l'aide de la
4554 définition non standard <code>TraceEnable extended</code>. Le noyau
4555 du serveur (dans le cas d'un serveur d'origine) va limiter la taille
4556 du corps de requête à 64k (plus 8k pour les en-têtes de
4557 fractionnement si <code>Transfer-Encoding: chunked</code> est
4558 utilisé). Le noyau du serveur va reproduire l'ensemble des en-têtes,
4559 y compris les en-têtes de fractionnement avec le corps de la
4560 réponse. Dans le cas d'un serveur mandataire, la taille du corps de
4561 requête n'est pas limitée à 64k.</p>
4563 <note><title>Note</title>
4564 <p>Bien que certains prétendent le contraire, <code>TRACE</code> ne
4565 constitue pas une vulnérabilité en matière de sécurité, et il n'y a
4566 aucune raison suffisante pour le désactiver, ce qui rendrait
4567 votre serveur non conforme.</p>
4570 </directivesynopsis>
4573 <name>UnDefine</name>
4574 <description>Invalide la définition d'une variable</description>
4575 <syntax>UnDefine <var>nom-variable</var></syntax>
4576 <contextlist><context>server config</context></contextlist>
4579 <p>Annule l'effet d'une directive <directive
4580 module="core">Define</directive> ou d'un argument <code>-D</code> de
4581 <program>httpd</program> en invalidant l'existence de la variable
4583 <p>On peut utiliser cette directive pour inverser l'effet d'une
4584 section <directive module="core" type="section">IfDefine</directive>
4585 sans avoir à modifier les arguments <code>-D</code> dans les scripts
4586 de démarrage.</p>
4588 </directivesynopsis>
4591 <name>UseCanonicalName</name>
4592 <description>Définit la manière dont le serveur détermine son propre nom
4593 et son port</description>
4594 <syntax>UseCanonicalName On|Off|DNS</syntax>
4595 <default>UseCanonicalName Off</default>
4596 <contextlist><context>server config</context><context>virtual
4598 <context>directory</context></contextlist>
4601 <p>Dans de nombreuses situations, Apache httpd doit construire une URL
4602 <em>auto-identifiante</em> -- c'est à dire une URL qui fait
4603 référence au serveur lui-même. Avec <code>UseCanonicalName
4604 On</code>, Apache httpd va utiliser le nom d'hôte et le port spécifiés par
4605 la directive <directive module="core">ServerName</directive> pour
4606 construire le nom canonique du serveur. Ce nom est utilisé dans
4607 toutes les URLs auto-identifiantes, et affecté aux variables
4608 <code>SERVER_NAME</code> et <code>SERVER_PORT</code> dans les
4611 <p>Avec <code>UseCanonicalName Off</code>, Apache httpd va construire ses
4612 URLs auto-identifiantes à l'aide du nom d'hôte et du port fournis
4613 par le client, si ce dernier en a fourni un (dans la négative,
4614 Apache utilisera le nom canonique, de la même manière que
4615 ci-dessus). Ces valeurs sont les mêmes que celles qui sont utilisées
4616 pour implémenter les <a
4617 href="../vhosts/name-based.html">serveurs virtuels à base de
4618 nom</a>, et sont disponibles avec les mêmes clients. De même, les
4619 variables CGI <code>SERVER_NAME</code> et <code>SERVER_PORT</code>
4620 seront affectées des valeurs fournies par le client.</p>
4622 <p>Cette directive peut s'avérer utile, par exemple, sur un serveur
4623 intranet auquel les utilisateurs se connectent en utilisant des noms
4624 courts tels que <code>www</code>. Si les utilisateurs tapent un nom
4625 court suivi d'une URL qui fait référence à un répertoire, comme
4626 <code>http://www/splat</code>, <em>sans le slash terminal</em>, vous
4627 remarquerez qu'Apache httpd va les rediriger vers
4628 <code>http://www.example.com/splat/</code>. Si vous avez activé
4629 l'authentification, ceci va obliger l'utilisateur à s'authentifier
4630 deux fois (une première fois pour <code>www</code> et une seconde
4631 fois pour <code>www.example.com</code> -- voir <a
4632 href="http://wiki.apache.org/httpd/FAQ#Why_does_Apache_ask_for_my_password_twice_before_serving_a_file.3F">la
4633 foire aux questions sur ce sujet pour plus d'informations</a>).
4634 Par contre, si <directive>UseCanonicalName</directive> est définie à
4635 <code>Off</code>, Apache httpd redirigera l'utilisateur vers
4636 <code>http://www/splat/</code>.</p>
4638 <p>Pour l'hébergement virtuel en masse à base d'adresse IP, on
4639 utilise une troisième option, <code>UseCanonicalName
4640 DNS</code>, pour supporter les clients anciens qui ne
4641 fournissent pas d'en-tête <code>Host:</code>. Apache httpd effectue alors
4642 une recherche DNS inverse sur l'adresse IP du serveur auquel le
4643 client s'est connecté afin de construire ses URLs
4644 auto-identifiantes.</p>
4646 <note type="warning"><title>Avertissement</title>
4647 <p>Les programmes CGI risquent d'être perturbés par cette option
4648 s'ils tiennent compte de la variable <code>SERVER_NAME</code>. Le
4649 client est pratiquement libre de fournir la valeur qu'il veut comme
4650 nom d'hôte. Mais si le programme CGI n'utilise
4651 <code>SERVER_NAME</code> que pour construire des URLs
4652 auto-identifiantes, il ne devrait pas y avoir de problème.</p>
4655 <seealso><directive module="core">UseCanonicalPhysicalPort</directive></seealso>
4656 <seealso><directive module="core">ServerName</directive></seealso>
4657 <seealso><directive module="mpm_common">Listen</directive></seealso>
4658 </directivesynopsis>
4661 <name>UseCanonicalPhysicalPort</name>
4662 <description>Définit la manière dont le serveur
4663 détermine son propre port</description>
4664 <syntax>UseCanonicalPhysicalPort On|Off</syntax>
4665 <default>UseCanonicalPhysicalPort Off</default>
4666 <contextlist><context>server config</context><context>virtual
4668 <context>directory</context></contextlist>
4671 <p>Dans de nombreuses situations, Apache httpd doit construire une URL
4672 <em>auto-identifiante</em> -- c'est à dire une URL qui fait
4673 référence au serveur lui-même. Avec <code>UseCanonicalPhysicalPort
4674 On</code>, Apache httpd va fournir le numéro de port physique réel utilisé
4675 par la requête en tant que port potentiel, pour construire le port
4676 canonique afin que le serveur puisse alimenter la directive
4677 <directive module="core">UseCanonicalName</directive>. Avec
4678 <code>UseCanonicalPhysicalPort Off</code>, Apache httpd n'utilisera pas le
4679 numéro de port physique réel, mais au contraire se référera aux
4680 informations de configuration pour construire un numéro de port
4683 <note><title>Note</title>
4684 <p>L'ordre dans lequel s'effectue la recherche quand on utilise le
4685 port physique est le suivant :</p>
4687 <dt><code>UseCanonicalName On</code></dt>
4690 <li>Port indiqué dans <directive module="core">Servername</directive></li>
4691 <li>Port physique</li>
4692 <li>Port par défaut</li>
4695 <dt><code>UseCanonicalName Off | DNS</code></dt>
4698 <li>Port spécifié dans l'en-tête <code>Host:</code></li>
4699 <li>Port physique</li>
4700 <li>Port spécifié par <directive module="core">Servername</directive></li>
4701 <li>Port par défaut</li>
4706 <p>Avec <code>UseCanonicalPhysicalPort Off</code>, on reprend
4707 l'ordre ci-dessus en supprimant "Port physique".</p>
4711 <seealso><directive module="core">UseCanonicalName</directive></seealso>
4712 <seealso><directive module="core">ServerName</directive></seealso>
4713 <seealso><directive module="mpm_common">Listen</directive></seealso>
4714 </directivesynopsis>
4716 <directivesynopsis type="section">
4717 <name>VirtualHost</name>
4718 <description>Contient des directives qui ne s'appliquent qu'à un nom
4719 d'hôte spécifique ou à une adresse IP</description>
4720 <syntax><VirtualHost
4721 <var>adresse IP</var>[:<var>port</var>] [<var>adresse
4722 IP</var>[:<var>port</var>]] ...> ...
4723 </VirtualHost></syntax>
4724 <contextlist><context>server config</context></contextlist>
4727 <p>Les balises <directive type="section">VirtualHost</directive> et
4728 <code></VirtualHost></code> permettent de rassembler un groupe
4729 de directives qui ne s'appliquent qu'à un serveur virtuel
4730 particulier. Toute directive autorisée dans un contexte de serveur
4731 virtuel peut être utilisée. Lorsque le serveur reçoit un requête
4732 pour un document hébergé par un serveur virtuel particulier, il
4733 applique les directives de configuration rassemblées dans la section
4734 <directive type="section">VirtualHost</directive>. <var>adresse
4735 IP</var> peut être une des entités suivantes, éventuellement suivies
4736 d'un caractère ':' et d'un numéro de port (ou *) :</p>
4739 <li>L'adresse IP du serveur virtuel ;</li>
4741 <li>Un nom de domaine entièrement qualifié correspondant à
4742 l'adresse IP du serveur virtuel (non recommandé) ;</li>
4744 <li>Le caractère <code>*</code>, qui agit comme un
4745 caractère générique, et correspond à toute adresse IP.</li>
4747 <li>La chaîne <code>_default_</code>, dont la signification est
4748 identique à celle du caractère <code>*</code></li>
4752 <highlight language="config">
4753 <VirtualHost 10.1.2.3:80>
4754 ServerAdmin webmaster@host.example.com
4755 DocumentRoot /www/docs/host.example.com
4756 ServerName host.example.com
4757 ErrorLog logs/host.example.com-error_log
4758 TransferLog logs/host.example.com-access_log
4759 </VirtualHost>
4763 <p>Les adresses IPv6 doivent être entourées de crochets car dans le
4764 cas contraire, un éventuel port optionnel ne pourrait pas être
4765 déterminé. Voici un exemple de serveur virtuel avec adresse IPv6
4768 <highlight language="config">
4769 <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80>
4770 ServerAdmin webmaster@host.example.com
4771 DocumentRoot /www/docs/host.example.com
4772 ServerName host.example.com
4773 ErrorLog logs/host.example.com-error_log
4774 TransferLog logs/host.example.com-access_log
4775 </VirtualHost>
4778 <p>Chaque serveur virtuel doit correspondre à une adresse IP, un
4779 port ou un nom d'hôte spécifique ; dans le premier cas, le serveur
4780 doit être configuré pour recevoir les paquets IP de plusieurs
4781 adresses (si le serveur n'a qu'une interface réseau, on peut
4782 utiliser à cet effet la commande <code>ifconfig alias</code> -- si
4783 votre système d'exploitation le permet).</p>
4785 <note><title>Note</title>
4786 <p>L'utilisation de la directive <directive
4787 type="section">VirtualHost</directive> n'affecte en rien les
4788 adresses IP sur lesquelles Apache httpd est en écoute. Vous devez vous
4789 assurer que les adresses des serveurs virtuels sont bien incluses
4790 dans la liste des adresses précisées par la directive <directive
4791 module="mpm_common">Listen</directive>.</p>
4794 <p>Tout bloc <directive
4795 type="section">VirtualHost</directive> doit comporter une directive
4796 <directive module="core">ServerName</directive>. Dans le cas
4797 contraire, le serveur virtuel héritera de la valeur de la directive
4798 <directive module="core">ServerName</directive> issue de la
4799 configuration du serveur principal.</p>
4801 <p>A l'arrivée d'une requête, le serveur tente de la
4802 faire prendre en compte par la section <directive
4803 type="section">VirtualHost</directive> qui correspond le mieux en ne
4804 se basant que sur la paire adresse IP/port. Les chaînes sans
4805 caractères génériques l'emportent sur celles qui en contiennent. Si
4806 aucune correspondance du point de vue de l'adresse IP/port n'est
4807 trouvée, c'est la configuration du serveur "principal" qui sera
4808 utilisée.</p>
4810 <p>Si plusieurs serveurs virtuels correspondent du point de vue de
4811 l'adresse IP/port, le serveur sélectionne celui qui correspond le
4812 mieux du point de vue du nom d'hôte de la requête. Si aucune
4813 correspondance du point de vue du nom d'hôte n'est trouvée, c'est le
4814 premier serveur virtuel dont l'adresse IP/port correspond qui sera
4815 utilisé. Par voie de conséquence, le premier serveur virtuel
4816 comportant une certaine paire adresse IP/port est le serveur virtuel
4817 par défaut pour cette paire adresse IP/port.</p>
4819 <note type="warning"><title>Sécurité</title>
4820 <p>Voir le document sur les <a
4821 href="../misc/security_tips.html">conseils à propos de sécurité</a>
4822 pour une description détaillée des raisons pour lesquelles la
4823 sécurité de votre serveur pourrait être compromise, si le répertoire
4824 contenant les fichiers journaux est inscriptible par tout autre
4825 utilisateur que celui qui démarre le serveur.</p>
4828 <seealso><a href="../vhosts/">Documentation des serveurs virtuels
4829 du serveur HTTP Apache</a></seealso>
4830 <seealso><a href="../dns-caveats.html">Problèmes concernant le DNS et
4831 le serveur HTTP Apache</a></seealso>
4832 <seealso><a href="../bind.html">Définition des adresses et ports
4833 qu'utilise le serveur HTTP Apache</a></seealso>
4834 <seealso><a href="../sections.html">Comment fonctionnent les sections
4835 <Directory>, <Location> et <Files></a> pour une
4836 explication de la manière dont ces différentes sections se combinent
4837 entre elles à la réception d'une requête</seealso>
4838 </directivesynopsis>
4841 <name>RegisterHttpMethod</name>
4842 <description>Enregistrement de méthodes HTTP non standards</description>
4843 <syntax>RegisterHttpMethod <var>méthode</var> [<var>méthode</var> [...]]</syntax>
4844 <contextlist><context>server config</context></contextlist>
4847 <p>Normalement, les méthodes HTTP non conformes aux RFCs correspondantes
4848 sont rejetées au cours du traitement de la requête par HTTPD. Pour
4849 éviter ceci, les modules peuvent enregistrer les méthodes HTTP non
4850 standards qu'ils supportent. La directive
4851 <directive>RegisterHttpMethod</directive> permet d'enregistrer de telles
4852 méthodes manuellement. Ceci peut s'avérer utile si de telle méthodes
4853 doivent être utilisées dans un traitement externe, comme un script CGI.</p>
4855 </directivesynopsis>