1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1757920:1758307 (outdated) -->
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>
41 <p>Cette directive permet d'effectuer une optimisation de la socket
42 d'écoute d'un type de protocole en fonction du système
43 d'exploitation. Le but premier est de faire en sorte que le noyau
44 n'envoie pas de socket au processus du serveur jusqu'à ce que
45 des données soient reçues, ou qu'une requête HTTP complète soit mise
46 en tampon. Seuls les <a
47 href="http://www.freebsd.org/cgi/man.cgi?query=accept_filter&
48 sektion=9">Filtres d'acceptation de FreeBSD</a>, le filtre plus
49 primitif <code>TCP_DEFER_ACCEPT</code> sous Linux, et la version
50 optimisée d'AcceptEx() de Windows sont actuellement supportés.</p>
52 <p>L'utilisation de l'argument <code>none</code> va désactiver tout
53 filtre d'acceptation pour ce protocole. Ceci s'avère utile pour les
54 protocoles qui nécessitent l'envoi de données par le serveur en
55 premier, comme <code>ftp:</code> ou <code>nntp</code>:</p>
56 <highlight language="config">
57 AcceptFilter nntp none
60 <p>Les noms de protocoles par défaut sont <code>https</code> pour le
61 port 443 et <code>http</code> pour tous les autres ports. Pour
62 spécifier un autre protocole à utiliser avec un port en écoute,
63 ajoutez l'argument <var>protocol</var> à la directive <directive
64 module="mpm_common">Listen</directive>.</p>
66 <p>Sous FreeBSD, les valeurs par défaut sont :</p>
67 <highlight language="config">
68 AcceptFilter http httpready
69 AcceptFilter https dataready
72 <p>Le filtre d'acceptation <code>httpready</code> met en tampon des
73 requêtes HTTP entières au niveau du noyau. Quand une requête
74 entière a été reçue, le noyau l'envoie au serveur. Voir la page de
76 href="http://www.freebsd.org/cgi/man.cgi?query=accf_http&
77 sektion=9">accf_http(9)</a> pour plus de détails. Comme les requêtes
78 HTTPS sont chiffrées, celles-ci n'autorisent que le filtre <a
79 href="http://www.freebsd.org/cgi/man.cgi?query=accf_data&
80 sektion=9">accf_data(9)</a>.</p>
82 <p>Sous Linux, les valeurs par défaut sont :</p>
83 <highlight language="config">
84 AcceptFilter http data
85 AcceptFilter https data
88 <p>Le filtre <code>TCP_DEFER_ACCEPT</code> de Linux ne supporte pas
89 la mise en tampon des requêtes http. Toute valeur autre que
90 <code>none</code> active le filtre <code>TCP_DEFER_ACCEPT</code>
91 pour ce protocole. Pour plus de détails, voir la page de
93 href="http://homepages.cwi.nl/~aeb/linux/man2html/man7/
94 tcp.7.html">tcp(7)</a>.</p>
96 <p>Sous Windows, les valeurs par défaut sont :</p>
97 <highlight language="config">
98 AcceptFilter http data
99 AcceptFilter https data
102 <p>Le module MPM pour Windows mpm_winnt utilise la directive
103 AcceptFilter comme commutateur de l'API AcceptEx(), et ne supporte
104 pas la mise en tampon du protocole http. Deux valeurs utilisent
105 l'API Windows AcceptEx() et vont recycler les sockets réseau entre
106 les connexions. <code>data</code> attend jusqu'à ce que les données
107 aient été transmises comme décrit plus haut, et le tampon de données
108 initiales ainsi que les adresses réseau finales sont tous extraits
109 grâce à une seule invocation d'AcceptEx(). <code>connect</code>
110 utilise l'API AcceptEx(), extrait aussi les adresses réseau finales,
111 mais à l'instar de <code>none</code>, la valeur <code>connect</code>
112 n'attend pas la transmission des données initiales.</p>
114 <p>Sous Windows, <code>none</code> utilise accept() au lieu
115 d'AcceptEx(), et ne recycle pas les sockets entre les connexions.
116 Ceci s'avère utile pour les interfaces réseau dont le pilote est
117 défectueux, ainsi que pour certains fournisseurs de réseau comme les
118 pilotes vpn, ou les filtres anti-spam, anti-virus ou
122 <seealso><directive module="core">Protocol</directive></seealso>
126 <name>AcceptPathInfo</name>
127 <description>Les ressources acceptent des informations sous forme d'un
128 nom de chemin en fin de requête.</description>
129 <syntax>AcceptPathInfo On|Off|Default</syntax>
130 <default>AcceptPathInfo Default</default>
131 <contextlist><context>server config</context>
132 <context>virtual host</context><context>directory</context>
133 <context>.htaccess</context></contextlist>
134 <override>FileInfo</override>
138 <p>Cette directive permet de définir si les requêtes contenant des
139 informations sous forme d'un nom de chemin suivant le nom d'un
140 fichier réel (ou un fichier qui n'existe pas dans un répertoire qui
141 existe) doivent être acceptées ou rejetées. Les scripts peuvent
142 accéder à cette information via la variable d'environnement
143 <code>PATH_INFO</code>.</p>
145 <p>Supposons par exemple que <code>/test/</code> pointe vers un
146 répertoire qui ne contient que le fichier <code>here.html</code>.
147 Les requêtes pour <code>/test/here.html/more</code> et
148 <code>/test/nothere.html/more</code> vont affecter la valeur
149 <code>/more</code> à la variable d'environnement
150 <code>PATH_INFO</code>.</p>
152 <p>L'argument de la directive <directive>AcceptPathInfo</directive>
153 possède trois valeurs possibles :</p>
155 <dt><code>Off</code></dt><dd>Une requête ne sera acceptée que si
156 elle correspond à un chemin qui existe. Par conséquent, une requête
157 contenant une information de chemin après le nom de fichier réel
158 comme <code>/test/here.html/more</code> dans l'exemple ci-dessus
159 renverra une erreur "404 NOT FOUND".</dd>
161 <dt><code>On</code></dt><dd>Une requête sera acceptée si la partie
162 principale du chemin correspond à un fichier existant. Dans
163 l'exemple ci-dessus <code>/test/here.html/more</code>, la requête
164 sera acceptée si <code>/test/here.html</code> correspond à un nom de
167 <dt><code>Default</code></dt><dd>Le traitement des requêtes est
169 href="../handler.html">gestionnaire</a> responsable de la requête.
170 Le gestionnaire de base pour les fichiers normaux rejette par défaut
171 les requêtes avec <code>PATH_INFO</code>. Les gestionnaires qui
172 servent des scripts, comme<a
173 href="mod_cgi.html">cgi-script</a> et <a
174 href="mod_isapi.html">isapi-handler</a>, acceptent en général par
175 défaut les requêtes avec <code>PATH_INFO</code>.</dd>
178 <p>Le but premier de la directive <code>AcceptPathInfo</code> est de
179 vous permettre de remplacer le choix du gestionnaire d'accepter ou
180 de rejeter <code>PATH_INFO</code>. Ce remplacement est nécessaire
181 par exemple, lorsque vous utilisez un <a
182 href="../filter.html">filtre</a>, comme <a
183 href="mod_include.html">INCLUDES</a>, pour générer un contenu basé
184 sur <code>PATH_INFO</code>. Le gestionnaire de base va en général
185 rejeter la requête, et vous pouvez utiliser la configuration
186 suivante pour utiliser un tel script :</p>
187 <highlight language="config">
188 <Files "mypaths.shtml">
190 SetOutputFilter INCLUDES
200 <name>AccessFileName</name>
201 <description>Nom du fichier de configuration distribué</description>
202 <syntax>AccessFileName <var>nom-du-fichier</var>
203 [<var>nom-du-fichier</var>] ...</syntax>
204 <default>AccessFileName .htaccess</default>
205 <contextlist><context>server config</context><context>virtual
210 <p>Au cours du traitement d'une requête, le serveur recherche le
211 premier fichier de configuration existant à partir de la liste
212 de noms dans chaque répertoire composant le chemin du document, à
213 partir du moment où les fichiers de configuration distribués sont <a
214 href="#allowoverride">activés pour ce répertoire</a>. Par exemple
217 <highlight language="config">AccessFileName .acl</highlight>
219 <p>avant de renvoyer le document
220 <code>/usr/local/web/index.html</code>, le serveur va rechercher les
221 fichiers <code>/.acl</code>, <code>/usr/.acl</code>,
222 <code>/usr/local/.acl</code> et <code>/usr/local/web/.acl</code>
223 pour y lire d'éventuelles directives, à moins quelles n'aient été
226 <highlight language="config">
227 <Directory "/">
232 <seealso><directive module="core">AllowOverride</directive></seealso>
233 <seealso><a href="../configuring.html">Fichiers de configuration</a></seealso>
234 <seealso><a href="../howto/htaccess.html">Fichiers .htaccess</a></seealso>
238 <name>AddDefaultCharset</name>
239 <description>Paramètre jeu de caractères par défaut à ajouter quand le
240 type de contenu d'une réponse est <code>text/plain</code> ou
241 <code>text/html</code></description>
242 <syntax>AddDefaultCharset On|Off|<var>jeu de caractères</var></syntax>
243 <default>AddDefaultCharset Off</default>
244 <contextlist><context>server config</context>
245 <context>virtual host</context><context>directory</context>
246 <context>.htaccess</context></contextlist>
247 <override>FileInfo</override>
250 <p>Cette directive spécifie une valeur par défaut pour le paramètre
251 jeu de caractères du type de média (le nom d'un codage de
252 caractères) à ajouter à une réponse, si et seulement si le type de
253 contenu de la réponse est soit <code>text/plain</code>, soit
254 <code>text/html</code>. Ceci va remplacer
255 tout jeu de caractères spécifié dans le corps de la réponse via un
256 élément <code>META</code>, bien que cet effet dépende en fait
257 souvent de la configuration du client de l'utilisateur. La
258 définition de <code>AddDefaultCharset Off</code> désactive cette
259 fonctionnalité. <code>AddDefaultCharset On</code> ajoute un jeu de
260 caractères par défaut de <code>iso-8859-1</code>. Toute autre valeur
261 peut être définie via le paramètre <var>jeu de caractères</var>, qui
262 doit appartenir à la liste des <a
263 href="http://www.iana.org/assignments/character-sets">valeurs de
264 jeux de caractères enregistrés par l'IANA</a> à utiliser dans les
265 types de média Internet (types MIME).
268 <highlight language="config">AddDefaultCharset utf-8</highlight>
270 <p>La directive <directive>AddDefaultCharset</directive> ne doit
271 être utilisée que lorsque toutes les ressources textes auxquelles
272 elle s'applique possèdent le jeu de caractère spécifié, et qu'il est
273 trop contraignant de définir leur jeu de caractères
274 individuellement. Un exemple de ce type est l'ajout du paramètre jeu
275 de caractères aux ressources comportant un contenu généré, comme les
276 scripts CGI hérités qui peuvent être vulnérables à des attaques de
277 type cross-site scripting à cause des données utilisateurs incluses
278 dans leur sortie. Notez cependant qu'une meilleur solution consiste
279 à corriger (ou supprimer) ces scripts, car la définition d'un jeu de
280 caractères par défaut ne protège pas les utilisateurs qui ont activé
281 la fonctionnalité "Détection automatique de l'encodage des
282 caractères" dans leur navigateur.</p>
284 <seealso><directive module="mod_mime">AddCharset</directive></seealso>
288 <name>AllowEncodedSlashes</name>
289 <description>Détermine si les séparateurs de chemin encodés sont
290 autorisés à transiter dans les URLs tels quels</description>
291 <syntax>AllowEncodedSlashes On|Off|NoDecode</syntax>
292 <default>AllowEncodedSlashes Off</default>
293 <contextlist><context>server config</context><context>virtual
296 <compatibility>L'option NoDecode est disponible depuis la version
297 2.3.12.</compatibility>
300 <p>La directive <directive>AllowEncodedSlashes</directive> permet
301 l'utilisation des URLs contenant des séparateurs de chemin
302 encodés dans la partie chemin
303 (<code>%2F</code> pour <code>/</code> et même <code>%5C</code> pour
304 <code>\</code> sur les systèmes concernés).</p>
306 <p>Avec la valeur par défaut, <code>Off</code>, de telles URLs sont
307 refusées et provoquent le renvoi d'une erreur 404 (Not found).</p>
309 <p>Avec la valeur <code>On</code>, ces URLs sont acceptées, et les
310 slashes encodés sont décodés comme tout autre caractère codé.</p>
312 <p>Avec la valeur <code>NoDecode</code>, ces URLs sont acceptées,
313 mais les slashes codés ne sont pas décodés et laissés dans leur état
316 <p>Définir <directive>AllowEncodedSlashes</directive> à
317 <code>On</code> est surtout utile en association avec
318 <code>PATH_INFO</code>.</p>
320 <note><title>Note</title>
321 <p>Si le codage des slashes dans la partie chemin est nécessaire,
322 l'utilisation de l'option <code>NoDecode</code> est fortement
323 recommandée par mesure de sécurité. Permettre le décodage des
324 slashes pourrait éventuellement induire l'autorisation de chemins
328 <seealso><directive module="core">AcceptPathInfo</directive></seealso>
332 <name>AllowOverride</name>
333 <description>Types de directives autorisées dans les fichiers
334 <code>.htaccess</code></description>
335 <syntax>AllowOverride All|None|<var>type directive</var>
336 [<var>type directive</var>] ...</syntax>
337 <default>AllowOverride None à partir de la version 2.3.9, AllowOverride
338 All pour les versions antérieures</default>
339 <contextlist><context>directory</context></contextlist>
342 <p>Lorsque le serveur trouve un fichier <code>.htaccess</code> (dont
343 le nom est défini par la directive <directive
344 module="core">AccessFileName</directive>), il doit savoir lesquelles
345 des directives placées dans ce fichier sont autorisées à modifier la
346 configuration préexistante.</p>
348 <note><title>Valable seulement dans les sections
349 <Directory></title>
350 La directive <directive>AllowOverride</directive> ne peut être
351 utilisée que dans les sections <directive type="section"
352 module="core">Directory</directive> définies sans expressions
353 rationnelles, et non dans les sections <directive
354 type="section" module="core">Location</directive>, <directive
355 module="core" type="section">DirectoryMatch</directive> ou
356 <directive type="section" module="core">Files</directive>.
359 <p>Lorsque cette directive et la directive <directive
360 module="core">AllowOverrideList</directive> sont définies à <code>None</code>, les
361 fichiers <a href="#accessfilename">.htaccess</a> sont totalement
362 ignorés. Dans ce cas, le serveur n'essaiera même pas de lire les
363 fichiers <code>.htaccess</code> du système de fichiers.</p>
365 <p>Lorsque cette directive est définie à <code>All</code>, toute
366 directive valable dans le <a
367 href="directive-dict.html#Context">Contexte</a> .htaccess sera
368 autorisée dans les fichiers <code>.htaccess</code>.</p>
370 <p>L'argument <var>type directive</var> peut contenir les
371 groupements de directives suivants :</p>
378 Permet l'utilisation des directives d'autorisation (<directive
379 module="mod_authz_dbm">AuthDBMGroupFile</directive>,
380 <directive module="mod_authn_dbm">AuthDBMUserFile</directive>,
381 <directive module="mod_authz_groupfile">AuthGroupFile</directive>,
382 <directive module="mod_authn_core">AuthName</directive>,
383 <directive module="mod_authn_core">AuthType</directive>, <directive
384 module="mod_authn_file">AuthUserFile</directive>, <directive
385 module="mod_authz_core">Require</directive>, <em>etc...</em>).</dd>
390 Permet l'utilisation des directives qui contrôlent les types de
391 documents (directives <directive
392 module="core">ErrorDocument</directive>, <directive
393 module="core">ForceType</directive>, <directive
394 module="mod_negotiation">LanguagePriority</directive>,
395 <directive module="core">SetHandler</directive>, <directive
396 module="core">SetInputFilter</directive>, <directive
397 module="core">SetOutputFilter</directive>, et directives du
398 module <module>mod_mime</module> Add* et Remove*), des metadonnées
399 des documents (<directive
400 module="mod_headers">Header</directive>, <directive
401 module="mod_headers">RequestHeader</directive>, <directive
402 module="mod_setenvif">SetEnvIf</directive>, <directive
403 module="mod_setenvif">SetEnvIfNoCase</directive>, <directive
404 module="mod_setenvif">BrowserMatch</directive>, <directive
405 module="mod_usertrack">CookieExpires</directive>, <directive
406 module="mod_usertrack">CookieDomain</directive>, <directive
407 module="mod_usertrack">CookieStyle</directive>, <directive
408 module="mod_usertrack">CookieTracking</directive>, <directive
409 module="mod_usertrack">CookieName</directive>), des directives du
410 module <module>mod_rewrite</module> directives (<directive
411 module="mod_rewrite">RewriteEngine</directive>, <directive
412 module="mod_rewrite">RewriteOptions</directive>, <directive
413 module="mod_rewrite">RewriteBase</directive>, <directive
414 module="mod_rewrite">RewriteCond</directive>, <directive
415 module="mod_rewrite">RewriteRule</directive>), des directives du
416 module <module>mod_alias</module> directives (<directive
417 module="mod_alias">Redirect</directive>, <directive
418 module="mod_alias">RedirectTemp</directive>, <directive
419 module="mod_alias">RedirectPermanent</directive>, <directive
420 module="mod_alias">RedirectMatch</directive>), et de la directive
421 <directive module="mod_actions">Action</directive> du module
422 <module>mod_actions</module>.
428 Permet l'utilisation des directives qui contrôlent l'indexation
429 des répertoires (<directive
430 module="mod_autoindex">AddDescription</directive>,
431 <directive module="mod_autoindex">AddIcon</directive>, <directive
432 module="mod_autoindex">AddIconByEncoding</directive>,
433 <directive module="mod_autoindex">AddIconByType</directive>,
434 <directive module="mod_autoindex">DefaultIcon</directive>, <directive
435 module="mod_dir">DirectoryIndex</directive>, <a
436 href="mod_autoindex.html#indexoptions.fancyindexing"><code>FancyIndexing</code></a>,
438 module="mod_autoindex">HeaderName</directive>, <directive
439 module="mod_autoindex">IndexIgnore</directive>, <directive
440 module="mod_autoindex">IndexOptions</directive>, <directive
441 module="mod_autoindex">ReadmeName</directive>,
442 <em>etc...</em>).</dd>
447 Permet l'utilisation des directives contrôlant l'accès au serveur
449 module="mod_access_compat">Allow</directive>, <directive
450 module="mod_access_compat">Deny</directive> et <directive
451 module="mod_access_compat">Order</directive>).</dd>
453 <dt>Nonfatal=[Override|Unknown|All]</dt>
456 Permet d'utiliser l'option AllowOverride pour rendre les erreurs
457 de syntaxe non fatales dans les fichiers .htaccess : au lieu de
458 causer une Internal Server Error, les directives non autorisées ou
459 non reconnues seront ignorées et un avertissement enregistré dans
462 <li><strong>Nonfatal=Override</strong> rend les directives
463 interdite par AllowOverride non fatales.</li>
464 <li><strong>Nonfatal=Unknown</strong> rend les directives
465 inconnues non fatales. Sont concernées les erreurs de frappe
466 et les directives implémentées par un module non chargé.</li>
467 <li><strong>Nonfatal=All</strong> rend toutes les directives
468 précédentes non fatales.</li>
470 <p>Notez qu'une erreur de syntaxe dans une directive valide
471 causera toujours une internal server error.</p>
472 <note type="warning"><title>Sécurité</title>
473 Les erreurs non fatales peuvent être à l'origine de problèmes
474 de sécurité pour les utilisateurs de fichiers .htaccess. Par
475 exemple, si AllowOverride interdit AuthConfig, toute
476 configuration utilisateur destinée à restreindre l'accès à un
477 site ne sera pas prise en compte.
481 <dt>Options[=<var>Option</var>,...]</dt>
484 Permet l'utilisation des directives contrôlant les fonctionnalités
485 spécifiques d'un répertoire (<directive
486 module="core">Options</directive> et <directive
487 module="mod_include">XBitHack</directive>). "Options" doit être
488 suivi d'un signe "égal", puis d'une liste d'options séparées par des
489 virgules (pas d'espaces) ; ces options doivent être définies à
490 l'aide de la commande <directive
491 module="core">Options</directive>.
493 <note><title>Désactivation implicite des options</title>
494 <p>Bien que la liste des options disponibles dans les fichiers
495 .htaccess puisse être limitée par cette directive, tant qu'un
496 directive <directive module="core">Options</directive> est
497 autorisée, toute autre option héritée peut être désactivée en
498 utilisant la syntaxe non-relative. En d'autres termes, ce
499 mécanisme ne peut pas forcer une option spécifique à rester
500 <em>activée</em> tout en permettant à toute autre option d'être
505 AllowOverride Options=Indexes,MultiViews
513 <highlight language="config">AllowOverride AuthConfig Indexes</highlight>
515 <p>Dans l'exemple ci-dessus, toutes les directives qui ne font
516 partie ni du groupe <code>AuthConfig</code>, ni du groupe
517 <code>Indexes</code>, provoquent une erreur "internal
520 <note><p>Pour des raisons de sécurité et de performance, ne
521 définissez pas <code>AllowOverride</code> à autre chose que
522 <code>None</code> dans votre bloc <code><Directory "/"></code>.
523 Recherchez plutôt (ou créez) le bloc <code><Directory></code>
524 qui se réfère au répertoire où vous allez précisément placer un
525 fichier <code>.htaccess</code>.</p>
528 <seealso><directive module="core">AccessFileName</directive></seealso>
529 <seealso><directive module="core">AllowOverrideList</directive></seealso>
530 <seealso><a href="../configuring.html">Fichiers de configuration</a></seealso>
531 <seealso><a href="../howto/htaccess.html">Fichiers .htaccess</a></seealso>
535 <name>AllowOverrideList</name>
536 <description>Directives autorisées dans les fichiers <code>.htaccess</code></description>
537 <syntax>AllowOverrideList None|<var>directive</var>
538 [<var>directive-type</var>] ...</syntax>
539 <default>AllowOverrideList None</default>
540 <contextlist><context>directory</context></contextlist>
543 <p>Lorsque le serveur trouve un fichier <code>.htaccess</code>
544 (comme spécifié par la directive <directive
545 module="core">AccessFileName</directive>), il doit savoir lesquelles
546 des directives déclarées dans ce fichier peuvent remplacer des
547 directives des fichiers de configuration du serveur.</p>
549 <note><title>Seulement disponible dans les sections <Directory></title>
550 La directive <directive>AllowOverrideList</directive> n'est
551 disponible que dans les sections <directive type="section"
552 module="core">Directory</directive> spécifiées sans expressions
556 <p>Lorsque cette directive et la directive <directive
557 module="core">AllowOverride</directive> sont définies à
558 <code>None</code>, les fichiers <a
559 href="#accessfilename">.htaccess</a> sont totalement ignorés. Dans
560 ce cas, le serveur ne cherchera même pas à lire des fichiers
561 <code>.htaccess</code> dans le système de fichiers.</p>
565 <highlight language="config">
567 AllowOverrideList Redirect RedirectMatch
570 <p>Dans l'exemple ci-dessus, seules les directives
571 <code>Redirect</code> et <code>RedirectMatch</code> sont autorisées.
572 Toutes les autres provoqueront une erreur interne du serveur.</p>
576 <highlight language="config">
577 AllowOverride AuthConfig
578 AllowOverrideList CookieTracking CookieName
581 <p>Dans l'exemple ci-dessus, la directive <directive
582 module="core">AllowOverride</directive> autorise les directives du
583 groupement <code>AuthConfig</code>, et
584 <directive>AllowOverrideList</directive> n'autorise que deux
585 directives du groupement <code>FileInfo</code>. Toutes les autres
586 provoqueront une erreur interne du serveur.</p>
589 <seealso><directive module="core">AccessFileName</directive></seealso>
590 <seealso><directive module="core">AllowOverride</directive></seealso>
591 <seealso><a href="../configuring.html">Fichiers de configuration</a></seealso>
592 <seealso><a href="../howto/htaccess.html">Fichiers .htaccess</a></seealso>
596 <name>CGIMapExtension</name>
597 <description>Technique permettant de localiser l'interpréteur des
598 scripts CGI</description>
599 <syntax>CGIMapExtension <var>chemin CGI</var> <var>.extension</var></syntax>
600 <contextlist><context>directory</context><context>.htaccess</context>
602 <override>FileInfo</override>
603 <compatibility>NetWare uniquement</compatibility>
606 <p>Cette directive permet de contrôler la manière dont Apache httpd trouve
607 l'interpréteur servant à exécuter les scripts CGI. Par exemple, avec
608 la définition <code>CGIMapExtension sys:\foo.nlm .foo</code>, tous
609 les fichiers scripts CGI possédant une extension <code>.foo</code>
610 seront passés à l'interpréteur FOO.</p>
615 <name>CGIPassAuth</name>
616 <description>Active la transmission d'en-têtes d'autorisation HTTP aux scripts en
617 tant que variables CGI</description>
618 <syntax>CGIPassAuth On|Off</syntax>
619 <default>CGIPassAuth Off</default>
620 <contextlist><context>directory</context><context>.htaccess</context>
622 <override>AuthConfig</override>
623 <compatibility>Disponible à partir de la version 2.4.13 du serveur HTTP
624 Apache</compatibility>
627 <p>La directive <directive>CGIPassAuth</directive> permet aux
628 scripts d'accéder aux en-têtes d'autorisation HTTP tels que
629 <code>Authorization</code>, en-tête nécessaire aux scripts qui
630 implémente une authentification HTTP de base. Normalement, ces
631 en-têtes HTTP sont invisibles pour les scripts car ils leurs
632 permettraient de voir les identifiants et mots de passe
633 utilisés pour accéder au serveur lorsque l'authentification HTTP de
634 base est activée au niveau du serveur web. Cette directive doit être
635 définie à "On" lorsque des scripts sont autorisés à implémenter une
636 authentification HTTP de base.</p>
638 <p>Cette directive constitue une alternative à l'option de
639 compilation <code>SECURITY_HOLE_PASS_AUTHORIZATION</code> qui était
640 déjà disponible dans les versions précédentes du serveur HTTP
643 <p>Cette option est prise en compte par tout module qui utilise
644 <code>ap_add_common_vars()</code>, comme <module>mod_cgi</module>,
645 <module>mod_cgid</module>, <module>mod_proxy_fcgi</module>,
646 <module>mod_proxy_scgi</module>, etc... En particulier, elle affecte
647 les modules qui ne traitent pas à proprement parler les requêtes,
648 mais utilisent quand-même cette API, comme
649 <module>mod_include</module> ou <module>mod_ext_filter</module>. Les
650 modules tiers qui n'utilisent pas <code>ap_add_common_vars()</code>
651 peuvent aussi choisir de prendre en compte cette option.</p>
657 <description>Contrôle la manière dont certaines variables CGI sont définies</description>
658 <syntax>CGIVar <var>variable</var> <var>rule</var></syntax>
659 <contextlist><context>directory</context><context>.htaccess</context>
661 <override>FileInfo</override>
662 <compatibility>Disponible à partir de la version 2.4.21 du serveur HTTP Apache</compatibility>
665 <p>Cette directive permet de contrôler la manière dont certaines variables CGI
668 <p>règles <strong>REQUEST_URI</strong> :</p>
670 <dt><code>original-uri</code> (valeur par défaut)</dt>
671 <dd>La valeur est extraite de la requête originale, et ne tient pas compte
672 des redirections internes ou des sous-requêtes qui pourraient modifier la
673 ressource demandée.</dd>
674 <dt><code>current-uri</code></dt>
675 <dd>La valeur reflète la ressource en cours de traitement ; elle peut être
676 différente de la ressource demandée dans la requête initiale du client suite à
677 d'éventuelles redirections internes ou sous-requêtes.</dd>
683 <name>ContentDigest</name>
684 <description>Active la génération d'un en-tête <code>Content-MD5</code>
685 dans la réponse HTTP</description>
686 <syntax>ContentDigest On|Off</syntax>
687 <default>ContentDigest Off</default>
688 <contextlist><context>server config</context><context>virtual
690 <context>directory</context><context>.htaccess</context>
692 <override>Options</override>
693 <status>Expérimental</status>
696 <p>Cette directive active la génération d'un en-tête
697 <code>Content-MD5</code> selon les définitions des RFC 1864 et
700 <p>MD5 est un algorithme permettant de générer un condensé (parfois
701 appelé "empreinte") à partir de données d'une taille aléatoire ; le
702 degré de précision est tel que la moindre altération des données
703 d'origine entraîne une altération de l'empreinte.</p>
705 <p>L'en-tête <code>Content-MD5</code> permet de vérifier
706 l'intégrité de la réponse HTTP dans son ensemble. Un serveur mandataire
707 ou un client peut utiliser cet en-tête pour rechercher une
708 éventuelle modification accidentelle de la réponse au cours de sa
709 transmission. Exemple d'en-tête :</p>
712 Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
715 <p>Notez que des problèmes de performances peuvent affecter votre
716 serveur, car l'empreinte est générée pour chaque requête (il n'y a
717 pas de mise en cache).</p>
719 <p>L'en-tête <code>Content-MD5</code> n'est envoyé qu'avec les
720 documents servis par le module <module>core</module>, à l'exclusion
721 de tout autre module. Ainsi, les documents SSI, les sorties de
722 scripts CGI, et les réponses à des requêtes partielles (byte range)
723 ne comportent pas cet en-tête.</p>
728 <name>DefaultRuntimeDir</name>
729 <description>Répertoire de base des fichiers créés au cours de l'exécution du serveur</description>
730 <syntax>DefaultRuntimeDir <var>chemin-répertoire</var></syntax>
731 <default>DefaultRuntimeDir DEFAULT_REL_RUNTIMEDIR (logs/)</default>
732 <contextlist><context>server config</context></contextlist>
733 <compatibility>Disponible depuis la version 2.4.2 du serveur HTTP Apache</compatibility>
736 <p>La directive <directive>DefaultRuntimeDir</directive> permet de
737 définir le répertoire dans lequel le serveur va créer les différents
738 fichiers relatifs à son exécution (mémoire partagée, verrous,
739 etc...). Si le chemin spécifié est relatif, le chemin absolu sera
740 généré relativement à la valeur de la directive
741 <directive>ServerRoot</directive></p>
743 <p><strong>Example</strong></p>
744 <highlight language="config">
745 DefaultRuntimeDir scratch/
748 <p>La valeur par défaut de la directive
749 <directive>DefaultRuntimeDir</directive> peut être modifiée en
750 changeant la valeur de la macro <code>DEFAULT_REL_RUNTIMEDIR</code>
751 définie à la compilation.</p>
753 <p>Note: si la valeur de <directive>ServerRoot</directive> n'a pas
754 été spécifiée avant d'utiliser cette directive, c'est la valeur par
755 défaut de <directive>ServerRoot</directive> qui sera utilisée pour
756 définir la base du répertoire.</p>
760 href="../misc/security_tips.html#serverroot">conseils à propos de
761 sésurité</a> pour plus d'informations en vue de définir correctement les
762 permissions sur la racine du serveur <directive>ServerRoot</directive></seealso>
766 <name>DefaultType</name>
767 <description>Les seuls effets de cette directive sont des émissions
768 d'avertissements si sa valeur est différente de <code>none</code>. Dans
769 les versions précédentes, DefaultType permettait de spécifier un type de
770 média à assigner par défaut au contenu d'une réponse pour lequel aucun
771 autre type de média n'avait été trouvé.
773 <syntax>DefaultType <var>type média|none</var></syntax>
774 <default>DefaultType none</default>
775 <contextlist><context>server config</context><context>virtual
777 <context>directory</context><context>.htaccess</context>
779 <override>FileInfo</override>
780 <compatibility>L'argument <code>none</code> est disponible dans les
781 versions d'Apache httpd 2.2.7 et supérieures. Tous les autres choix sont
782 DESACTIVÉS à partir des version 2.3.x.</compatibility>
785 <p>Cette directive a été désactivée. Pour la compatibilité
786 ascendante avec les anciens fichiers de configuration, elle peut
787 être spécifiée avec la valeur <code>none</code>, c'est à dire sans
788 type de médium par défaut. Par exemple :</p>
790 <highlight language="config">DefaultType None</highlight>
792 <p><code>DefaultType None</code> n'est disponible que dans les
793 versions d'Apache 2.2.7 et supérieures.</p>
795 <p>Utilisez le fichier de configuration mime.types et la directive
796 <directive module="mod_mime">AddType</directive> pour configurer
797 l'assignement d'un type de médium via les extensions de fichiers, ou
798 la directive <directive module="core">ForceType</directive> pour
799 attribuer un type de médium à des ressources spécifiques. Dans le
800 cas contraire, le serveur enverra sa réponse sans champ d'en-tête
801 Content-Type, et le destinataire devra déterminer lui-même le type
808 <description>Permet de définir une variable</description>
809 <syntax>Define <var>nom-paramètre</var> [<var>valeur-paramètre</var>]</syntax>
810 <contextlist><context>server config</context><context>virtual host</context>
811 <context>directory</context></contextlist>
814 <p>Avec un seul paramètre, l'effet de la directive
815 <directive>Define</directive> est identique à celui de l'argument
816 <code>-D</code> du programme <program>httpd</program>. Il permet de
817 modifier le comportement des sections <directive module="core"
818 type="section">IfDefine</directive> sans avoir à ajouter d'argument
819 <code>-D</code> au sein des scripts de démarrage.</p>
821 <p>De plus, le second paramètre permet d'affecter une valeur à la
822 variable définie par le premier. Cette variable peut être référencée
823 dans le fichier de configuration via la syntaxe <code>${VAR}</code>.
824 La portée de la variable est toujours globale, et n'est jamais
825 limitée à la section de configuration courante.</p>
827 <highlight language="config">
828 <IfDefine TEST>
829 Define servername test.example.com
831 <IfDefine !TEST>
832 Define servername www.example.com
836 DocumentRoot "/var/www/${servername}/htdocs"
839 <p>Le caractère ":" est interdit dans les noms de variables afin
840 d'éviter les conflits avec la syntaxe de la directive <directive
841 module="mod_rewrite">RewriteMap</directive>.</p>
845 <directivesynopsis type="section">
846 <name>Directory</name>
847 <description>Regroupe un ensemble de directives qui ne s'appliquent
848 qu'au répertoire concerné du système de fichiers, à ses
849 sous-répertoires, et à leur contenu.</description>
850 <syntax><Directory <var>chemin répertoire</var>>
851 ... </Directory></syntax>
852 <contextlist><context>server config</context><context>virtual
857 <p>Les balises <directive type="section">Directory</directive> et
858 <code></Directory></code> permettent de regrouper un ensemble
859 de directives qui ne s'appliquent qu'au répertoire précisé,
860 à ses sous-répertoires, et aux fichiers situés dans ces
861 sous-répertoires. Toute directive
862 autorisée dans un contexte de répertoire peut être utilisée.
863 <var>chemin répertoire</var> est soit le chemin absolu d'un
864 répertoire, soit une chaîne de caractères avec caractères génériques
865 utilisant la comparaison Unix de style shell. Dans une chaîne de
866 caractères avec caractères génériques, <code>?</code> correspond à
867 un caractère quelconque, et <code>*</code> à toute chaîne de
868 caractères. Les intervalles de caractères <code>[]</code> sont aussi
869 autorisés. Aucun caractère générique ne peut remplacer le caractère
870 `/', si bien que l'expression <code><Directory
871 "/*/public_html"></code> ne conviendra pas pour le chemin
872 * <code>/home/user/public_html</code>, alors que <code><Directory
873 "/home/*/public_html"></code> conviendra. Exemple :</p>
875 <highlight language="config">
876 <Directory "/usr/local/httpd/htdocs">
877 Options Indexes FollowSymLinks
881 <p>Les chemins de répertoires contenant des espaces <em>doivent</em> être
882 entourés de guillemets afin d'empêcher l'interprétation de ces
883 espaces comme fins d'arguments.</p>
886 <p>Soyez prudent avec l'argument <var>chemin répertoire</var> : il
887 doit correspondre exactement au chemin du système de fichier
888 qu'Apache httpd utilise pour accéder aux fichiers. Les directives
889 comprises dans une section <code><Directory></code> ne
890 s'appliqueront pas aux fichiers du même répertoire auxquels on
891 aura accédé via un chemin différent, per exemple via un lien
895 <p> Les <glossary ref="regex">Expressions rationnelles</glossary>
896 peuvent aussi être utilisées en ajoutant le caractère
897 <code>~</code>. Par exemple :</p>
899 <highlight language="config">
900 <Directory ~ "^/www/[0-9]{3}">
905 <p>pourra correspondre à tout répertoire situé dans /www/ et dont le
906 nom se compose de trois chiffres.</p>
908 <p>Si plusieurs sections <directive
909 type="section">Directory</directive> (sans expression rationnelle)
910 correspondent au répertoire (ou à un de ses parents) qui contient le
911 document, les directives de la section <directive
912 type="section">Directory</directive> dont le chemin est le plus
913 court sont appliquées en premier, en s'intercalant avec les
914 directives des fichiers <a href="#accessfilename">.htaccess</a>. Par
917 <highlight language="config">
918 <Directory "/">
922 <Directory "/home">
923 AllowOverride FileInfo
927 <p>l'accès au document <code>/home/web/dir/doc.html</code> emprunte
928 le chemin suivant :</p>
931 <li>Aplication de la directive <code>AllowOverride None</code>
932 (qui désactive les fichiers <code>.htaccess</code>).</li>
934 <li>Application de la directive <code>AllowOverride
935 FileInfo</code> (pour le répertoire <code>/home</code>).</li>
937 <li>Application de toute directive <code>FileInfo</code> qui se
938 trouverait dans d'éventuels fichiers <code>/home/.htaccess</code>,
939 <code>/home/web/.htaccess</code> ou
940 <code>/home/web/dir/.htaccess</code>, dans cet ordre.</li>
943 <p>Les directives associées aux répertoires sous forme d'expressions
944 rationnelles ne sont prises en compte qu'une fois toutes les
945 directives des sections sans expressions rationnelles appliquées.
946 Alors, tous les répertoires avec expressions rationnelles sont
947 testés selon l'ordre dans lequel ils apparaissent dans le fichier de
948 configuration. Par exemple, avec</p>
950 <highlight language="config">
951 <Directory ~ "abc$">
952 # ... directives ici ...
956 <p>la section avec expression rationnelle ne sera prise en compte
957 qu'après les sections <directive
958 type="section">Directory</directive> sans expression rationnelle
959 et les fichiers <code>.htaccess</code>. Alors, l'expression
960 rationnelle conviendra pour <code>/home/abc/public_html/abc</code>
961 et la section <directive type="section">Directory</directive>
962 correspondante s'appliquera.</p>
964 <p><strong>Notez que la politique d'accès par défaut
965 dans les sections <code><Directory "/"></code> consiste à
966 autoriser tout accès sans restriction. Ceci signifie qu'Apache httpd va servir tout fichier
967 correspondant à une URL. Il est recommandé de modifier cette
968 situation à l'aide d'un bloc du style</strong></p>
970 <highlight language="config">
971 <Directory "/">
976 <p><strong>puis d'affiner la configuration pour les répertoires que vous
977 voulez rendre accessibles. Voir la page <a
978 href="../misc/security_tips.html">Conseils à propos de sécurité</a>
979 pour plus de détails.</strong></p>
981 <p>Les sections <directive type="section">Directory</directive> se situent
982 dans le fichier <code>httpd.conf</code>. Les directives <directive
983 type="section">Directory</directive> ne peuvent pas être imbriquées
984 et ne sont pas autorisées dans les sections <directive module="core"
985 type="section">Limit</directive> ou <directive module="core"
986 type="section">LimitExcept</directive>.</p>
988 <seealso><a href="../sections.html">Comment fonctionnent les sections
989 <Directory>, <Location> et <Files></a> pour des
990 explications à propos de la manière dont ces différentes sections se
991 combinent entre elles à la réception d'une requête</seealso>
994 <directivesynopsis type="section">
995 <name>DirectoryMatch</name>
996 <description>Regroupe des directives qui s'appliquent au contenu de répertoires
997 du système de fichiers correspondant à une expression rationnelle</description>
998 <syntax><DirectoryMatch <var>regex</var>>
999 ... </DirectoryMatch></syntax>
1000 <contextlist><context>server config
1001 </context><context>virtual host</context>
1005 <p>Les balises <directive type="section">DirectoryMatch</directive>
1006 et <code></DirectoryMatch></code> permettent de regrouper un
1007 ensemble de directives qui ne s'appliqueront qu'au répertoire
1008 précisé (et aux fichiers qu'il contient), comme pour la section <directive
1009 module="core" type="section">Directory</directive>. Cependant, le
1010 répertoire est précisé sous la forme d'une <glossary
1011 ref="regex">expression rationnelle</glossary>. Par exemple :</p>
1013 <highlight language="config">
1014 <DirectoryMatch "^/www/(.+/)?[0-9]{3}/">
1016 </DirectoryMatch>
1019 <p>convient pour les sous-répertoires de <code>/www/</code> dont
1020 le nom se compose de trois chiffres.</p>
1022 <note><title>Compatibilité</title>
1023 Avant la version 2.3.9, cette directive s'appliquait aussi aux
1024 sous-répertoires (comme la directive <directive module="core"
1025 type="section">Directory</directive>), et ne tenait pas compte du
1026 symbole de fin de ligne ($). Depuis la version 2.3.9, seuls les
1027 répertoires qui correspondent à l'expression sont affectés par les
1028 directives contenues dans la section.
1031 <note><title>slash de fin</title>
1032 Cette directive s'applique aux requêtes pour des répertoires avec
1033 ou sans slash de fin ; les expressions contenant un symbole de fin
1034 de ligne ($) doivent donc faire l'objet d'une attention
1038 <p>A partir de la version 2.4.8, les groupes nommés et les
1039 références arrières sont extraits et enregistrés dans
1040 l'environnement avec leur nom en majuscules et préfixé
1041 par "MATCH_". Ceci permet
1042 de référencer des URLs dans des <a href="../expr.html">expressions</a>
1043 ou au sein de modules comme <module>mod_rewrite</module>. Pour
1044 éviter toute confusion, les références arrières numérotées (non
1045 nommées) sont ignorées. Vous devez utiliser à la place des groupes
1048 <highlight language="config">
1049 <DirectoryMatch "^/var/www/combined/(?<sitename>[^/]+)">
1050 Require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
1051 </DirectoryMatch>
1055 <seealso><directive type="section" module="core">Directory</directive>
1056 pour une description de la manière dont les expressions rationnelles
1057 sont traitées en présence d'autres sections <directive
1058 type="section">Directory</directive> sans expressions rationnelles</seealso>
1060 href="../sections.html">Comment fonctionnent les sections
1061 <Directory>, <Location> et <Files></a> pour une
1062 explication à propos de la manière dont ces différentes sections se
1063 combinent entre elles à la réception d'une requête</seealso>
1064 </directivesynopsis>
1067 <name>DocumentRoot</name>
1068 <description>Racine principale de l'arborescence des documents visible
1069 depuis Internet</description>
1070 <syntax>DocumentRoot <var>chemin répertoire</var></syntax>
1071 <default>DocumentRoot "/usr/local/apache/htdocs"</default>
1072 <contextlist><context>server config</context><context>virtual
1077 <p>Cette directive permet de définir le répertoire à partir duquel
1078 <program>httpd</program> va servir les fichiers. S'il ne correspond
1079 pas à un <directive module="mod_alias">Alias</directive>, le chemin
1080 de l'URL sera ajouté par le serveur à la racine des documents afin
1081 de construire le chemin du document recherché. Exemple :</p>
1083 <highlight language="config">DocumentRoot "/usr/web"</highlight>
1085 <p>un accès à <code>http://my.example.com/index.html</code> se
1086 réfère alors à <code>/usr/web/index.html</code>. Si <var>chemin
1087 répertoire</var> n'est pas un chemin absolu, il est considéré comme
1088 relatif au chemin défini par la directive <directive
1089 module="core">ServerRoot</directive>.</p>
1091 <p>Le répertoire défini par la directive
1092 <directive>DocumentRoot</directive> ne doit pas comporter de slash
1095 <seealso><a href="../urlmapping.html#documentroot">Mise en
1096 correspondance des URLs avec le système de fichiers</a></seealso>
1097 </directivesynopsis>
1099 <directivesynopsis type="section">
1101 <description>Contient des directives qui ne s'appliquent que si la
1102 condition correspondant à la section <directive type="section"
1103 module="core">If</directive> ou <directive type="section"
1104 module="core">ElseIf</directive> précédente n'est pas satisfaite par la
1105 requête à l'exécution</description>
1106 <syntax><Else> ... </Else></syntax>
1107 <contextlist><context>server config</context><context>virtual host</context>
1108 <context>directory</context><context>.htaccess</context>
1110 <override>All</override>
1113 <p>La section <directive type="section">Else</directive> applique
1114 les directives qu'elle contient si et seulement si les conditions
1115 correspondant à la section <directive type="section">If</directive>
1116 ou <directive type="section">ElseIf</directive> immédiatement
1117 supérieure et dans la même portée n'ont pas été satisfaites. Par
1120 <highlight language="config">
1121 <If "-z req('Host')">
1129 <p>La condition de la section <directive
1130 type="section">If</directive> serait satisfaite pour les requêtes
1131 HTTP/1.0 sans en-tête <var>Host:</var>, alors que celle de la section
1132 <directive type="section">Else</directive> le serait pour les
1133 requêtes comportant un en-tête <var>Host:</var>.</p>
1136 <seealso><directive type="section" module="core">If</directive></seealso>
1137 <seealso><directive type="section" module="core">ElseIf</directive></seealso>
1138 <seealso><a href="../sections.html">Fonctionnement des sections <Directory>, <Location>,
1139 <Files></a> pour une explication de la manière dont ces
1140 différentes section se combinent entre elles lorsqu'une requête est
1141 reçue. Les directives <directive type="section">If</directive>,
1142 <directive type="section">ElseIf</directive>, et <directive
1143 type="section">Else</directive> s'appliquent en dernier.</seealso>
1144 </directivesynopsis>
1146 <directivesynopsis type="section">
1148 <description>Contient des directives qui ne s'appliquent que si la
1149 condition correspondante est satisfaite par une requête à l'exécution,
1150 alors que la condition correspondant à la section <directive
1151 type="section" module="core">If</directive> ou <directive
1152 type="section">ElseIf</directive> précédente ne l'était pas.</description>
1153 <syntax><ElseIf <var>expression</var>> ... </ElseIf></syntax>
1154 <contextlist><context>server config</context><context>virtual host</context>
1155 <context>directory</context><context>.htaccess</context>
1157 <override>All</override>
1160 <p>La section <directive type="section">ElseIf</directive> applique
1161 les directives qu'elle contient si et seulement si d'une part la
1162 condition correspondante est satisfaite, et d'autre part la condition
1163 correspondant à la section <directive type="section">If</directive>
1164 ou <directive type="section">ElseIf</directive> de la même portée ne
1165 l'est pas. Par exemple, dans :</p>
1167 <highlight language="config">
1168 <If "-R '10.1.0.0/16'">
1171 <ElseIf "-R '10.0.0.0/8'">
1179 <p>La condition correspondant à la section <directive
1180 type="section">ElseIf</directive> est satisfaite si l'adresse
1181 distante de la requête appartient au sous-réseau 10.0.0.0/8, mais
1182 pas si elle appartient au sous-réseau 10.1.0.0/16.</p>
1185 <seealso><a href="../expr.html">Les expressions dans le serveur HTTP
1186 Apache</a>, pour une référence complète et d'autres exemples.</seealso>
1187 <seealso><directive type="section" module="core">If</directive></seealso>
1188 <seealso><directive type="section" module="core">Else</directive></seealso>
1189 <seealso><a href="../sections.html">Fonctionnement des sections <Directory>, <Location>,
1190 <Files></a> pour une explication de la manière dont ces
1191 différentes section se combinent entre elles lorsqu'une requête est
1192 reçue. Les directives <directive type="section">If</directive>,
1193 <directive type="section">ElseIf</directive>, et <directive
1194 type="section">Else</directive> s'appliquent en dernier.</seealso>
1195 </directivesynopsis>
1198 <name>EnableMMAP</name>
1199 <description>Utilise la projection en mémoire (Memory-Mapping) pour
1200 lire les fichiers pendant qu'ils sont servis</description>
1201 <syntax>EnableMMAP On|Off</syntax>
1202 <default>EnableMMAP On</default>
1203 <contextlist><context>server config</context><context>virtual
1205 <context>directory</context><context>.htaccess</context>
1207 <override>FileInfo</override>
1210 <p>Cette directive définit si <program>httpd</program> peut utiliser
1211 la projection en mémoire (Memory-Mapping) quand il doit lire le contenu
1212 d'un fichier pendant qu'il est servi. Par défaut, lorsque le
1213 traitement d'une requête requiert l'accès aux données contenues dans
1214 un fichier -- par exemple, pour servir un fichier interprété par le
1215 serveur à l'aide de <module>mod_include</module> -- Apache httpd projette
1216 le fichier en mémoire si le système d'exploitation le permet.</p>
1218 <p>Cette projection en mémoire induit parfois une amélioration des
1219 performances. Sur certains systèmes cependant, il est préférable de
1220 désactiver la projection en mémoire afin d'éviter certains problèmes
1224 <li>Sur certains systèmes multi-processeurs, la projection en
1225 mémoire peut dégrader les performances du programme
1226 <program>httpd</program>.</li>
1227 <li>S'il fait l'objet d'une projection en mémoire par
1228 <program>httpd</program>, la suppression ou la troncature d'un
1229 fichier peut provoquer un crash de <program>httpd</program> avec une
1230 erreur de segmentation.</li>
1233 <p>Pour les configurations de serveur sujettes à ce genre de
1234 problème, il est préférable de désactiver la projection en mémoire
1235 des fichiers servis en spécifiant :</p>
1237 <highlight language="config">EnableMMAP Off</highlight>
1239 <p>Pour les montages NFS, cette fonctionnalité peut être
1240 explicitement désactivée pour les fichiers concernés en spécifiant
1243 <highlight language="config">
1244 <Directory "/path-to-nfs-files">
1249 </directivesynopsis>
1252 <name>EnableSendfile</name>
1253 <description>Utilise le support sendfile du noyau pour servir les
1254 fichiers aux clients</description>
1255 <syntax>EnableSendfile On|Off</syntax>
1256 <default>EnableSendfile Off</default>
1257 <contextlist><context>server config</context><context>virtual
1259 <context>directory</context><context>.htaccess</context>
1261 <override>FileInfo</override>
1262 <compatibility>Par défaut à Off depuis la version 2.3.9.</compatibility>
1265 <p>Cette directive définit si le programme <program>httpd</program>
1266 peut utiliser le support sendfile du noyau pour transmettre le
1267 contenu des fichiers aux clients. Par défaut, lorsque le traitement
1268 d'une requête ne requiert pas l'accès aux données contenues dans un
1269 fichier -- par exemple, pour la transmission d'un fichier statique
1270 -- Apache httpd utilise sendfile pour transmettre le contenu du fichier
1271 sans même lire ce dernier, si le système d'exploitation le
1274 <p>Ce mécanisme sendfile évite la séparation des opérations de
1275 lecture et d'envoi, ainsi que les réservations de tampons. sur
1276 certains systèmes cependant, ou sous certains systèmes de fichiers,
1277 il est préférable de désactiver cette fonctionnalité afin d'éviter
1278 certains problèmes opérationnels :</p>
1281 <li>Certains systèmes peuvent présenter un support sendfile
1282 défectueux que le système de compilation n'a pas détecté, en
1283 particulier si les exécutables ont été compilés sur une autre
1284 machine, puis copiés sur la première avec un support sendfile
1286 <li>Sous Linux, l'utilisation de sendfile induit des bogues lors de
1287 la récupération des paquets de vérification TCP (TCP-checksum) avec
1288 certaines cartes réseau lorsqu'on utilise IPv6.</li>
1289 <li>Sous Linux sur Itanium, <code>sendfile</code> peut s'avérer incapable de
1290 traiter les fichiers de plus de 2 Go.</li>
1291 <li>Avec un montage réseau de <directive
1292 module="core">DocumentRoot</directive> (par exemple NFS, SMB, CIFS,
1294 noyau peut s'avérer incapable de servir un fichier de ce montage
1295 réseau en passant par son propre cache.</li>
1298 <p>Pour les configurations de serveur non sujettes à ce genre de
1299 problème, vous pouvez activer cette fonctionnalité en
1302 <highlight language="config">EnableSendfile On</highlight>
1304 <p>Pour les montages réseau, cette fonctionnalité peut être
1305 explicitement désactivée pour les fichiers concernés en spécifiant
1308 <highlight language="config">
1309 <Directory "/path-to-nfs-files">
1313 <p>Veuillez noter que la configuration de la directive
1314 <directive>EnableSendfile</directive> dans un contexte de répertoire
1315 ou de fichier .htaccess n'est pas supportée par
1316 <module>mod_cache_disk</module>. Le module ne prend en compte la
1317 définition de <directive>EnableSendfile</directive> que dans un
1321 </directivesynopsis>
1325 <description>Interrompt la lecture de la configuration avec un message
1326 d'erreur personnalisé</description>
1327 <syntax>Error <var>message</var></syntax>
1328 <contextlist><context>server config</context><context>virtual host</context>
1329 <context>directory</context><context>.htaccess</context>
1331 <compatibility>à partir de la version 2.3.9</compatibility>
1334 <p>Si une erreur peut être détectée dans la configuration, souvent
1335 un module manquant, cette
1336 directive peut être utilisée pour générer un message d'erreur
1337 personnalisé, et interrompre la lecture de la configuration. </p>
1339 <highlight language="config">
1341 # vérification du chargement de mod_include
1342 <IfModule !include_module>
1343 Error "mod_include is required by mod_foo. Load it with LoadModule."
1346 # vérification de la définition de SSL ou (exclusif) NOSSL
1347 <IfDefine SSL>
1348 <IfDefine NOSSL>
1349 Error "Both SSL and NOSSL are defined. Define only one of them."
1352 <IfDefine !SSL>
1353 <IfDefine !NOSSL>
1354 Error "Either SSL or NOSSL must be defined."
1360 </directivesynopsis>
1363 <name>ErrorDocument</name>
1364 <description>Document que le serveur renvoie au client en cas
1365 d'erreur</description>
1366 <syntax>ErrorDocument <var>code erreur</var> <var>document</var></syntax>
1367 <contextlist><context>server config</context><context>virtual
1369 <context>directory</context><context>.htaccess</context>
1371 <override>FileInfo</override>
1374 <p>Apache httpd peut traiter les problèmes et les erreurs de quatre
1378 <li>afficher un simple message d'erreur au contenu fixe</li>
1380 <li>afficher un message personnalisé</li>
1382 <li>rediriger en interne vers un <var>chemin d'URL</var> local pour traiter
1383 le problème ou l'erreur</li>
1385 <li>rediriger vers une <var>URL</var> externe pour traiter
1386 le problème ou l'erreur</li>
1389 <p>La première option constitue le comportement par défaut; pour
1390 choisir une des trois autres options, il faut configurer Apache à
1391 l'aide de la directive <directive>ErrorDocument</directive>, suivie
1392 du code de la réponse HTTP et d'une URL ou d'un message. Apache
1393 httpd fournit parfois des informations supplémentaires à propos du
1394 problème ou de l'erreur.</p>
1396 <p>A partir de la version 2.4.13, il est possible d'utiliser la <a
1397 href="../expr.html">syntaxe des expressions</a> dans cette directive
1398 afin de générer des chaînes et URLs dynamiques.</p>
1400 <p>Les URLs peuvent commencer par un slash (/) pour les chemins web
1401 locaux (relatifs au répertoire défini par la directive <directive
1402 module="core">DocumentRoot</directive>), ou se présenter sous la
1403 forme d'une URL complète que le client pourra résoudre.
1404 Alternativement, un message à afficher par le navigateur pourra être
1405 fourni. Notez que la décision de considérer le paramètre comme URL,
1406 chemin ou message intervient avant toute interprètation
1407 d'expression. Exemples :</p>
1409 <highlight language="config">
1410 ErrorDocument 500 http://example.com/cgi-bin/server-error.cgi
1411 ErrorDocument 404 /errors/bad_urls.php
1412 ErrorDocument 401 /subscription_info.html
1413 ErrorDocument 403 "Sorry can't allow you access today"
1414 ErrorDocument 403 Forbidden!
1415 ErrorDocument 403 /errors/forbidden.py?referrer=%{escape:%{HTTP_REFERER}}
1418 <p>De plus, on peut spécifier la valeur spéciale <code>default</code>
1419 pour indiquer l'utilisation d'un simple message d'Apache httpd codé en
1420 dur. Bien que non nécessaire dans des circonstances normales, la
1421 spécification de la valeur <code>default</code> va permettre de
1422 rétablir l'utilisation du simple message d'Apache httpd codé en dur pour
1423 les configurations qui sans cela, hériteraient d'une directive
1424 <directive>ErrorDocument</directive> existante.</p>
1426 <highlight language="config">
1427 ErrorDocument 404 /cgi-bin/bad_urls.pl
1429 <Directory "/web/docs">
1430 ErrorDocument 404 default
1434 <p>Notez que lorsque vous spécifiez une directive
1435 <directive>ErrorDocument</directive> pointant vers une URL distante
1436 (c'est à dire tout ce qui commence par le préfixe http), le serveur
1438 envoyer une redirection au client afin de lui indiquer où trouver le
1439 document, même dans le cas où ce document se trouve sur le serveur
1440 local. Ceci a de nombreuses conséquences dont la plus importante
1441 réside dans le fait que le client ne recevra pas le code d'erreur
1442 original, mais au contraire un code de statut de redirection. Ceci
1443 peut en retour semer la confusion chez les robots web et divers
1444 clients qui tentent de déterminer la validité d'une URL en examinant
1445 le code de statut. De plus, si vous utilisez une URL distante avec
1446 <code>ErrorDocument 401</code>, le client ne saura pas qu'il doit
1447 demander un mot de passe à l'utilisateur car il ne recevra pas le
1448 code de statut 401. C'est pourquoi, <strong>si vous utilisez une
1449 directive <code>ErrorDocument 401</code>, elle devra faire référence
1450 à un document par le biais d'un chemin local.</strong></p>
1452 <p>Microsoft Internet Explorer (MSIE) ignore par défaut les messages
1453 d'erreur générés par le serveur lorsqu'ils sont trop courts et
1454 remplacent ses propres messages d'erreur "amicaux". Le seuil de
1455 taille varie en fonction du type d'erreur, mais en général, si la
1456 taille de votre message d'erreur est supérieure à 512 octets, il y a
1457 peu de chances pour que MSIE l'occulte, et il sera affiché par ce
1458 dernier. Vous trouverez d'avantage d'informations dans l'article de
1459 la base de connaissances Microsoft <a
1460 href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807"
1463 <p>Bien que la plupart des messages d'erreur internes originaux
1464 puissent être remplacés, ceux-ci sont cependant conservés dans
1465 certaines circonstances sans tenir compte de la définition de la
1466 directive <directive module="core">ErrorDocument</directive>. En
1467 particulier, en cas de détection d'une requête mal formée, le
1468 processus de traitement normal des requêtes est immédiatement
1469 interrompu, et un message d'erreur interne est renvoyé, ceci afin de
1470 se prémunir contre les problèmes de sécurité liés aux requêtes mal
1473 <p>Si vous utilisez mod_proxy, il est en général préférable
1474 d'activer <directive
1475 module="mod_proxy">ProxyErrorOverride</directive> afin d'être en
1476 mesure de produire des messages d'erreur personnalisés pour le
1477 compte de votre serveur d'origine. Si vous n'activez pas
1478 ProxyErrorOverride, Apache httpd ne générera pas de messages d'erreur
1479 personnalisés pour le contenu mandaté.</p>
1483 <seealso><a href="../custom-error.html">documentation sur la
1484 personnalisation des réponses</a></seealso>
1485 </directivesynopsis>
1488 <name>ErrorLog</name>
1489 <description>Définition du chemin du journal des erreurs</description>
1490 <syntax> ErrorLog <var>chemin fichier</var>|syslog[:<var>facility</var>]</syntax>
1491 <default>ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows and OS/2)</default>
1492 <contextlist><context>server config</context><context>virtual
1497 <p>La directive <directive>ErrorLog</directive> permet de définir le
1498 nom du fichier dans lequel le serveur va journaliser toutes les
1499 erreurs qu'il rencontre. Si le <var>chemin fichier</var> n'est pas
1500 absolu, il est considéré comme relatif au chemin défini par la
1501 directive <directive module="core">ServerRoot</directive>.</p>
1503 <highlight language="config">ErrorLog "/var/log/httpd/error_log"</highlight>
1505 <p>Si le <var>chemin fichier</var> commence par une barre verticale
1506 "<code>(|)</code>", il est considéré comme une commande à lancer pour traiter la
1507 journalisation de l'erreur.</p>
1509 <highlight language="config">ErrorLog "|/usr/local/bin/httpd_errors"</highlight>
1511 <p>Voir les notes à propos des <a href="../logs.html#piped">journaux
1512 redirigés</a> pour plus d'informations.</p>
1514 <p>L'utilisation de <code>syslog</code> à la place d'un nom de
1515 fichier active la journalisation via syslogd(8) si le système le
1516 supporte. Le dispositif syslog par défaut est <code>local7</code>,
1517 mais vous pouvez le modifier à l'aide de la syntaxe
1518 <code>syslog:<var>facility</var></code>, où <var>facility</var> peut
1519 être remplacé par un des noms habituellement documentés dans la page
1520 de man syslog(1). Le dispositif syslog <code>local7</code> est
1521 global, et si il est modifié dans un serveur virtuel, le dispositif
1522 final spécifié affecte l'ensemble du serveur</p>
1524 <highlight language="config">ErrorLog syslog:user</highlight>
1526 <p>Des modules supplémentaires peuvent fournir leurs propres
1527 fournisseurs ErrorLog. La syntaxe est similaire à celle de
1528 l'exemple <code>syslog</code> ci-dessus.</p>
1530 <p>SECURITE : Voir le document <a
1531 href="../misc/security_tips.html#serverroot">conseils à propos de
1532 sécurité</a> pour des détails sur les raisons pour lesquelles votre
1533 sécurité peut être compromise si le répertoire contenant les
1534 fichiers journaux présente des droits en écriture pour tout autre
1535 utilisateur que celui sous lequel le serveur est démarré.</p>
1536 <note type="warning"><title>Note</title>
1537 <p>Lors de la spécification d'un chemin de fichier sur les
1538 plates-formes non-Unix, on doit veiller à n'utiliser que des
1539 slashes (/), même si la plate-forme autorise l'utilisation des
1540 anti-slashes (\). Et d'une manière générale, il est recommandé de
1541 n'utiliser que des slashes (/) dans les fichiers de
1545 <seealso><directive module="core">LogLevel</directive></seealso>
1546 <seealso><a href="../logs.html">Fichiers journaux du serveur HTTP Apache</a></seealso>
1547 </directivesynopsis>
1550 <name>ErrorLogFormat</name>
1551 <description>Spécification du format des entrées du journal des erreurs</description>
1552 <syntax> ErrorLogFormat [connection|request] <var>format</var></syntax>
1553 <contextlist><context>server config</context><context>virtual host</context>
1557 <p>La directive <directive>ErrorLogFormat</directive> permet de
1558 spécifier quelles informations supplémentaires vont être enregistrées
1559 dans le journal des erreurs en plus du message habituel.</p>
1561 <highlight language="config">
1563 ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"
1566 <p>La spécification de <code>connection</code> ou
1567 <code>request</code> comme premier paramètre permet de définir des
1568 formats supplémentaires, ce qui a pour effet de journaliser des
1569 informations additionnelles lorsque le premier message est
1570 enregistré respectivement pour une connexion ou une requête
1571 spécifique. Ces informations additionnelles ne sont enregistrées
1572 qu'une seule fois par connexion/requête. Si le traitement d'une
1573 connexion ou d'une requête ne génère aucun message dans le journal,
1574 alors aucune information additionnelle n'est enregistrée.</p>
1576 <p>Il peut arriver que certains items de la chaîne de format ne
1577 produisent aucune sortie. Par exemple, l'en-tête Referer n'est
1578 présent que si le message du journal est associé à une requête et s'il
1579 est généré à un moment où l'en-tête Referer a déjà été lu par le
1580 client. Si aucune sortie n'est générée, le comportement par défaut
1581 consiste à supprimer tout ce qui se trouve entre l'espace précédent
1582 et le suivant. Ceci implique que la ligne de journalisation est
1583 divisée en champs ne contenant pas d'espace séparés par des espaces.
1584 Si un item de la chaîne de format ne génère aucune sortie,
1585 l'ensemble du champ est omis. Par exemple, si l'adresse distante
1586 <code>%a</code> du format <code>[%t] [%l] [%a] %M </code> n'est
1587 pas disponible, les crochets qui l'entourent ne seront eux-mêmes pas
1588 enregistrés. Il est possible d'échapper les espaces par un anti-slash
1589 afin qu'ils ne soient pas considérés comme séparateurs de champs.
1590 La combinaison '% ' (pourcentage espace) est un délimiteur de
1591 champ de taille nulle qui ne génère aucune sortie.</p>
1593 <p>Ce comportement peut être changé en ajoutant des modificateurs à
1594 l'item de la chaîne de format. Le modificateur <code>-</code>
1595 (moins) provoque l'enregistrement d'un signe moins si l'item
1596 considéré ne génère aucune sortie. Pour les formats à enregistrement
1597 unique par connexion/requête, il est aussi possible d'utiliser le
1598 modificateur <code>+</code> (plus). Si un item ne générant aucune
1599 sortie possède le modificateur plus, la ligne dans son ensemble est
1602 <p>Un modificateur de type entier permet d'assigner un niveau de
1603 sévérité à un item de format. L'item considéré ne
1604 sera journalisé que si la sévérité du message n'est pas
1605 plus haute que le niveau de sévérité spécifié. Les
1606 valeurs possibles vont de 1 (alert) à 15 (trace8), en passant par 4
1607 (warn) ou 7 (debug).</p>
1609 <p>Par exemple, voici ce qui arriverait si vous ajoutiez des
1610 modificateurs à l'item <code>%{Referer}i</code> qui enregistre le
1611 contenu de l'en-tête <code>Referer</code>.</p>
1613 <table border="1" style="zebra">
1614 <columnspec><column width=".3"/><column width=".7"/></columnspec>
1616 <tr><th>Item modifié</th><th>Signification</th></tr>
1619 <td><code>%-{Referer}i</code></td>
1620 <td>Enregistre le caractère <code>-</code> si l'en-tête
1621 <code>Referer</code> n'est pas défini.</td>
1625 <td><code>%+{Referer}i</code></td>
1626 <td>N'enregistre rien si l'en-tête
1627 <code>Referer</code> n'est pas défini.</td>
1631 <td><code>%4{Referer}i</code></td>
1632 <td>N'enregistre le contenu de l'en-tête <code>Referer</code> que si
1633 la sévérité du message de journalisation est supérieure à 4.</td>
1638 <p>Certains items de format acceptent des paramètres supplémentaires
1639 entre accolades.</p>
1641 <table border="1" style="zebra">
1642 <columnspec><column width=".2"/><column width=".8"/></columnspec>
1644 <tr><th>Chaîne de format</th> <th>Description</th></tr>
1646 <tr><td><code>%%</code></td>
1647 <td>Le signe pourcentage</td></tr>
1649 <tr><td><code>%a</code></td>
1650 <td>Adresse IP et port clients</td></tr>
1652 <tr><td><code>%{c}a</code></td>
1653 <td>Port et adresse IP sous-jacents du correspondant pour la
1654 connexion (voir le module
1655 <module>mod_remoteip</module>)</td></tr>
1657 <tr><td><code>%A</code></td>
1658 <td>Adresse IP et port locaux</td></tr>
1660 <tr><td><code>%{<em>name</em>}e</code></td>
1661 <td>Variable d'environnement de requête <em>name</em></td></tr>
1663 <tr><td><code>%E</code></td>
1664 <td>Etat d'erreur APR/OS et chaîne</td></tr>
1666 <tr><td><code>%F</code></td>
1667 <td>Nom du fichier source et numéro de ligne de l'appel du
1670 <tr><td><code>%{<em>name</em>}i</code></td>
1671 <td>En-tête de requête <em>name</em></td></tr>
1673 <tr><td><code>%k</code></td>
1674 <td>Nombre de requêtes persistantes pour cette connexion</td></tr>
1676 <tr><td><code>%l</code></td>
1677 <td>Sévérité du message</td></tr>
1679 <tr><td><code>%L</code></td>
1680 <td>Identifiant journal de la requête</td></tr>
1682 <tr><td><code>%{c}L</code></td>
1683 <td>Identifiant journal de la connexion</td></tr>
1685 <tr><td><code>%{C}L</code></td>
1686 <td>Identifiant journal de la connexion si utilisé dans la
1687 portée de la connexion, vide sinon</td></tr>
1689 <tr><td><code>%m</code></td>
1690 <td>Nom du module qui effectue la journalisation du message</td></tr>
1692 <tr><td><code>%M</code></td>
1693 <td>Le message effectif</td></tr>
1695 <tr><td><code>%{<em>name</em>}n</code></td>
1696 <td>Note de requête <em>name</em></td></tr>
1698 <tr><td><code>%P</code></td>
1699 <td>Identifiant du processus courant</td></tr>
1701 <tr><td><code>%T</code></td>
1702 <td>Identifiant du thread courant</td></tr>
1704 <tr><td><code>%{g}T</code></td>
1705 <td>Identifiant unique de thread système du thread courant
1706 (l'identifiant affiché par la commande <code>top</code> par
1707 exemple ; seulement sous Linux pour l'instant)</td></tr>
1709 <tr><td><code>%t</code></td>
1710 <td>L'heure courante</td></tr>
1712 <tr><td><code>%{u}t</code></td>
1713 <td>L'heure courante avec les microsecondes</td></tr>
1715 <tr><td><code>%{cu}t</code></td>
1716 <td>L'heure courante au format compact ISO 8601, avec les
1717 microsecondes</td></tr>
1719 <tr><td><code>%v</code></td>
1720 <td>Le nom de serveur canonique <directive
1721 module="core">ServerName</directive> du serveur courant.</td></tr>
1723 <tr><td><code>%V</code></td>
1724 <td>Le nom de serveur du serveur qui sert la requête en accord
1725 avec la définition de la directive <directive module="core"
1726 >UseCanonicalName</directive>.</td></tr>
1728 <tr><td><code>\ </code> (anti-slash espace)</td>
1729 <td>Espace non délimiteur</td></tr>
1731 <tr><td><code>% </code> (pourcentage espace)</td>
1732 <td>Délimiteur de champ (aucune sortie)</td></tr>
1735 <p>L'item de format identifiant journal <code>%L</code> génère un
1736 identifiant unique pour une connexion ou une requête. Il peut servir
1737 à déterminer quelles lignes correspondent à la même connexion ou
1738 requête ou quelle requête est associée à tel connexion. Un item de
1739 format <code>%L</code> est aussi disponible dans le module
1740 <module>mod_log_config</module>, mais il permet dans ce contexte de
1741 corréler les entrées du journal des accès avec celles du journal des
1742 erreurs. Si le module <module>mod_unique_id</module> est chargé,
1743 c'est son identifiant unique qui sera utilisé comme identifiant de
1744 journal pour les requêtes.</p>
1746 <highlight language="config">
1747 # Exemple (format par défaut pour les MPMs threadés)
1748 ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
1751 <p>Cet exemple renverrait un message d'erreur du style :</p>
1754 [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
1757 <p>Notez que, comme indiqué plus haut, certains champs sont
1758 totalement supprimés s'ils n'ont pas été définis.</p>
1760 <highlight language="config">
1761 # Exemple (similaire au format 2.2.x)
1762 ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
1765 <highlight language="config">
1766 # Exemple avancé avec identifiants journal de requête/connexion
1767 ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M"
1768 ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"
1769 ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'"
1770 ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'"
1771 ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"
1775 <seealso><directive module="core">ErrorLog</directive></seealso>
1776 <seealso><directive module="core">LogLevel</directive></seealso>
1777 <seealso><a href="../logs.html">Fichiers journaux du serveur HTTP Apache</a></seealso>
1778 </directivesynopsis>
1781 <name>ExtendedStatus</name>
1782 <description>Extrait des informations d'état étendues pour chaque
1783 requête</description>
1784 <syntax>ExtendedStatus On|Off</syntax>
1785 <default>ExtendedStatus Off</default>
1786 <contextlist><context>server config</context></contextlist>
1790 <p>Cette option permet d'extraire des données supplémentaires
1791 concernant la requête en cours de traitement pour un processus
1792 donné, et crée un résumé d'utilisation ; vous pouvez accéder à
1793 ces variables pendant l'exécution en configurant
1794 <module>mod_status</module>. Notez que d'autres modules sont
1795 susceptibles de s'appuyer sur ce tableau de bord.</p>
1797 <p>Cette directive s'applique au serveur dans son ensemble, et ne
1798 peut pas être activée/désactivée pour un serveur virtuel
1799 particulier. Notez que l'extraction des informations d'état étendues
1800 peut ralentir le serveur. Notez aussi que cette définition ne peut
1801 pas être modifiée au cours d'un redémarrage graceful.</p>
1804 <p>Notez que le chargement de <module>mod_status</module> définit
1805 automatiquement ExtendedStatus à On, et que d'autres modules tiers
1806 sont susceptibles d'en faire de même. De tels modules ont besoin
1807 d'informations détaillées à propos de l'état de tous les processus.
1808 Depuis la version 2.3.6, <module>mod_status</module> a définit la
1809 valeur par défaut à On, alors qu'elle était à Off dans les versions
1815 </directivesynopsis>
1818 <name>FileETag</name>
1819 <description>Caractéristiques de fichier utilisées lors de la génération
1820 de l'en-tête de réponse HTTP ETag pour les fichiers statiques</description>
1821 <syntax>FileETag <var>composant</var> ...</syntax>
1822 <default>FileETag MTime Size</default>
1823 <contextlist><context>server config</context><context>virtual
1825 <context>directory</context><context>.htaccess</context>
1827 <override>FileInfo</override>
1828 <compatibility>La valeur par défaut était "INode MTime Size"
1829 dans les versions 2.3.14 et antérieures.</compatibility>
1833 La directive <directive>FileETag</directive> définit les
1834 caractéristiques de fichier utilisées lors de la génération de
1835 l'en-tête de réponse HTTP <code>ETag</code> (entity tag) quand le
1836 document est contenu dans un fichier statique(la valeur de
1838 est utilisée dans le cadre de la gestion du cache pour préserver la
1839 bande passante réseau). La directive
1840 <directive>FileETag</directive> vous permet maintenant de choisir
1841 quelles caractéristiques du fichier vont être utilisées, le cas
1842 échéant. Les mots-clés reconnus sont :
1846 <dt><strong>INode</strong></dt>
1847 <dd>Le numéro d'i-node du fichier sera inclus dans le processus de
1849 <dt><strong>MTime</strong></dt>
1850 <dd>La date et l'heure auxquelles le fichier a été modifié la
1851 dernière fois seront incluses</dd>
1852 <dt><strong>Size</strong></dt>
1853 <dd>La taille du fichier en octets sera incluse</dd>
1854 <dt><strong>All</strong></dt>
1855 <dd>Tous les champs disponibles seront utilisés. Cette définition
1857 <highlight language="config">FileETag INode MTime Size</highlight></dd>
1858 <dt><strong>None</strong></dt>
1859 <dd>Si le document se compose d'un fichier, aucun champ
1860 <code>ETag</code> ne sera inclus dans la réponse</dd>
1863 <p>Les mots-clés <code>INode</code>, <code>MTime</code>, et
1864 <code>Size</code> peuvent être préfixés par <code>+</code> ou
1865 <code>-</code>, ce qui permet de modifier les valeurs par défaut
1866 héritées d'un niveau de configuration plus général. Tout mot-clé
1867 apparaissant sans aucun préfixe annule entièrement et immédiatement
1868 les configurations héritées.</p>
1870 <p>Si la configuration d'un répertoire contient
1871 <code>FileETag INode MTime Size</code>, et si un de
1872 ses sous-répertoires contient <code>FileETag -INode</code>, la
1873 configuration de ce sous-répertoire (qui sera propagée vers tout
1874 sous-répertoire qui ne la supplante pas), sera équivalente à
1875 <code>FileETag MTime Size</code>.</p>
1876 <note type="warning"><title>Avertissement</title>
1877 Ne modifiez pas les valeurs par défaut pour les répertoires ou
1878 localisations où WebDAV est activé et qui utilisent
1879 <module>mod_dav_fs</module> comme fournisseur de stockage.
1880 <module>mod_dav_fs</module> utilise
1881 <code>MTime Size</code> comme format fixe pour les
1882 comparaisons de champs <code>ETag</code> dans les requêtes
1883 conditionnelles. Ces requêtes conditionnelles échoueront si le
1884 format <code>ETag</code> est modifié via la directive
1885 <directive>FileETag</directive>.
1887 <note><title>Inclusions côté serveur</title>
1888 Aucun champ ETag n'est généré pour les réponses interprétées par
1889 <module>mod_include</module>, car l'entité de la réponse peut
1890 changer sans modification de l'INode, du MTime, ou de la taille du
1891 fichier statique contenant les directives SSI.
1896 </directivesynopsis>
1898 <directivesynopsis type="section">
1900 <description>Contient des directives qui s'appliquent aux fichiers
1901 précisés</description>
1902 <syntax><Files <var>nom fichier</var>> ... </Files></syntax>
1903 <contextlist><context>server config</context><context>virtual
1905 <context>directory</context><context>.htaccess</context>
1907 <override>All</override>
1910 <p>La directive <directive type="section">Files</directive> limite
1911 la portée des directives qu'elle contient aux fichiers précisés.
1912 Elle est comparable aux directives <directive module="core"
1913 type="section">Directory</directive> et <directive module="core"
1914 type="section">Location</directive>. Elle doit se terminer par une
1915 balise <code></Files></code>. Les directives contenues dans
1916 cette section s'appliqueront à tout objet dont le nom de base (la
1917 dernière partie du nom de fichier) correspond au fichier spécifié.
1918 Les sections <directive type="section">Files</directive> sont
1919 traitées selon l'ordre dans lequel elles apparaissent dans le
1920 fichier de configuration, après les sections <directive module="core"
1921 type="section">Directory</directive> et la lecture des fichiers
1922 <code>.htaccess</code>, mais avant les sections <directive
1923 type="section" module="core">Location</directive>. Notez que les
1924 sections <directive type="section">Files</directive> peuvent être
1925 imbriquées dans les sections <directive type="section"
1926 module="core">Directory</directive> afin de restreindre la portion
1927 du système de fichiers à laquelle ces dernières vont
1930 <p>L'argument <var>filename</var> peut contenir un nom de fichier
1931 ou une chaîne de caractères avec caractères génériques, où
1932 <code>?</code> remplace un caractère, et <code>*</code> toute chaîne
1934 <highlight language="config">
1935 <Files "cat.html">
1936 # Insérer ici des directives qui s'appliquent au fichier cat.html
1939 <Files "?at.*">
1940 # Les directives insérées ici s'appliqueront aux fichiers
1941 # cat.html, bat.html, hat.php, et ainsi de suite.
1945 <p>On peut aussi utiliser les <glossary
1946 ref="regex">Expressions rationnelles</glossary> en ajoutant la
1947 caractère <code>~</code>. Par exemple :</p>
1949 <highlight language="config">
1950 <Files ~ "\.(gif|jpe?g|png)$">
1955 <p>correspondrait à la plupart des formats graphiques de l'Internet.
1956 Il est cependant préférable d'utiliser la directive <directive
1957 module="core" type="section">FilesMatch</directive>.</p>
1959 <p>Notez qu'à la différence des sections <directive type="section"
1960 module="core">Directory</directive> et <directive type="section"
1961 module="core">Location</directive>, les sections <directive
1962 type="section">Files</directive> peuvent être utilisées dans les
1963 fichiers <code>.htaccess</code>. Ceci permet aux utilisateurs de
1964 contrôler l'accès à leurs propres ressources, fichier par
1968 <seealso><a href="../sections.html">Comment fonctionnent les sections
1969 <Directory>, <Location> et <Files></a> pour une
1970 explication de la manière dont ces différentes sections se combinent
1971 entre elles à la réception d'une requête</seealso>
1972 </directivesynopsis>
1974 <directivesynopsis type="section">
1975 <name>FilesMatch</name>
1976 <description>Contient des directives qui s'appliquent à des fichiers
1977 spécifiés sous la forme d'expressions rationnelles</description>
1978 <syntax><FilesMatch <var>expression rationnelle</var>> ...
1979 </FilesMatch></syntax>
1980 <contextlist><context>server config</context><context>virtual
1982 <context>directory</context><context>.htaccess</context>
1984 <override>All</override>
1987 <p>La section <directive type="section">FilesMatch</directive>
1988 limite la portée des directives qu'elle contient aux fichiers
1989 spécifiés, tout comme le ferait une section <directive module="core"
1990 type="section">Files</directive>. Mais elle accepte aussi les
1991 <glossary ref="regex">expressions rationnelles</glossary>. Par
1994 <highlight language="config">
1995 <FilesMatch ".+\.(gif|jpe?g|png)$">
2000 <p>correspondrait à la plupart des formats graphiques de
2003 <note>Les caractères <code>.+</code> au début de l'expression
2004 rationnelle permettent de s'assurer que les fichiers de nom
2005 <code>.png</code>, ou <code>.gif</code>, par exemple, ne seront pas
2006 pris en compte.</note>
2008 <p>A partir de la version 2.4.8, les groupes nommés et les
2009 références arrières sont extraits et enregistrés dans
2010 l'environnement avec leur nom en majuscules et préfixé
2011 par "MATCH_". Ceci permet
2012 de référencer des URLs dans des <a href="../expr.html">expressions</a>
2013 ou au sein de modules comme <module>mod_rewrite</module>. Pour
2014 éviter toute confusion, les références arrières numérotées (non
2015 nommées) sont ignorées. Vous devez utiliser à la place des groupes
2018 <highlight language="config">
2019 <FilesMatch "^(?<sitename>[^/]+)">
2020 require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
2026 <seealso><a href="../sections.html">Comment fonctionnent les sections
2027 <Directory>, <Location> et <Files></a> pour une
2028 explication de la manière dont ces différentes sections se combinent
2029 entre elles à la réception d'une requête</seealso>
2030 </directivesynopsis>
2033 <name>ForceType</name>
2034 <description>Force le type de médium spécifié dans le champ d'en-tête
2035 HTTP Content-Type pour les fichiers correspondants</description>
2036 <syntax>ForceType <var>type médium</var>|None</syntax>
2037 <contextlist><context>directory</context><context>.htaccess</context>
2039 <override>FileInfo</override>
2042 <p>Lorsqu'elle est placée dans un fichier <code>.htaccess</code> ou
2043 une section <directive type="section"
2044 module="core">Directory</directive>, <directive type="section"
2045 module="core">Location</directive>, ou <directive type="section"
2046 module="core">Files</directive>, cette directive force
2047 l'identification du type MIME des fichiers spécifiés à la valeur de
2048 l'argument <var>type médium</var>. Par exemple, si vous possédez un
2049 répertoire ne contenant que des fichiers GIF, et si vous ne voulez
2050 pas leur ajouter l'extension <code>.gif</code>, vous pouvez utiliser
2053 <highlight language="config">ForceType image/gif</highlight>
2055 <p>Notez que cette directive l'emporte sur d'autres associations de
2056 type de médium indirectes définies dans mime.types ou via la
2057 directive <directive module="mod_mime">AddType</directive>.</p>
2059 <p>Vous pouvez aussi annuler toute définition plus générale de
2060 <directive>ForceType</directive> en affectant la valeur
2061 <code>None</code> à l'argument <var>type médium</var> :</p>
2063 <highlight language="config">
2064 # force le type MIME de tous les fichiers à image/gif:
2065 <Location "/images">
2069 # mais utilise les méthodes classiques d'attribution du type MIME
2070 # dans le sous-répertoire suivant :
2071 <Location "/images/mixed">
2076 <p>A la base, cette directive écrase le type de contenu généré pour
2077 les fichiers statiques servis à partir du sytème de fichiers. Pour
2078 les ressources autres que les fichiers statiques pour lesquels le
2079 générateur de réponse spécifie en général un type de contenu, cette
2080 directive est ignorée.</p>
2082 <note><title>Note</title>
2083 <p>Lorsque des directives explicites comme <directive
2084 module="core">SetHandler</directive> ou
2085 <directive>module="mod_mime">AddHandler</directive> ne s'appliquent
2086 pas à la requête courante, le nom du gestionnaire interne
2087 normalement défini par ces directives correspondra alors au type de
2088 contenu spécifié par cette directive. Il s'agit d'un
2089 comportement historique que certains modules
2090 tiers, comme mod_php, peuvent interpréter comme un type de contenu
2091 artificiel ne servant qu'à indiquer le module qui doit prendre en
2092 compte la requête considérée. Dans la mesure du
2093 possible, il est conseillé d'éviter les
2094 configurations qui comportent de tels types artificiels en utilisant
2095 les directives <directive module="core" >SetHandler</directive> ou
2096 <directive module="mod_mime">AddHandler</directive>.</p>
2100 </directivesynopsis>
2102 <name>GprofDir</name>
2103 <description>Répertoire dans lequel écrire les données de profiling
2104 gmon.out.</description>
2105 <syntax>GprofDir <var>/tmp/gprof/</var>|<var>/tmp/gprof/</var>%</syntax>
2106 <contextlist><context>server config</context><context>virtual host</context>
2110 <p>Lorsque le serveur a été compilé avec le support du profiling
2111 gprof, la directive <directive>GprofDir</directive> permet de
2112 spécifier dans quel répertoire les fichiers <code>gmon.out</code>
2113 doivent être écrits lorsque le processus s'arrête. Si l'argument se
2114 termine par un caractère pourcentage ('%'), des sous-répertoires
2115 sont créés pour chaque identifiant de processus.</p>
2117 <p>Cette directive ne fonctionne actuellement qu'avec le MPM
2118 <module>prefork</module>.</p>
2120 </directivesynopsis>
2123 <name>HostnameLookups</name>
2124 <description>Active la recherche DNS sur les adresses IP des
2125 clients</description>
2126 <syntax>HostnameLookups On|Off|Double</syntax>
2127 <default>HostnameLookups Off</default>
2128 <contextlist><context>server config</context><context>virtual
2130 <context>directory</context></contextlist>
2133 <p>Cette directive active la recherche DNS afin de pouvoir
2134 journaliser les nom d'hôtes (et les passer aux programmes CGI et aux
2135 inclusions SSI via la variable <code>REMOTE_HOST</code>). La valeur
2136 <code>Double</code> déclenche une double recherche DNS inverse. En
2137 d'autres termes, une fois la recherche inverse effectuée, on lance
2138 une recherche directe sur le résultat de cette dernière. Au moins
2139 une des adresses IP fournies par la recherche directe doit
2140 correspondre à l'adresse originale (ce que l'on nomme
2141 <code>PARANOID</code> dans la terminologie "tcpwrappers").</p>
2143 <p>Quelle que soit la configuration, lorsqu'on utilise
2144 <module>mod_authz_host</module> pour contrôler l'accès en fonction
2145 du nom d'hôte, une double recherche DNS inverse est effectuée,
2146 sécurité oblige. Notez cependant que le résultat de cette double
2147 recherche n'est en général pas accessible, à moins que vous n'ayez
2148 spécifié <code>HostnameLookups Double</code>. Par exemple, si vous
2149 n'avez spécifié que <code>HostnameLookups On</code>, et si une
2150 requête concerne un objet protégé par des restrictions en fonction
2151 du nom d'hôte, quel que soit le résultat de la double recherche
2152 inverse, les programmes CGI ne recevront que le résultat de la
2153 recherche inverse simple dans la variable
2154 <code>REMOTE_HOST</code>.</p>
2156 <p>La valeur par défaut est <code>Off</code> afin de préserver le
2157 traffic réseau des sites pour lesquels la recherche inverse n'est
2158 pas vraiment nécessaire. Cette valeur par défaut est aussi bénéfique
2159 pour les utilisateurs finaux car il n'ont ainsi pas à subir de temps
2160 d'attente supplémentaires dus aux recherches DNS. Les sites
2161 fortement chargés devraient laisser cette directive à
2162 <code>Off</code>, car les recherches DNS peuvent prendre des temps
2163 très longs. Vous pouvez éventuellement utiliser hors ligne
2164 l'utilitaire <program>logresolve</program>, compilé par défaut dans
2165 le sous-répertoire <code>bin</code> de votre répertoire
2166 d'installation, afin de déterminer les noms d'hôtes associés aux
2167 adresses IP journalisées.</p>
2169 <p>Enfin, si vous avez des <a
2170 href="mod_authz_host.html#reqhost">directives Require à base de
2171 nom</a>, une recherche de nom d'hôte sera effectuée quelle que soit
2172 la définition de la directive <code>HostnameLookups</code>.</p>
2174 </directivesynopsis>
2176 <directivesynopsis type="section">
2178 <description>Contient des directives qui ne s'appliquent que si une
2179 condition est satisfaite au cours du traitement d'une
2180 requête</description>
2181 <syntax><If <var>expression</var>> ... </If></syntax>
2182 <contextlist><context>server config</context><context>virtual
2184 <context>directory</context><context>.htaccess</context>
2186 <override>All</override>
2189 <p>La directive <directive type="section">If</directive> évalue une
2190 expression à la volée, et applique les directives qu'elle contient
2191 si et seulement si l'expression renvoie la valeur "vrai". Par
2194 <highlight language="config"><If "-z req('Host')"></highlight>
2196 <p>serait satisfaite pour les requêtes HTTP/1.0 sans en-tête
2197 <var>Host:</var>. Les expressions peuvent contenir différents
2198 opérateurs de type shell pour la comparaison de chaînes
2199 (<code>==</code>, <code>!=</code>, <code><</code>, ...), la
2200 comparaison d'entiers (<code>-eq</code>, <code>-ne</code>, ...), ou
2201 à usages divers (<code>-n</code>, <code>-z</code>, <code>-f</code>,
2202 ...). Les expressions rationnelles sont aussi supportées,</p>
2204 <highlight language="config"><If "%{QUERY_STRING} =~ /(delete|commit)=.*?elem/"></highlight>
2206 <p>ainsi que les comparaison de modèles de type shell et de
2207 nombreuses autres opérations. Ces opérations peuvent être effectuées
2208 sur les en-têtes de requêtes (<code>req</code>), les variables
2209 d'environnement (<code>env</code>), et un grand nombre d'autres
2210 propriétés. La documentation complète est disponible dans <a
2211 href="../expr.html">Les expressions dans le serveur HTTP Apache</a>.</p>
2213 <p>Cette section de configuration ne peut contenir que des
2214 directives qui supportent le <a
2215 href="directive-dict.html#Context">contexte de répertoire</a>.</p>
2217 <note type="warning">
2218 Certain variables, such as <code>CONTENT_TYPE</code> and other
2219 response headers, are set after <If> conditions have already
2220 been evaluated, and so will not be available to use in this
2226 <seealso><a href="../expr.html">Les expressions dans le serveur HTTP
2227 Apache</a>, pour une référence complète et d'autres exemples.</seealso>
2228 <seealso><directive type="section" module="core">ElseIf</directive></seealso>
2229 <seealso><directive type="section" module="core">Else</directive></seealso>
2230 <seealso><a href="../sections.html">Comment fonctionnent les sections
2231 <Directory>, <Location> et <Files></a> pour une
2232 explication de la manière dont ces différentes sections se combinent
2233 entre elles à la réception d'une requête. Les
2234 directives <directive type="section">If</directive>, <directive
2235 type="section">ElseIf</directive>, et <directive
2236 type="section">Else</directive> s'appliquent en dernier.</seealso>
2237 </directivesynopsis>
2239 <directivesynopsis type="section">
2240 <name>IfDefine</name>
2241 <description>Contient des directives qui ne s'appliqueront que si un
2242 test retourne "vrai" au démarrage du serveur</description>
2243 <syntax><IfDefine [!]<var>paramètre</var>> ...
2244 </IfDefine></syntax>
2245 <contextlist><context>server config</context><context>virtual
2247 <context>directory</context><context>.htaccess</context>
2249 <override>All</override>
2252 <p>La section <code><IfDefine
2253 <var>test</var>>...</IfDefine></code> permet de
2254 conférer un caractère conditionnel à un ensemble de directives. Les
2255 directives situées à l'intérieur d'une section <directive
2256 type="section">IfDefine</directive> ne s'appliquent que si
2257 <var>test</var> est vrai. Si <var>test</var> est faux, tout ce qui
2258 se trouve entre les balises de début et de fin est ignoré.</p>
2260 <p><var>test</var> peut se présenter sous deux formes :</p>
2263 <li><var>nom paramètre</var></li>
2265 <li><code>!</code><var>nom paramètre</var></li>
2268 <p>Dans le premier cas, les directives situées entre les balises de
2269 début et de fin ne s'appliqueront que si le paramètre nommé <var>nom
2270 paramètre</var> est défini. Le second format inverse le test, et
2271 dans ce cas, les directives ne s'appliqueront que si <var>nom
2272 paramètre</var> n'est <strong>pas</strong> défini.</p>
2274 <p>L'argument <var>nom paramètre</var> est une définition qui peut
2275 être effectuée par la ligne de commande
2276 <program>httpd</program> via le paramètre
2277 <code>-D<var>paramètre</var></code> au démarrage du serveur, ou via la
2278 directive <directive module="core">Define</directive>.</p>
2280 <p>Les sections <directive type="section">IfDefine</directive>
2281 peuvent être imbriquées, ce qui permet d'implémenter un test
2282 multi-paramètres simple. Exemple :</p>
2284 <example>httpd -DReverseProxy -DUseCache -DMemCache ...</example>
2285 <highlight language="config">
2286 <IfDefine ReverseProxy>
2287 LoadModule proxy_module modules/mod_proxy.so
2288 LoadModule proxy_http_module modules/mod_proxy_http.so
2289 <IfDefine UseCache>
2290 LoadModule cache_module modules/mod_cache.so
2291 <IfDefine MemCache>
2292 LoadModule mem_cache_module modules/mod_mem_cache.so
2294 <IfDefine !MemCache>
2295 LoadModule cache_disk_module modules/mod_cache_disk.so
2301 </directivesynopsis>
2303 <directivesynopsis type="section">
2304 <name>IfModule</name>
2305 <description>Contient des directives qui ne s'appliquent qu'en fonction
2306 de la présence ou de l'absence d'un module spécifique</description>
2307 <syntax><IfModule [!]<var>fichier module</var>|<var>identificateur
2308 module</var>> ... </IfModule></syntax>
2309 <contextlist><context>server config</context><context>virtual
2311 <context>directory</context><context>.htaccess</context>
2313 <override>All</override>
2314 <compatibility>Les identificateurs de modules sont disponibles dans les
2315 versions 2.1 et supérieures.</compatibility>
2318 <p>La section <code><IfModule
2319 <var>test</var>>...</IfModule></code> permet de conférer à
2320 des directives un caractère conditionnel basé sur la présence d'un
2321 module spécifique. Les directives situées dans une section
2322 <directive type="section">IfModule</directive> ne s'appliquent que
2323 si <var>test</var> est vrai. Si <var>test</var> est faux, tout ce
2324 qui se trouve entre les balises de début et de fin est ignoré.</p>
2326 <p><var>test</var> peut se présenter sous deux formes :</p>
2329 <li><var>module</var></li>
2331 <li>!<var>module</var></li>
2334 <p>Dans le premier cas, les directives situées entre les balises de
2335 début et de fin ne s'appliquent que si le module <var>module</var>
2336 est présent -- soit compilé avec le binaire Apache httpd, soit chargé
2337 dynamiquement via la directive <directive module="mod_so"
2338 >LoadModule</directive>. Le second format inverse le test, et dans
2339 ce cas, les directives ne s'appliquent que si <var>module</var>
2340 n'est <strong>pas</strong> présent.</p>
2342 <p>L'argument <var>module</var> peut contenir soit l'identificateur
2343 du module, soit le nom du fichier source du module. Par exemple,
2344 <code>rewrite_module</code> est un identificateur et
2345 <code>mod_rewrite.c</code> le nom du fichier source
2346 correspondant. Si un module comporte plusieurs fichiers sources,
2347 utilisez le nom du fichier qui contient la chaîne de caractères
2348 <code>STANDARD20_MODULE_STUFF</code>.</p>
2350 <p>Les sections <directive type="section">IfModule</directive>
2351 peuvent être imbriquées, ce qui permet d'implémenter des tests
2352 multi-modules simples.</p>
2354 <note>Cette section ne doit être utilisée que si votre fichier de
2355 configuration ne fonctionne qu'en fonction de la présence ou de
2356 l'absence d'un module spécifique. D'une manière générale, il n'est
2357 pas nécessaire de placer les directives à l'intérieur de sections
2358 <directive type="section">IfModule</directive>.</note>
2360 </directivesynopsis>
2363 <name>Include</name>
2364 <description>Inclut d'autres fichiers de configuration dans un des
2365 fichiers de configuration du serveur</description>
2366 <syntax>Include <var>chemin-fichier</var>|<var>chemin-répertoire</var>|<var>wildcard</var></syntax>
2367 <contextlist><context>server config</context><context>virtual
2369 <context>directory</context>
2371 <compatibility>Utilisation des caractères génériques dans la partie chemin depuis la
2372 version 2.3.6</compatibility>
2375 <p>Cette directive permet l'inclusion d'autres fichiers de
2376 configuration dans un des fichiers de configuration du serveur.</p>
2378 <p>On peut utiliser des caractères génériques de style Shell
2379 (<code>fnmatch()</code>) aussi bien dans la partie nom de fichier du
2380 chemin que dans la partie répertoires pour inclure plusieurs
2382 seule fois, selon leur ordre alphabétique. De plus, si la directive
2383 <directive>Include</directive> pointe vers un répertoire, Apache
2384 httpd inclura tous les fichiers de ce répertoire et de tous ces
2385 sous-répertoires. L'inclusion de répertoires entiers est cependant
2386 déconseillée, car il est fréquent d'oublier des fichiers
2387 temporaires dans un répertoire, ce qui causerait une erreur
2388 <program>httpd</program> en cas d'inclusion. Pour inclure des
2389 fichiers qui correspondent à un certain modèle, comme *.conf par
2390 exemple, nous vous recommandons d'utiliser plutôt la syntaxe avec
2391 caractères génériques comme ci-dessous.</p>
2393 <p>La directive <directive module="core">Include</directive>
2394 <strong>échouera avec un code d'erreur</strong> si une expression
2395 contenant des caractères génériques ne correspond à aucun fichier.
2396 Pour ignorer les expressions contenant des caractères génériques ne
2397 correspondant à aucun fichier, utilisez la directive <directive
2398 module="core">IncludeOptional</directive>.</p>
2400 <p>Le chemin fichier spécifié peut être soit un chemin absolu, soit
2401 un chemin relatif au répertoire défini par la directive <directive
2402 module="core">ServerRoot</directive>.</p>
2406 <highlight language="config">
2407 Include /usr/local/apache2/conf/ssl.conf
2408 Include /usr/local/apache2/conf/vhosts/*.conf
2411 <p>ou encore, avec des chemins relatifs au répertoire défini par la
2412 directive <directive module="core">ServerRoot</directive> :</p>
2414 <highlight language="config">
2415 Include conf/ssl.conf
2416 Include conf/vhosts/*.conf
2419 <p>On peut aussi insérer des caractères génériques dans la partie
2420 répertoires du chemin. Dans l'exemple suivant, la directive
2421 échouera si aucun sous-répertoire de conf/vhosts ne contient au
2422 moins un fichier *.conf :</p>
2424 <highlight language="config">Include conf/vhosts/*/*.conf</highlight>
2426 <p>Par contre, dans l'exemple suivant, la directive sera simplement
2427 ignorée si aucun sous-répertoire de conf/vhosts ne contient au
2428 moins un fichier *.conf :</p>
2430 <highlight language="config">IncludeOptional conf/vhosts/*/*.conf</highlight>
2434 <seealso><directive module="core">IncludeOptional</directive></seealso>
2435 <seealso><program>apachectl</program></seealso>
2436 </directivesynopsis>
2439 <name>IncludeOptional</name>
2440 <description>Inclusion de fichiers dans le fichier de configuration</description>
2441 <syntax>IncludeOptional
2442 <var>chemin-fichier</var>|<var>chemin-répertoire</var>|<var>wildcard</var></syntax>
2443 <contextlist><context>server config</context><context>virtual host</context>
2444 <context>directory</context>
2446 <compatibility>Disponible à partir de la version 2.3.6 du serveur HTTP
2447 Apache</compatibility>
2450 <p>Cette directive permet d'inclure des fichiers dans les fichiers
2451 de configuration du serveur. Elle fonctionne de manière identique à
2452 la directive <directive module="core">Include</directive>, à
2453 l'exception du fait que si l'expression avec caractères génériques
2454 wilcard ne correspond à aucun fichier ou répertoire, elle sera
2455 ignorée silencieusement au lieu de causer une erreur.</p>
2459 <seealso><directive module="core">Include</directive></seealso>
2460 <seealso><program>apachectl</program></seealso>
2461 </directivesynopsis>
2464 <name>KeepAlive</name>
2465 <description>Active les connexions HTTP persistantes</description>
2466 <syntax>KeepAlive On|Off</syntax>
2467 <default>KeepAlive On</default>
2468 <contextlist><context>server config</context><context>virtual
2473 <p>L'extension Keep-Alive de HTTP/1.0 et l'implémentation des
2474 connexions persistantes dans HTTP/1.1 ont rendu possibles des
2475 sessions HTTP de longue durée, ce qui permet de transmettre
2476 plusieurs requêtes via la même connexion TCP. Dans certains cas, le
2477 gain en rapidité pour des documents comportant de nombreuses images
2478 peut atteindre 50%. Pour activer les connexions persistantes,
2479 définissez <code>KeepAlive On</code>.</p>
2481 <p>Pour les clients HTTP/1.0, les connexions persistantes ne seront
2482 mises en oeuvre que si elles ont été spécialement demandées par un
2483 client. De plus, une connexion persistante avec un client HTTP/1.0
2484 ne peut être utilisée que si la taille du contenu est connue
2485 d'avance. Ceci implique que les contenus dynamiques comme les
2486 sorties CGI, les pages SSI, et les listings de répertoires générés
2487 par le serveur n'utiliseront en général pas les connexions
2488 persistantes avec les clients HTTP/1.0. Avec les clients HTTP/1.1,
2489 les connexions persistantes sont utilisées par défaut, sauf
2490 instructions contraires. Si le client le demande, le transfert par
2491 tronçons de taille fixe (chunked encoding) sera utilisé afin de
2492 transmettre un contenu de longueur inconnue via une connexion
2495 <p>Lorsqu'un client utilise une connexion persistante, elle comptera
2496 pour une seule requête pour la directive <directive
2497 module="mpm_common">MaxConnectionsPerChild</directive>, quel
2498 que soit le nombre de requêtes transmises via cette connexion.</p>
2501 <seealso><directive module="core">MaxKeepAliveRequests</directive></seealso>
2502 </directivesynopsis>
2505 <name>KeepAliveTimeout</name>
2506 <description>Durée pendant laquelle le serveur va attendre une requête
2507 avant de fermer une connexion persistante</description>
2508 <syntax>KeepAliveTimeout <var>nombre</var>[ms]</syntax>
2509 <default>KeepAliveTimeout 5</default>
2510 <contextlist><context>server config</context><context>virtual
2515 <p>Le nombre de secondes pendant lesquelles Apache httpd va attendre une
2516 requête avant de fermer la connexion. Le délai peut être défini en
2517 millisecondes en suffixant sa valeur par ms. La valeur du délai
2518 spécifiée par la directive <directive
2519 module="core">Timeout</directive> s'applique dès qu'une requête a
2522 <p>Donner une valeur trop élévée à
2523 <directive>KeepAliveTimeout</directive> peut induire des problèmes
2524 de performances sur les serveurs fortement chargés. Plus le délai
2525 est élévé, plus nombreux seront les processus serveur en attente de
2526 requêtes de la part de clients inactifs.</p>
2528 <p>Si la directive <directive>KeepAliveTimeout</directive> n'est
2529 <strong>pas</strong> définie pour un serveur virtuel à base de nom, c'est
2530 la valeur de la paire adresse IP/port du serveur virtuel qui
2531 correspond le mieux qui sera utilisée.</p>
2533 </directivesynopsis>
2535 <directivesynopsis type="section">
2537 <description>Limite les contrôles d'accès que la section contient à
2538 certaines méthodes HTTP</description>
2539 <syntax><Limit <var>méthode</var> [<var>méthode</var>] ... > ...
2540 </Limit></syntax>
2541 <contextlist><context>directory</context><context>.htaccess</context>
2543 <override>AuthConfig, Limit</override>
2546 <p>Les contrôles d'accès s'appliquent normalement à
2547 <strong>toutes</strong> les méthodes d'accès, et c'est en général le
2548 comportement souhaité. <strong>Dans le cas général, les directives
2549 de contrôle d'accès n'ont pas à être placées dans une section
2550 <directive type="section">Limit</directive>.</strong></p>
2552 <p>La directive <directive type="section">Limit</directive> a pour
2553 but de limiter les effets des contrôles d'accès aux méthodes HTTP
2554 spécifiées. Pour toutes les autres méthodes, les restrictions
2555 d'accès contenues dans la section <directive
2556 type="section">Limit</directive> <strong>n'auront aucun
2557 effet</strong>. L'exemple suivant n'applique les contrôles d'accès
2558 qu'aux méthodes <code>POST</code>, <code>PUT</code>, et
2559 <code>DELETE</code>, en laissant les autres méthodes sans protection
2562 <highlight language="config">
2563 <Limit POST PUT DELETE>
2568 <p>La liste des noms de méthodes peut contenir une ou plusieurs
2569 valeurs parmi les suivantes : <code>GET</code>, <code>POST</code>,
2570 <code>PUT</code>, <code>DELETE</code>, <code>CONNECT</code>,
2571 <code>OPTIONS</code>, <code>PATCH</code>, <code>PROPFIND</code>,
2572 <code>PROPPATCH</code>, <code>MKCOL</code>, <code>COPY</code>,
2573 <code>MOVE</code>, <code>LOCK</code>, et <code>UNLOCK</code>.
2574 <strong>Le nom de méthode est sensible à la casse.</strong> Si la
2575 valeur <code>GET</code> est présente, les requêtes <code>HEAD</code>
2576 seront aussi concernées. La méthode <code>TRACE</code> ne peut pas
2577 être limitée (voir la directive <directive
2578 module="core">TraceEnable</directive>).</p>
2580 <note type="warning">Une section <directive
2581 type="section">LimitExcept</directive> doit toujours être préférée à
2582 une section <directive type="section">Limit</directive> pour la
2583 restriction d'accès, car une section <directive type="section"
2584 module="core">LimitExcept</directive> fournit une protection contre
2585 les méthodes arbitraires.</note>
2587 <p>Les directives <directive type="section">Limit</directive> et
2588 <directive type="section" module="core">LimitExcept</directive>
2589 peuvent être imbriquées. Dans ce cas, pour chaque niveau des
2590 directives <directive type="section">Limit</directive> ou <directive
2591 type="section" module="core">LimitExcept</directive>, ces dernières
2592 doivent restreindre l'accès pour les méthodes auxquelles les
2593 contrôles d'accès s'appliquent.</p>
2595 <note type="warning">Lorsqu'on utilise les directives <directive
2596 type="section">Limit</directive> ou <directive
2597 type="section">LimitExcept</directive> avec la directive <directive
2598 module="mod_authz_core">Require</directive>, la première directive
2599 <directive module="mod_authz_core">Require</directive> dont la
2600 condition est satisfaite autorise la requête, sans tenir compte de
2601 la présence d'autres directives <directive
2602 module="mod_authz_core">Require</directive>.</note>
2604 <p>Par exemple, avec la configuration suivante, tous les
2605 utilisateurs seront autorisés à effectuer des requêtes
2606 <code>POST</code>, et la directive <code>Require group
2607 editors</code> sera ignorée dans tous les cas :</p>
2609 <highlight language="config">
2610 <LimitExcept GET>
2612 </LimitExcept>
2614 Require group editors
2618 </directivesynopsis>
2620 <directivesynopsis type="section">
2621 <name>LimitExcept</name>
2622 <description>Applique les contrôles d'accès à toutes les méthodes HTTP,
2623 sauf celles qui sont spécifiées</description>
2624 <syntax><LimitExcept <var>méthode</var> [<var>méthode</var>] ... > ...
2625 </LimitExcept></syntax>
2626 <contextlist><context>directory</context><context>.htaccess</context>
2628 <override>AuthConfig, Limit</override>
2631 <p><directive type="section">LimitExcept</directive> et
2632 <code></LimitExcept></code> permettent de regrouper des
2633 directives de contrôle d'accès qui s'appliqueront à toutes les
2634 méthodes d'accès HTTP qui ne font <strong>pas</strong> partie de la
2635 liste des arguments ; en d'autres termes, elles ont un comportement
2636 opposé à celui de la section <directive type="section"
2637 module="core">Limit</directive>, et on peut les utiliser pour
2638 contrôler aussi bien les méthodes standards que les méthodes non
2639 standards ou non reconnues. Voir la documentation de la section
2640 <directive module="core" type="section">Limit</directive> pour plus
2643 <p>Par exemple :</p>
2645 <highlight language="config">
2646 <LimitExcept POST GET>
2648 </LimitExcept>
2652 </directivesynopsis>
2655 <name>LimitInternalRecursion</name>
2656 <description>Détermine le nombre maximal de redirections internes et de
2657 sous-requêtes imbriquées</description>
2658 <syntax>LimitInternalRecursion <var>nombre</var> [<var>nombre</var>]</syntax>
2659 <default>LimitInternalRecursion 10</default>
2660 <contextlist><context>server config</context><context>virtual
2665 <p>Une redirection interne survient, par exemple, quand on utilise
2666 la directive <directive module="mod_actions">Action</directive> qui
2667 redirige en interne la requête d'origine vers un script CGI. Une
2668 sous-requête est le mécanisme qu'utilise Apache httpd pour déterminer ce
2669 qui se passerait pour un URI s'il faisait l'objet d'une requête. Par
2670 exemple, <module>mod_dir</module> utilise les sous-requêtes pour
2671 rechercher les fichiers listés dans la directive <directive
2672 module="mod_dir">DirectoryIndex</directive>.</p>
2674 <p>La directive <directive>LimitInternalRecursion</directive> permet
2675 d'éviter un crash du serveur dû à un bouclage infini de redirections
2676 internes ou de sous-requêtes. De tels bouclages sont dus en général
2677 à des erreurs de configuration.</p>
2679 <p>La directive accepte, comme arguments, deux limites qui sont
2680 évaluées à chaque requête. Le premier <var>nombre</var> est le
2681 nombre maximum de redirections internes qui peuvent se succéder. Le
2682 second <var>nombre</var> détermine la profondeur d'imbrication
2683 maximum des sous-requêtes. Si vous ne spécifiez qu'un seul
2684 <var>nombre</var>, il sera affecté aux deux limites.</p>
2686 <highlight language="config">LimitInternalRecursion 5</highlight>
2688 </directivesynopsis>
2691 <name>LimitRequestBody</name>
2692 <description>limite la taille maximale du corps de la requête HTTP
2693 envoyée par le client</description>
2694 <syntax>LimitRequestBody <var>octets</var></syntax>
2695 <default>LimitRequestBody 0</default>
2696 <contextlist><context>server config</context><context>virtual
2698 <context>directory</context><context>.htaccess</context>
2700 <override>All</override>
2703 <p>Cette directive spécifie la taille maximale autorisée pour le
2704 corps d'une requête ; la valeur de l'argument <var>octets</var> va
2705 de 0 (pour une taille illimitée), à 2147483647 (2Go). Voir la note
2706 ci-dessous pour la limite d'applicabilité aux requêtes mandatées.</p>
2708 <p>La directive <directive>LimitRequestBody</directive> permet de
2709 définir une limite pour la taille maximale autorisée du corps d'une
2710 requête HTTP en tenant compte du contexte dans lequel la directive
2711 a été placée (c'est à dire au niveau du serveur, d'un répertoire,
2712 d'un fichier ou d'une localisation). Si la requête du client dépasse
2713 cette limite, le serveur répondra par un message d'erreur et ne
2714 traitera pas la requête. La taille du corps d'une requête normale va
2715 varier de manière importante en fonction de la nature de la
2716 ressource et des méthodes autorisées pour cette dernière. Les
2717 scripts CGI utilisent souvent le corps du message pour extraire les
2718 informations d'un formulaire. Les implémentations de la méthode
2719 <code>PUT</code> nécessitent une valeur au moins aussi élevée que la
2720 taille maximale des représentations que le serveur désire accepter
2721 pour cette ressource.</p>
2723 <p>L'administrateur du serveur peut utiliser cette directive pour
2724 contrôler plus efficacement les comportements anormaux des requêtes
2725 des clients, ce qui lui permettra de prévenir certaines formes
2726 d'attaques par déni de service.</p>
2728 <p>Si par exemple, vous autorisez le chargement de fichiers vers une
2729 localisation particulière, et souhaitez limiter la taille des
2730 fichiers chargés à 100Ko, vous pouvez utiliser la directive suivante
2733 <highlight language="config">LimitRequestBody 102400</highlight>
2735 <note><p>Pour une description détaillée de la manière dont cette
2736 directive est interprétée par les requêtes mandatées, voir la
2737 documentation du module <module>mod_proxy</module>.</p>
2741 </directivesynopsis>
2744 <name>LimitRequestFields</name>
2745 <description>Limite le nombre de champs d'en-tête autorisés dans une
2746 requête HTTP</description>
2747 <syntax>LimitRequestFields <var>nombre</var></syntax>
2748 <default>LimitRequestFields 100</default>
2749 <contextlist><context>server config</context><context>virtual host</context></contextlist>
2752 <p><var>nombre</var> est un entier de 0 (nombre de champs illimité)
2753 à 32767. La valeur par défaut est définie à la compilation par la
2754 constante <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> (100 selon la
2757 <p>La directive <directive>LimitRequestFields</directive> permet à
2758 l'administrateur du serveur de modifier le nombre maximum de champs
2759 d'en-tête autorisés dans une requête HTTP. Pour un serveur, cette
2760 valeur doit être supérieure au nombre de champs qu'une requête
2761 client normale peut contenir. Le nombre de champs d'en-tête d'une
2762 requête qu'un client utilise dépasse rarement 20, mais ce nombre
2763 peut varier selon les implémentations des clients, et souvent en
2764 fonction des extensions que les utilisateurs configurent dans leurs
2765 navigateurs pour supporter la négociation de contenu détaillée. Les
2766 extensions HTTP optionnelles utilisent souvent les
2767 champs d'en-tête des requêtes.</p>
2769 <p>L'administrateur du serveur peut utiliser cette directive pour
2770 contrôler plus efficacement les comportements anormaux des requêtes
2771 des clients, ce qui lui permettra de prévenir certaines formes
2772 d'attaques par déni de service. La valeur spécifiée doit être
2773 augmentée si les clients standards reçoivent une erreur du serveur
2774 indiquant que la requête comportait un nombre d'en-têtes trop
2777 <p>Par exemple :</p>
2779 <highlight language="config">LimitRequestFields 50</highlight>
2781 <note type="warning"><title>Avertissement</title>
2782 <p>Dans le cas des serveurs virtuels à base de noms, la valeur de
2783 cette directive est extraite du serveur virtuel par défaut (le
2784 premier de la liste) pour la paire adresse IP/port.</p>
2788 </directivesynopsis>
2791 <name>LimitRequestFieldSize</name>
2792 <description>Dédinit la taille maximale autorisée d'un en-tête de
2793 requête HTTP</description>
2794 <syntax>LimitRequestFieldSize <var>octets</var></syntax>
2795 <default>LimitRequestFieldSize 8190</default>
2796 <contextlist><context>server config</context><context>virtual host</context></contextlist>
2799 <p>Cette directive permet de définir le nombre maximum
2800 d'<var>octets</var> autorisés dans un en-tête de requête HTTP.</p>
2802 <p>La directive <directive>LimitRequestFieldSize</directive> permet
2803 à l'administrateur du serveur de définir la taille
2804 maximale autorisée d'un en-tête de requête HTTP. Pour un serveur,
2805 cette valeur doit être suffisamment grande pour contenir tout
2806 en-tête d'une requête client normale. La taille d'un champ d'en-tête
2807 de requête normal va varier selon les implémentations des clients,
2808 et en fonction des extensions que les utilisateurs
2809 configurent dans leurs navigateurs pour supporter la négociation de
2810 contenu détaillée. Les en-têtes d'authentification SPNEGO peuvent
2811 atteindre une taille de 12392 octets.</p>
2813 <p>>L'administrateur du serveur peut utiliser cette directive pour
2814 contrôler plus efficacement les comportements anormaux des requêtes
2815 des clients, ce qui lui permettra de prévenir certaines formes
2816 d'attaques par déni de service.</p>
2818 <p>Par exemple ::</p>
2820 <highlight language="config">LimitRequestFieldSize 4094</highlight>
2822 <note>Dans des conditions normales, la valeur par défaut de cette
2823 directive ne doit pas être modifiée.</note>
2825 <note type="warning"><title>Avertissement</title>
2826 <p>Dans le cas des serveurs virtuels à base de noms, la valeur de
2827 cette directive est extraite du serveur virtuel par défaut (le
2828 premier de la liste) pour lequel la paire adresse IP/port
2829 correspond le mieux.</p>
2832 </directivesynopsis>
2835 <name>LimitRequestLine</name>
2836 <description>Définit la taille maximale d'une ligne de requête
2838 <syntax>LimitRequestLine <var>octets</var></syntax>
2839 <default>LimitRequestLine 8190</default>
2840 <contextlist><context>server config</context><context>virtual host</context></contextlist>
2843 <p>Cette directive permet de définir la taille maximale autorisée
2844 pour une ligne de requête HTTP en <var>octets</var>.</p>
2846 <p>La directive <directive>LimitRequestLine</directive> permet à
2847 l'administrateur du serveur de définir la taille
2848 maximale autorisée d'une ligne de requête HTTP client. Comme une
2849 requête comporte une méthode HTTP, un URI, et une version de
2850 protocole, la directive <directive>LimitRequestLine</directive>
2851 impose une restriction sur la longueur maximale autorisée pour un
2852 URI dans une requête au niveau du serveur. Pour un serveur, cette
2853 valeur doit être suffisamment grande pour référencer les noms de
2854 toutes ses ressources, y compris toutes informations pouvant être
2855 ajoutées dans la partie requête d'une méthode <code>GET</code>.</p>
2857 <p>L'administrateur du serveur peut utiliser cette directive pour
2858 contrôler plus efficacement les comportements anormaux des requêtes
2859 des clients, ce qui lui permettra de prévenir certaines formes
2860 d'attaques par déni de service.</p>
2862 <p>Par exemple :</p>
2864 <highlight language="config">LimitRequestLine 4094</highlight>
2866 <note>Dans des conditions normales, cette directive doit conserver
2867 sa valeur par défaut.</note>
2869 <note type="warning"><title>Avertissement</title>
2870 <p>Dans le cas des serveurs virtuels à base de noms, la valeur de
2871 cette directive est extraite du serveur virtuel par défaut (le
2872 premier de la liste) pour lequel la paire adresse IP/port
2873 correspond le mieux.</p>
2877 </directivesynopsis>
2880 <name>LimitXMLRequestBody</name>
2881 <description>Définit la taille maximale du corps d'une requête au format
2883 <syntax>LimitXMLRequestBody <var>octets</var></syntax>
2884 <default>LimitXMLRequestBody 1000000</default>
2885 <contextlist><context>server config</context><context>virtual
2887 <context>directory</context><context>.htaccess</context></contextlist>
2888 <override>All</override>
2891 <p>Taille maximale (en octets) du corps d'une requête au format XML.
2892 Une valeur de <code>0</code> signifie qu'aucune limite n'est
2897 <highlight language="config">LimitXMLRequestBody 0</highlight>
2900 </directivesynopsis>
2902 <directivesynopsis type="section">
2903 <name>Location</name>
2904 <description>N'applique les directives contenues qu'aux URLs
2905 spécifiées</description>
2906 <syntax><Location
2907 <var>chemin URL</var>|<var>URL</var>> ... </Location></syntax>
2908 <contextlist><context>server config</context><context>virtual
2913 <p>La directive <directive type="section">Location</directive>
2914 limite la portée des directives contenues aux URLs définies par
2915 l'argument URL. Elle est similaire à la directive <directive
2916 type="section" module="core">Directory</directive>, et marque le
2917 début d'une section qui se termine par une directive
2918 <code></Location></code>. Les sections <directive
2919 type="section">Location</directive> sont traitées selon l'ordre dans
2920 lequel elles apparaissent dans le fichier de configuration, mais
2921 après les sections <directive
2922 type="section" module="core">Directory</directive> et la lecture des
2923 fichiers <code>.htaccess</code>, et après les sections <directive
2924 type="section" module="core">Files</directive>.</p>
2926 <p>Les sections <directive type="section">Location</directive>
2927 agissent complètement en dehors du système de fichiers. Ceci a de
2928 nombreuses conséquences. Parmi les plus importantes, on ne doit pas
2929 utiliser les sections <directive type="section">Location</directive>
2930 pour contrôler l'accès aux répertoires du système de fichiers. Comme
2931 plusieurs URLs peuvent correspondre au même répertoire du système de
2932 fichiers, un tel contrôle d'accès pourrait être contourné.</p>
2934 <p>Les directives que contient cette section seront appliquées aux
2935 requêtes si la partie chemin de l'URL satisfait à l'un au moins de
2939 <li>Le chemin spécifié correspond exactement à la partie chemin de
2942 <li>Le chemin spécifié, qui se termine par un slash, est un
2943 préfixe de la partie chemin de l'URL (traité comme une racine du
2946 <li>Le chemin spécifié, si on lui ajoute un slash de fin, est un
2947 préfixe de la partie chemin de l'URL (aussi traité comme une racine du
2952 Dans l'exemple ci-dessous, où aucun slash de fin n'est utilisé, les
2953 directives contenues dans la section s'appliqueront à /private1,
2954 /private1/ et /private1/file.txt, mais pas à /private1other.
2956 <highlight language="config">
2957 <Location "/private1">
2962 De même, dans l'exemple ci-dessous, où l'on utilise un slash de fin, les
2963 directives contenues dans la section s'appliqueront à /private2/ et
2964 à /private2/file.txt, mais pas à /private2other.
2966 <highlight language="config">
2967 <Location "/private2<em>/</em>">
2972 <note><title>Quand utiliser la section <directive
2973 type="section">Location</directive></title>
2975 <p>Vous pouvez utiliser une section <directive
2976 type="section">Location</directive> pour appliquer des directives à
2977 des contenus situés en dehors du système de fichiers. Pour les
2978 contenus situés à l'intérieur du système de fichiers, utilisez
2979 plutôt les sections <directive
2980 type="section" module="core">Directory</directive> et <directive
2981 type="section" module="core">Files</directive>. <code><Location
2982 "/"></code> constitue une exception et permet d'appliquer aisément
2983 une configuration à l'ensemble du serveur.</p>
2986 <p>Pour toutes les requêtes originales (non mandatées), l'argument
2987 URL est un chemin d'URL de la forme
2988 <code>/chemin/</code>. <em>Aucun protocole, nom d'hôte, port, ou chaîne
2989 de requête ne doivent apparaître.</em> Pour les requêtes mandatées, l'URL
2990 spécifiée doit être de la forme
2991 <code>protocole://nom_serveur/chemin</code>, et vous devez inclure
2994 <p>L'URL peut contenir des caractères génériques. Dans une chaîne
2995 avec caractères génériques, <code>?</code> correspond à un caractère
2996 quelconque, et <code>*</code> à toute chaîne de caractères. Les
2997 caractères génériques ne peuvent pas remplacer un / dans le chemin
3000 <p>On peut aussi utiliser les <glossary ref="regex">Expressions
3001 rationnelles</glossary>, moyennant l'addition d'un caractère
3002 <code>~</code>. Par exemple :</p>
3004 <highlight language="config">
3005 <Location ~ "/(extra|special)/data">
3010 <p>concernerait les URLs contenant les sous-chaîne
3011 <code>/extra/data</code> ou <code>/special/data</code>. La directive
3012 <directive type="section" module="core">LocationMatch</directive>
3013 présente un comportement identique à la version avec expressions
3014 rationnelles de la directive <directive
3015 type="section">Location</directive>, et son utilisation est
3016 préférable à l'utilisation de cette dernière pour la simple raison
3017 qu'il est difficile de distinguer <code>~</code> de <code>-</code>
3018 dans la plupart des fontes.</p>
3020 <p>La directive <directive type="section">Location</directive>
3021 s'utilise principalement avec la directive <directive
3022 module="core">SetHandler</directive>. Par exemple, pour activer les
3023 requêtes d'état, mais ne les autoriser que depuis des navigateurs
3024 appartenant au domaine <code>example.com</code>, vous pouvez
3027 <highlight language="config">
3028 <Location "/status">
3029 SetHandler server-status
3030 Require host example.com
3034 <note><title>Note à propos du slash (/)</title>
3035 <p>La signification du caractère slash dépend de l'endroit où il
3036 se trouve dans l'URL. Les utilisateurs peuvent être habitués à
3037 son comportement dans le système de fichiers où plusieurs slashes
3038 successifs sont souvent réduits à un slash unique (en d'autres
3039 termes, <code>/home///foo</code> est identique à
3040 <code>/home/foo</code>). Dans l'espace de nommage des URLs, ce
3041 n'est cependant pas toujours le cas. Pour la directive <directive
3042 type="section" module="core">LocationMatch</directive> et la
3043 version avec expressions rationnelles de la directive <directive
3044 type="section">Location</directive>, vous devez spécifier
3045 explicitement les slashes multiples si telle est votre
3048 <p>Par exemple, <code><LocationMatch "^/abc"></code> va
3049 correspondre à l'URL <code>/abc</code> mais pas à l'URL <code>
3050 //abc</code>. La directive <directive type="section"
3051 >Location</directive> sans expression rationnelle se comporte de
3052 la même manière lorsqu'elle est utilisée pour des requêtes
3053 mandatées. Par contre, lorsque la directive <directive
3054 type="section">Location</directive> sans expression rationnelle
3055 est utilisée pour des requêtes non mandatées, elle fera
3056 correspondre implicitement les slashes multiples à des slashes
3057 uniques. Par exemple, si vous spécifiez <code><Location
3058 "/abc/def"></code>, une requête de la forme
3059 <code>/abc//def</code> correspondra.</p>
3062 <seealso><a href="../sections.html">Comment fonctionnent les sections
3063 <Directory>, <Location> et <Files></a> pour une
3064 explication de la manière dont ces différentes sections se combinent
3065 entre elles à la réception d'une requête.</seealso>
3066 </directivesynopsis>
3068 <directivesynopsis type="section">
3069 <name>LocationMatch</name>
3070 <description>N'applique les directives contenues qu'aux URLs
3071 correspondant à une expression rationnelle</description>
3072 <syntax><LocationMatch
3073 <var>regex</var>> ... </LocationMatch></syntax>
3074 <contextlist><context>server config</context><context>virtual
3079 <p>La directive <directive type="section">LocationMatch</directive>
3080 limite la portée des directives contenues à l'URL spécifiée, de
3081 manière identique à la directive <directive module="core"
3082 type="section">Location</directive>. Mais son argument permettant de
3083 spécifier les URLs concernées est une <glossary
3084 ref="regex">expression rationnelle</glossary> au lieu d'une simple
3085 chaîne de caractères. Par exemple :</p>
3087 <highlight language="config">
3088 <LocationMatch "/(extra|special)/data">
3090 </LocationMatch>
3093 <p>correspondrait à toute URL contenant les sous-chaînes
3094 <code>/extra/data</code> ou <code>/special/data</code>.</p>
3096 <note><p>Si vous recherchez une URL <strong>commençant par</strong>
3097 plutôt que seulement contenant <code>/extra/data</code>, préfixez
3098 l'expression rationnelle avec un <code>^</code>.</p>
3100 <highlight language="config">
3101 <LocationMatch "^/(extra|special)/data">
3105 <p>A partir de la version 2.4.8, les groupes nommés et les
3106 références arrières sont extraits et enregistrés dans
3107 l'environnement avec leur nom en majuscules et préfixé
3108 par "MATCH_". Ceci permet
3109 de référencer des URLs dans des <a href="../expr.html">expressions</a>
3110 ou au sein de modules comme <module>mod_rewrite</module>. Pour
3111 éviter toute confusion, les références arrières numérotées (non
3112 nommées) sont ignorées. Vous devez utiliser à la place des groupes
3115 <highlight language="config">
3116 <LocationMatch "^/combined/(?<sitename>[^/]+)">
3117 require ldap-group cn=%{env:MATCH_SITENAME},ou=combined,o=Example
3118 </LocationMatch>
3122 <seealso><a href="../sections.html">Comment fonctionnent les sections
3123 <Directory>, <Location> et <Files></a> pour une
3124 explication de la manière dont ces différentes sections se combinent
3125 entre elles à la réception d'une requête.</seealso>
3126 </directivesynopsis>
3129 <name>LogLevel</name>
3130 <description>Contrôle la verbosité du journal des erreurs</description>
3131 <syntax>LogLevel [<var>module</var>:]<var>niveau</var>
3132 [<var>module</var>:<var>niveau</var>] ...
3134 <default>LogLevel warn</default>
3135 <contextlist><context>server config</context><context>virtual
3136 host</context><context>directory</context>
3138 <compatibility>La configuration du niveau de journalisation par module
3139 et par répertoire est disponible depuis la version 2.3.6 du serveur HTTP
3140 Apache</compatibility>
3142 <p>La directive <directive>LogLevel</directive> permet d'ajuster la
3143 verbosité des messages enregistrés dans les journaux d'erreur (voir
3144 la directive <directive module="core">ErrorLog</directive>
3145 directive). Les <var>niveau</var>x disponibles sont présentés
3146 ci-après, par ordre de criticité décroissante :</p>
3149 <columnspec><column width=".2"/><column width=".3"/><column width=".5"/>
3152 <th><strong>Niveau</strong> </th>
3154 <th><strong>Description</strong> </th>
3156 <th><strong>Exemple</strong> </th>
3160 <td><code>emerg</code> </td>
3162 <td>Urgences - le système est inutilisable.</td>
3164 <td>"Child cannot open lock file. Exiting"</td>
3168 <td><code>alert</code> </td>
3170 <td>Des mesures doivent être prises immédiatement.</td>
3172 <td>"getpwuid: couldn't determine user name from uid"</td>
3176 <td><code>crit</code> </td>
3178 <td>Conditions critiques.</td>
3180 <td>"socket: Failed to get a socket, exiting child"</td>
3184 <td><code>error</code> </td>
3188 <td>"Premature end of script headers"</td>
3192 <td><code>warn</code> </td>
3194 <td>Avertissements.</td>
3196 <td>"child process 1234 did not exit, sending another
3201 <td><code>notice</code> </td>
3203 <td>Evènement important mais normal.</td>
3205 <td>"httpd: caught SIGBUS, attempting to dump core in
3210 <td><code>info</code> </td>
3212 <td>Informations.</td>
3214 <td>"Server seems busy, (you may need to increase
3215 StartServers, or Min/MaxSpareServers)..."</td>
3219 <td><code>debug</code> </td>
3221 <td>Messages de débogage.</td>
3223 <td>"Opening config file ..."</td>
3226 <td><code>trace1</code> </td>
3228 <td>Messages de traces</td>
3230 <td>"proxy: FTP: control connection complete"</td>
3233 <td><code>trace2</code> </td>
3235 <td>Messages de traces</td>
3237 <td>"proxy: CONNECT: sending the CONNECT request to the remote proxy"</td>
3240 <td><code>trace3</code> </td>
3242 <td>Messages de traces</td>
3244 <td>"openssl: Handshake: start"</td>
3247 <td><code>trace4</code> </td>
3249 <td>Messages de traces</td>
3251 <td>"read from buffered SSL brigade, mode 0, 17 bytes"</td>
3254 <td><code>trace5</code> </td>
3256 <td>Messages de traces</td>
3258 <td>"map lookup FAILED: map=rewritemap key=keyname"</td>
3261 <td><code>trace6</code> </td>
3263 <td>Messages de traces</td>
3265 <td>"cache lookup FAILED, forcing new map lookup"</td>
3268 <td><code>trace7</code> </td>
3270 <td>Messages de traces, enregistrement d'une grande quantité de
3273 <td>"| 0000: 02 23 44 30 13 40 ac 34 df 3d bf 9a 19 49 39 15 |"</td>
3276 <td><code>trace8</code> </td>
3278 <td>Messages de traces, enregistrement d'une grande quantité de
3281 <td>"| 0000: 02 23 44 30 13 40 ac 34 df 3d bf 9a 19 49 39 15 |"</td>
3285 <p>Lorsqu'un niveau particulier est spécifié, les messages de tous
3286 les autres niveaux de criticité supérieure seront aussi enregistrés.
3287 <em>Par exemple</em>, si <code>LogLevel info</code> est spécifié,
3288 les messages de niveaux <code>notice</code> et <code>warn</code>
3289 seront aussi émis.</p>
3291 <p>Il est recommandé d'utiliser un niveau <code>crit</code> ou
3294 <p>Par exemple :</p>
3296 <highlight language="config">LogLevel notice</highlight>
3298 <note><title>Note</title>
3299 <p>Si la journalisation s'effectue directement dans un fichier,
3300 les messages de niveau <code>notice</code> ne peuvent pas être
3301 supprimés et sont donc toujours journalisés. Cependant, ceci ne
3302 s'applique pas lorsque la journalisation s'effectue vers
3303 <code>syslog</code>.</p>
3306 <p>Spécifier un niveau sans nom de module va attribuer ce niveau à
3307 tous les modules. Spécifier un niveau avec nom de module va
3308 attribuer ce niveau à ce module seulement. Il est possible de
3309 spécifier un module par le nom de son fichier source ou par son
3310 identificateur, avec ou sans le suffixe <code>_module</code>. Les
3311 trois spécifications suivantes sont donc équivalentes :</p>
3313 <highlight language="config">
3314 LogLevel info ssl:warn
3315 LogLevel info mod_ssl.c:warn
3316 LogLevel info ssl_module:warn
3319 <p>Il est aussi possible d'attribuer un niveau de journalisation par
3322 <highlight language="config">
3324 <Directory "/usr/local/apache/htdocs/app">
3330 La configuration du niveau de journalisation par répertoire
3331 n'affecte que les messages journalisés après l'interprétation de
3332 la requête et qui sont associés à cette dernière. Les messages
3333 de journalisation associés à la connexion ou au serveur ne sont
3337 <seealso><directive module="core">ErrorLog</directive></seealso>
3338 <seealso><directive module="core">ErrorLogFormat</directive></seealso>
3339 <seealso><a href="../logs.html">Journaux du serveur HTTP Apache</a></seealso>
3340 </directivesynopsis>
3343 <name>MaxKeepAliveRequests</name>
3344 <description>Nombre de requêtes permises pour une connexion
3345 persistante</description>
3346 <syntax>MaxKeepAliveRequests <var>nombre</var></syntax>
3347 <default>MaxKeepAliveRequests 100</default>
3348 <contextlist><context>server config</context><context>virtual
3353 <p>La directive <directive>MaxKeepAliveRequests</directive> permet
3354 de limiter le nombre de requêtes autorisées par connexion lorsque
3355 <directive module="core" >KeepAlive</directive> est à "on". Si sa
3356 valeur est <code>0</code>, le nombre de requêtes autorisées est
3357 illimité. Il est recommandé de définir une valeur assez haute pour
3358 des performances du serveur maximales.</p>
3360 <p>Par exemple :</p>
3362 <highlight language="config">MaxKeepAliveRequests 500</highlight>
3364 </directivesynopsis>
3367 <name>MaxRanges</name>
3368 <description>Nombre de segments de données autorisé avant le renvoi de
3369 l'intégralité de la ressource</description>
3370 <syntax>MaxRanges default | unlimited | none | <var>nombre de segments</var></syntax>
3371 <default>MaxRanges 200</default>
3372 <contextlist><context>server config</context><context>virtual host</context>
3373 <context>directory</context>
3375 <compatibility>Disponible depuis la version 2.3.15 du serveur HTTP
3376 Apache</compatibility>
3379 <p>La directive <directive>MaxRanges</directive> permet de limiter
3380 le nombre de segments de données que le serveur va renvoyer au
3381 client. Si un nombre de segments plus important est demandé, la
3382 ressource sera renvoyée dans son intégralité.</p>
3385 <dt><strong>default</strong></dt>
3386 <dd>Limite le nombre de segments de données à 200 (valeur par
3387 défaut définie à la compilation).</dd>
3389 <dt><strong>none</strong></dt>
3390 <dd>Les en-têtes Range sont ignorés.</dd>
3392 <dt><strong>unlimited</strong></dt>
3393 <dd>Le nombre de segments de données est illimité.</dd>
3395 <dt><var>nombre de segments</var></dt>
3396 <dd>Un nombre positif représentera la nombre de segments de
3397 données maximal que le serveur renverra au client.</dd>
3400 </directivesynopsis>
3403 <name>MaxRangeOverlaps</name>
3404 <description>Nombre de chevauchements de segments de données autorisé
3405 (par exemple <code>100-200,150-300</code>) avant le renvoi de la
3406 ressource complète</description>
3407 <syntax>MaxRangeOverlaps default | unlimited | none | <var>nombre de
3408 chevauchements</var></syntax>
3409 <default>MaxRangeOverlaps 20</default>
3410 <contextlist><context>server config</context><context>virtual host</context>
3411 <context>directory</context>
3413 <compatibility>Disponible depuis la version 2.3.15 du serveur HTTP
3414 Apache</compatibility>
3417 <p>La directive <directive>MaxRangeOverlaps</directive> permet
3418 de limiter le nombre de chevauchements de segments de données HTTP
3419 autorisé par le serveur. Si le nombre de
3420 chevauchements de segments demandé est supérieur au nombre maximal
3421 autorisé, la ressource sera renvoyée dans son intégralité.</p>
3424 <dt><strong>default</strong></dt>
3425 <dd>Limite le nombre de chevauchements de segments à la valeur
3426 par défaut 20 définie à la compilation.</dd>
3428 <dt><strong>none</strong></dt>
3429 <dd>Aucun chevauchement de segment n'est autorisé.</dd>
3431 <dt><strong>unlimited</strong></dt>
3432 <dd>Le nombre de chevauchements de segments est illimité.</dd>
3434 <dt><var>number-of-ranges</var></dt>
3435 <dd>Un nombre positif représente le nombre maximal de
3436 chevauchements de segments autorisé par le serveur.</dd>
3439 </directivesynopsis>
3442 <name>MaxRangeReversals</name>
3443 <description>Nombre d'inversions d'ordre autorisé dans la spécification des
3444 segments de données (par exemple <code>100-200,50-70</code>) avant le renvoi de la
3445 ressource complète</description>
3446 <syntax>MaxRangeReversals default | unlimited | none | <var>nombre
3447 d'inversions</var></syntax>
3448 <default>MaxRangeReversals 20</default>
3449 <contextlist><context>server config</context><context>virtual host</context>
3450 <context>directory</context>
3452 <compatibility>Disponible depuis la version 2.3.15 du serveur HTTP
3453 Apache</compatibility>
3456 <p>La directive <directive>MaxRangeReversals</directive> permet
3457 de limiter le nombre d'inversions d'ordre dans la spécification
3458 des segments de données HTTP
3459 autorisé par le serveur. Si le nombre
3460 d'inversions demandé est supérieur au nombre maximal
3461 autorisé, la ressource sera renvoyée dans son intégralité.</p>
3464 <dt><strong>default</strong></dt>
3465 <dd>Limite le nombre d'inversions à la valeur
3466 par défaut 20 définie à la compilation.</dd>
3468 <dt><strong>none</strong></dt>
3469 <dd>Aucune inversion n'est autorisée.</dd>
3471 <dt><strong>unlimited</strong></dt>
3472 <dd>Le nombre d'inversions est illimité.</dd>
3474 <dt><var>number-of-ranges</var></dt>
3475 <dd>Un nombre positif représente le nombre maximal
3476 d'inversions autorisé par le serveur.</dd>
3479 </directivesynopsis>
3483 <description>Définit les mécanismes de mutex et le repertoire du fichier
3484 verrou pour tous les mutex ou seulement les mutex spécifiés</description>
3485 <syntax>Mutex <var>mécanisme</var> [default|<var>nom-mutex</var>] ... [OmitPID]</syntax>
3486 <default>Mutex default</default>
3487 <contextlist><context>server config</context></contextlist>
3488 <compatibility>Disponible depuis la version 2.3.4 du serveur HTTP Apache</compatibility>
3491 <p>La directive <directive>Mutex</directive> permet de définir le
3492 mécanisme de mutex, et éventuellement le répertoire du fichier
3493 verrou que les modules et httpd utilisent pour sérialiser l'accès aux
3494 ressources. Spécifiez <code>default</code> comme second argument
3495 pour modifier la configuration de tous les mutex ; spécifiez un nom
3496 de mutex (voir la table ci-dessous) comme second argument pour
3497 ne modifier que la configuration de ce mutex.</p>
3499 <p>La directive <directive>Mutex</directive> est typiquement
3500 utilisée dans les situations exceptionnelles suivantes :</p>
3503 <li>choix d'un autre mécanisme de mutex lorsque le mécanisme par
3504 défaut sélectionné par <glossary>APR</glossary> présente un
3505 problème de fonctionnement ou de performances.</li>
3507 <li>choix d'un autre répertoire utilisé par les mutex à base de
3508 fichier lorsque le répertoire par défaut ne supporte pas le
3512 <note><title>Modules supportés</title>
3513 <p>Cette directive ne configure que les mutex qui ont été
3514 enregistrés avec le serveur de base via l'API
3515 <code>ap_mutex_register()</code>. Tous les modules fournis avec
3516 httpd supportent la directive <directive>Mutex</directive>, mais il
3517 n'en sera pas forcément de même pour les modules tiers.
3518 Reportez-vous à la documentation du module tiers considéré afin de
3519 déterminer le(s) nom(s) de mutex qui pourront être définis si la
3520 directive est supportée.</p>
3525 <p>Les <em>mécanismes</em> de mutex disponibles sont les suivants :</p>
3527 <li><code>default | yes</code>
3528 <p>C'est l'implémentation du verrouillage par défaut, telle
3529 qu'elle est définie par <glossary>APR</glossary>. On peut
3530 afficher l'implémentation du verrouillage par défaut via la
3531 commande <program>httpd</program> avec l'option <code>-V</code>.</p></li>
3533 <li><code>none | no</code>
3534 <p>Le mutex est désactivé, et cette valeur n'est permise pour un
3535 mutex que si le module indique qu'il s'agit d'un choix valide.
3536 Consultez la documentation du module pour plus d'informations.</p></li>
3538 <li><code>posixsem</code>
3539 <p>Une variante de mutex basée sur un sémaphore Posix.</p>
3541 <note type="warning"><title>Avertissement</title>
3542 <p>La propriété du sémaphore n'est pas restituée si un thread du
3543 processus gérant le mutex provoque une erreur de segmentation,
3544 ce qui provoquera un blocage du serveur web.</p>
3548 <li><code>sysvsem</code>
3549 <p>Une variante de mutex basée sur un sémaphore IPC SystemV.</p>
3551 <note type="warning"><title>Avertissement</title>
3552 <p>Il peut arriver que les sémaphores SysV soient conservés si le
3553 processus se crashe avant que le sémaphore ne soit supprimé.</p>
3556 <note type="warning"><title>Sécurité</title>
3557 <p>L'API des sémaphores permet les attaques par déni de service
3558 par tout programme CGI s'exécutant sous le même uid que le
3559 serveur web (autrement dit tous les programmes CGI, à moins que
3560 vous n'utilisiez un programme du style <program>suexec</program>
3561 ou <code>cgiwrapper</code>).</p>
3565 <li><code>sem</code>
3566 <p>Sélection de la "meilleure" implémentation des sémaphores
3567 disponible ; le choix s'effectue entre les sémaphores posix et
3568 IPC SystemV, dans cet ordre.</p></li>
3570 <li><code>pthread</code>
3571 <p>Une variante de mutex à base de mutex de thread Posix
3572 inter-processus.</p>
3574 <note type="warning"><title>Avertissement</title>
3575 <p>Sur la plupart des systèmes, si un processus enfant se
3576 termine anormalement alors qu'il détenait un mutex qui utilise
3577 cette implémentation, le serveur va se bloquer et cesser de
3578 répondre aux requêtes. Dans ce cas, un redémarrage manuel est
3579 nécessaire pour récupérer le mutex.</p>
3580 <p>Solaris et Linux constituent des exceptions notables, en ceci qu'ils fournissent
3581 un mécanisme qui permet en général de récupérer le mutex après
3582 l'arrêt anormal d'un processus enfant qui détenait le mutex.</p>
3583 <p>Si votre système est compatible POSIX ou implémente la fonction
3584 <code>pthread_mutexattr_setrobust_np()</code>, vous devriez
3585 pouvoir utiliser l'option <code>pthread</code> sans problème.</p>
3589 <li><code>fcntl:/chemin/vers/mutex</code>
3590 <p>Une variante de mutex utilisant un fichier verrou physique et
3591 la fonction <code>fcntl()</code>.</p>
3593 <note type="warning"><title>Avertissement</title>
3594 <p>Lorsqu'on utilise plusieurs mutex basés sur ce mécanisme dans
3595 un environnement multi-processus, multi-thread, des erreurs de
3596 blocage (EDEADLK) peuvent être rapportées pour des opérations de
3597 mutex valides si la fonction <code>fcntl()</code> ne gère pas
3598 les threads, comme sous Solaris.</p>
3602 <li><code>flock:/chemin/vers/mutex</code>
3603 <p>Méthode similaire à <code>fcntl:/chemin/vers/mutex</code>,
3604 mais c'est la fonction <code>flock()</code> qui est utilisée
3605 pour gérer le verrouillage par fichier.</p></li>
3607 <li><code>file:/chemin/vers/mutex</code>
3608 <p>Sélection de la "meilleure" implémentation de verrouillage
3609 par fichier disponible ; le choix s'effectue entre
3610 <code>fcntl</code> et <code>flock</code>, dans cet ordre.</p></li>
3613 <p>La plupart des mécanismes ne sont disponibles que sur les
3614 plate-formes où ces dernières et <glossary>APR</glossary> les
3615 supportent. Les mécanismes qui ne sont pas disponibles sur toutes
3616 les plate-formes sont <em>posixsem</em>,
3617 <em>sysvsem</em>, <em>sem</em>, <em>pthread</em>, <em>fcntl</em>,
3618 <em>flock</em>, et <em>file</em>.</p>
3620 <p>Avec les mécanismes à base de fichier <em>fcntl</em> et
3621 <em>flock</em>, le chemin, s'il est fourni, est un répertoire dans
3622 lequel le fichier verrou sera créé. Le répertoire par
3623 défaut est le répertoire d'exécution de httpd relatif à la
3624 directive <directive module="core">ServerRoot</directive>.
3625 Utilisez toujours un système
3626 de fichiers local sur disque pour <code>/chemin/vers/mutex</code> et
3627 jamais un répertoire se trouvant dans un système de fichiers NFS ou
3628 AFS. Le nom de base du fichier se composera du type de mutex, d'une
3629 chaîne optionnelle correspondant à l'instance et fournie par le
3630 module ; et, sauf si le mot-clé <code>OmitPID</code> a été spécifié,
3631 l'identificateur du processus parent httpd sera ajouté afin de
3632 rendre le nom du fichier unique, évitant ainsi tout conflit lorsque
3633 plusieurs instances d'httpd partagent le même répertoire de
3634 verrouillage. Par exemple, si le nom de mutex est
3635 <code>mpm-accept</code>, et si le répertoire de verrouillage est
3636 <code>/var/httpd/locks</code>, le nom du fichier verrou pour
3637 l'instance httpd dont le processus parent a pour identifiant 12345
3638 sera <code>/var/httpd/locks/mpm-accept.12345</code>.</p>
3640 <note type="warning"><title>Sécurité</title>
3641 <p>Il est conseillé d'<em>éviter</em> de placer les fichiers mutex
3642 dans un répertoire où tout le monde peut écrire comme
3643 <code>/var/tmp</code>, car quelqu'un pourrait initier une attaque
3644 par déni de service et empêcher le serveur de démarrer en créant un
3645 fichier verrou possédant un nom identique à celui que le serveur va
3646 tenter de créer.</p>
3649 <p>La table suivante décrit les noms de mutex utilisés par httpd et
3650 ses modules associés.</p>
3652 <table border="1" style="zebra">
3656 <th>Ressource protégée</th>
3659 <td><code>mpm-accept</code></td>
3660 <td>modules MPM <module>prefork</module> et <module>worker</module></td>
3661 <td>connexions entrantes, afin d'éviter le problème de
3662 l'afflux de requêtes ; pour plus d'informations, voir la
3664 href="../misc/perf-tuning.html">Amélioration des
3665 performances</a></td>
3668 <td><code>authdigest-client</code></td>
3669 <td><module>mod_auth_digest</module></td>
3670 <td>liste de clients en mémoire partagée</td>
3673 <td><code>authdigest-opaque</code></td>
3674 <td><module>mod_auth_digest</module></td>
3675 <td>compteur en mémoire partagée</td>
3678 <td><code>ldap-cache</code></td>
3679 <td><module>mod_ldap</module></td>
3680 <td>cache de résultat de recherche LDAP</td>
3683 <td><code>rewrite-map</code></td>
3684 <td><module>mod_rewrite</module></td>
3685 <td>communication avec des programmes externes
3686 d'associations de valeurs, afin d'éviter les interférences
3687 d'entrées/sorties entre plusieurs requêtes</td>
3690 <td><code>ssl-cache</code></td>
3691 <td><module>mod_ssl</module></td>
3692 <td>cache de session SSL</td>
3695 <td><code>ssl-stapling</code></td>
3696 <td><module>mod_ssl</module></td>
3697 <td>cache de l'étiquetage OCSP ("OCSP stapling")</td>
3700 <td><code>watchdog-callback</code></td>
3701 <td><module>mod_watchdog</module></td>
3702 <td>fonction de rappel d'un module client particulier</td>
3706 <p>Le mot-clé <code>OmitPID</code> permet d'empêcher l'addition de
3707 l'identifiant du processus httpd parent au nom du fichier verrou.</p>
3710 <p>Dans l'exemple suivant, le mécanisme de mutex pour le mutex
3711 mpm-accept est modifié pour passer du mécanisme par défaut au
3712 mécanisme <code>fcntl</code>, avec le fichier verrou associé créé
3713 dans le répertoire <code>/var/httpd/locks</code>. Le mécanisme de
3714 mutex par défaut pour tous les autres mutex deviendra
3715 <code>sysvsem</code>.</p>
3717 <highlight language="config">
3718 Mutex sysvsem default
3719 Mutex fcntl:/var/httpd/locks mpm-accept
3722 </directivesynopsis>
3725 <name>NameVirtualHost</name>
3726 <description>OBSOLETE : Définit une adresse IP pour les serveurs virtuels à base de
3728 <syntax>NameVirtualHost <var>adresse</var>[:<var>port</var>]</syntax>
3729 <contextlist><context>server config</context></contextlist>
3733 <p>Avant la version 2.3.11, il était nécessaire de définir une
3734 directive <directive>NameVirtualHost</directive> pour indiquer au
3735 serveur qu'une paire adresse IP/port particulière pouvait être
3736 utilisée comme serveur virtuel à base de nom. Depuis la version
3737 2.3.11, chaque fois qu'une paire adresse IP/port est utilisée dans
3738 plusieurs serveurs virtuels, l'hébergement virtuel à base de nom est
3739 automatiquement activé pour cette adresse.</p>
3741 <p>Cette directive n'a actuellement plus aucun effet.</p>
3744 <seealso><a href="../vhosts/">Documentation sur les serveurs
3745 virtuels</a></seealso>
3747 </directivesynopsis>
3750 <name>Options</name>
3751 <description>Définit les fonctionnalités disponibles pour un répertoire
3752 particulier</description>
3754 [+|-]<var>option</var> [[+|-]<var>option</var>] ...</syntax>
3755 <default>Options FollowSymlinks</default>
3756 <contextlist><context>server config</context><context>virtual
3758 <context>directory</context><context>.htaccess</context>
3760 <override>Options</override>
3761 <compatibility>Avec la version 2.3.11, la valeur par défaut passe de All
3762 à FollowSymlinks</compatibility>
3765 <p>La directive <directive>Options</directive> permet de définir
3766 les fonctionnalités de serveur disponibles pour un répertoire
3769 <p><var>option</var> peut être défini à <code>None</code>, auquel
3770 cas aucune fonctionnalité spécifique n'est activée, ou comprendre
3771 une ou plusieurs des options suivantes :</p>
3774 <dt><code>All</code></dt>
3776 <dd>Toutes les options excepté <code>MultiViews</code>.</dd>
3778 <dt><code>ExecCGI</code></dt>
3780 <dd>L'exécution de scripts CGI à l'aide du module
3781 <module>mod_cgi</module> est permise.</dd>
3783 <dt><code>FollowSymLinks</code></dt>
3787 Le serveur va suivre les liens symboliques dans le répertoire
3788 concerné. Il s'agit de la valeur par défaut.
3790 <p>Bien que le serveur suive les liens symboliques, il ne modifie
3791 <em>pas</em> le nom de chemin concerné défini par la section
3792 <directive type="section"
3793 module="core">Directory</directive>.</p>
3795 <p>Les options <code>FollowSymLinks</code> et
3796 <code>SymLinksIfOwnerMatch</code> ne fonctionnent que dans les
3797 sections <directive type="section"
3798 module="core">Directory</directive> ou les fichiers
3799 <code>.htaccess</code>.</p>
3801 <p>Le fait d'omettre cette option ne doit pas être considéré comme
3802 une mesure de sécurité efficace, car il existe toujours une
3803 situation de compétition (race condition) entre l'instant où l'on
3804 vérifie qu'un chemin n'est pas un lien symbolique, et l'instant où
3805 l'on utilise effectivement ce chemin.</p>
3808 <dt><code>Includes</code></dt>
3811 Les inclusions côté serveur (SSI) à l'aide du module
3812 <module>mod_include</module> sont autorisées.</dd>
3814 <dt><code>IncludesNOEXEC</code></dt>
3818 Les inclusions côté serveur (SSI) sont permises, mais <code>#exec
3819 cmd</code> et <code>#exec cgi</code> sont désactivés.
3820 L'utilisation de <code>#include virtual</code> pour les scripts
3821 CGI est cependant toujours possible depuis des répertoires
3822 définis par <directive
3823 module="mod_alias">ScriptAlias</directive>.</dd>
3825 <dt><code>Indexes</code></dt>
3828 Si une URL requise correspond au répertoire concerné, et si aucun
3829 <directive module="mod_dir">DirectoryIndex</directive> (<em>par
3830 exemple</em> <code>index.html</code>) n'est défini pour ce
3831 répertoire, le module <module>mod_autoindex</module> va renvoyer
3832 un listing formaté du répertoire.</dd>
3834 <dt><code>MultiViews</code></dt>
3837 Les vues multiples ("multiviews") à <a
3838 href="../content-negotiation.html">contenu négocié</a> à l'aide du
3839 module <module>mod_negotiation</module> sont autorisées.
3840 <note><title>Note</title> <p>Cette option est ignorée si elle est
3841 définie en tout autre endroit qu'une section <directive
3842 module="core" type="section">Directory</directive>, car
3843 <module>mod_negotiation</module> a besoin de ressources réelles
3844 pour effectuer ses comparaisons et ses évaluations.</p></note>
3848 <dt><code>SymLinksIfOwnerMatch</code></dt>
3850 <dd>Le serveur ne suivra que les liens symboliques qui renvoient
3851 vers un fichier ou un répertoire dont le propriétaire est le même
3854 <note><title>Note</title>
3855 <p>Les options <code>FollowSymLinks</code> et
3856 <code>SymLinksIfOwnerMatch</code> ne fonctionnent que dans les
3857 sections <directive type="section"
3858 module="core">Directory</directive> ou les fichiers
3859 <code>.htaccess</code>.</p>
3861 <p>Le fait d'omettre cette option ne doit pas être considéré comme
3862 une mesure de sécurité efficace, car il existe toujours une
3863 situation de compétition (race condition) entre l'instant où l'on
3864 vérifie qu'un chemin n'est pas un lien symbolique, et l'instant où
3865 l'on utilise effectivement ce chemin.</p>
3869 <p>Normalement, si plusieurs directives
3870 <directive>Options</directive> peuvent s'appliquer à un répertoire,
3871 c'est la plus spécifique qui est utilisée et les autres sont
3872 ignorées ; les options ne sont pas fusionnées (voir <a
3873 href="../sections.html#merging">comment les sections sont
3874 fusionnées</a>). Elles le sont cependant si <em>toutes</em> les
3875 options de la directive <directive>Options</directive> sont
3876 précédées d'un symbole <code>+</code> ou <code>-</code>. Toute
3877 option précédée d'un <code>+</code> est ajoutée à la liste des
3878 options courantes de manière forcée et toute option précédée d'un
3879 <code>-</code> est supprimée de la liste des options courantes de la
3882 <note><title>Note</title>
3883 <p>Mélanger des <directive>Options</directive> avec <code>+</code>
3884 ou <code>-</code> avec des <directive>Options</directive> sans
3885 <code>+</code> ou <code>-</code> constitue une erreur de syntaxe, et
3886 la vérification de la syntaxe au cours du démarrage du serveur fera
3887 échouer ce dernier.</p>
3890 <p>Par exemple, sans aucun symbole <code>+</code> et <code>-</code>
3893 <highlight language="config">
3894 <Directory "/web/docs">
3895 Options Indexes FollowSymLinks
3898 <Directory "/web/docs/spec">
3903 <p>ici, seule l'option <code>Includes</code> sera prise en compte
3904 pour le répertoire <code>/web/docs/spec</code>. Par contre, si la
3905 seconde directive <directive>Options</directive> utilise les
3906 symboles <code>+</code> et <code>-</code> :</p>
3908 <highlight language="config">
3909 <Directory "/web/docs">
3910 Options Indexes FollowSymLinks
3913 <Directory "/web/docs/spec">
3914 Options +Includes -Indexes
3918 <p>alors, les options <code>FollowSymLinks</code> et
3919 <code>Includes</code> seront prises en compte pour le répertoire
3920 <code>/web/docs/spec</code>.</p>
3922 <note><title>Note</title>
3923 <p>L'utilisation de <code>-IncludesNOEXEC</code> ou
3924 <code>-Includes</code> désactive complètement les inclusions côté
3925 serveur sans tenir compte des définitions précédentes.</p>
3928 <p>En l'absence de toute définition d'options, la valeur par défaut
3929 est <code>FollowSymlinks</code>.</p>
3931 </directivesynopsis>
3934 <name>Protocol</name>
3935 <description>Protocole pour une socket d'écoute</description>
3936 <syntax>Protocol <var>protocole</var></syntax>
3937 <contextlist><context>server config</context><context>virtual host</context></contextlist>
3938 <compatibility>Disponible depuis la version 2.1.5 d'Apache, mais
3939 seulement depuis la version 2.3.3 sous Windows.</compatibility>
3942 <p>Cette directive permet de spécifier le protocole utilisé pour une
3943 socket d'écoute particulière. Le protocole sert à déterminer quel
3944 module doit traiter une requête, et d'appliquer les optimisations
3945 spécifiques au protocole via la directive
3946 <directive>AcceptFilter</directive>.</p>
3948 <p>Vous ne devez définir le protocole que si vous travaillez avec
3949 des ports non standards ; dans le cas général, le protocole
3950 <code>http</code> est associé au port 80 et le protocole
3951 <code>https</code> au port 443.</p>
3953 <p>Par exemple, si vous travaillez avec le protocole
3954 <code>https</code> sur un port non standard, spécifiez le protocole
3955 de manière explicite :</p>
3957 <highlight language="config">Protocol https</highlight>
3959 <p>Vous pouvez aussi spécifier le protocole via la directive
3960 <directive module="mpm_common">Listen</directive>.</p>
3962 <seealso><directive module="core">AcceptFilter</directive></seealso>
3963 <seealso><directive module="mpm_common">Listen</directive></seealso>
3964 </directivesynopsis>
3967 <name>Protocols</name>
3968 <description>Protocoles disponibles pour un serveur virtuel ou non</description>
3969 <syntax>Protocols <var>protocole</var> ...</syntax>
3970 <default>Protocols http/1.1</default>
3971 <contextlist><context>server config</context><context>virtual host</context></contextlist>
3972 <compatibility>Disponible à partir de la version 2.4.17 du serveur
3973 HTTP Apache.</compatibility>
3976 <p>Cette directive permet de spécifier la liste des protocoles
3977 supportés par un serveur virtuel ou non. Cette liste énumère les
3978 protocoles qu'un client sera autorisé à négocier avec ce
3982 seul le protocole http/1.1 est disponible (compatible avec les
3983 clients http/1.0 et http/0.9). Par conséquent, vous devez
3984 fournir cette liste si vous voulez étendre les protocoles
3985 disponibles pour le serveur.</p>
3987 <p>Par exemple, si vous voulez autoriser le protocole
3988 HTTP/2 pour un serveur avec TLS, utilisez
3989 cette directive comme suit :</p>
3991 <highlight language="config">
3992 Protocols h2 http/1.1
3995 <p>Les protocoles valides sont <code>http/1.1</code> pour les
3996 connexions http et https, <code>h2</code> pour les connections
3997 https et <code>h2c</code> pour les connexions http. D'autres
3998 modules peuvent fournir d'autres protocoles.</p>
4000 <p>Spécifier des protocoles non disponibles ou désactivés n'aura
4001 aucun effet, et ceux-ci seront simplement ignorés.</p>
4003 <p>Si un serveur virtuel ne possède pas de directive Protocols
4004 propre, il hérite des protocoles spécifiés pour le serveur
4005 principal. Autrement dit, les directives Protocols définies au
4006 niveau d'un serveur virtuel remplacent celles définies au niveau
4007 du serveur principal.
4011 <seealso><directive module="core">ProtocolsHonorOrder</directive></seealso>
4012 </directivesynopsis>
4016 <name>ProtocolsHonorOrder</name>
4017 <description>Détermine qui du client ou du serveur détermine l'ordre
4018 des protocoles au cours de la négociation de la connexion</description>
4019 <syntax>ProtocolsHonorOrder On|Off</syntax>
4020 <default>ProtocolsHonorOrder On</default>
4021 <contextlist><context>server config</context><context>virtual host</context></contextlist>
4022 <compatibility>Disponible à partir de la version 2.4.17 du serveur
4023 HTTP Apache.</compatibility>
4026 <p>Cette directive permet de définir si le serveur doit tenir
4027 compte de l'ordre des protocoles définis par la directive
4028 <directive>Protocols</directive>.</p>
4030 <p>Si cette directive est définie à Off, l'ordre de la liste des
4031 protocoles fournie par le client l'emporte sur l'ordre défini
4032 dans la configuration du serveur.</p>
4034 <p>Si la directive <directive>ProtocolsHonorOrder</directive>
4035 est définie à <code>on</code> (valeur par défaut),
4036 il n'est pas tenu compte de l'ordre de la liste des protocoles
4037 fournie par le client, et seul l'ordre de la liste des protocles
4038 définie au niveau du serveur influera la
4039 négociation du protocole.</p>
4042 <seealso><directive module="core">Protocols</directive></seealso>
4043 </directivesynopsis>
4046 <name>RLimitCPU</name>
4047 <description>Limite le temps CPU alloué aux processus initiés par les
4048 processus enfants d'Apache httpd</description>
4049 <syntax>RLimitCPU <var>secondes</var>|max [<var>secondes</var>|max]</syntax>
4050 <default>Non défini ; utilise les valeurs par défaut du système
4051 d'exploitation</default>
4052 <contextlist><context>server config</context><context>virtual
4054 <context>directory</context><context>.htaccess</context></contextlist>
4055 <override>All</override>
4058 <p>Prend 1 ou 2 paramètres. Le premier definit la limite de
4059 consommation de ressources pour tous les processus, et le second la
4060 consommation de ressources maximale. Les deux paramètres peuvent
4061 contenir soit un nombre, soit <code>max</code> pour indiquer au
4062 serveur que la limite de consommation correspond à la valeur
4063 maximale autorisée par la configuration du système d'exploitation.
4064 Pour augmenter la consommation maximale de ressources, le serveur
4065 doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa
4066 phase de démarrage.</p>
4068 <p>Cette directive s'applique aux processus initiés par les
4069 processus enfants d'Apache httpd qui traitent les requêtes, et non aux
4070 processus enfants eux-mêmes. Sont concernés les scripts CGI et les
4071 commandes exec des SSI, mais en aucun cas les processus initiés par
4072 le processus parent d'Apache httpd comme les journalisations redirigées
4073 vers un programme.</p>
4075 <p>Les limites de ressources CPU sont exprimées en secondes par
4078 <seealso><directive module="core">RLimitMEM</directive></seealso>
4079 <seealso><directive module="core">RLimitNPROC</directive></seealso>
4080 </directivesynopsis>
4083 <name>RLimitMEM</name>
4084 <description>Limite la mémoire allouée aux processus initiés par les
4085 processus enfants d'Apache httpd</description>
4086 <syntax>RLimitMEM <var>octets</var>|max [<var>octets</var>|max]</syntax>
4087 <default>Non défini ; utilise les valeurs par défaut du système
4088 d'exploitation</default>
4089 <contextlist><context>server config</context><context>virtual
4091 <context>directory</context><context>.htaccess</context></contextlist>
4092 <override>All</override>
4095 <p>Prend 1 ou 2 paramètres. Le premier definit la limite de
4096 consommation de ressources pour tous les processus, et le second la
4097 consommation de ressources maximale. Les deux paramètres peuvent
4098 contenir soit un nombre, soit <code>max</code> pour indiquer au
4099 serveur que la limite de consommation correspond à la valeur
4100 maximale autorisée par la configuration du système d'exploitation.
4101 Pour augmenter la consommation maximale de ressources, le serveur
4102 doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa
4103 phase de démarrage.</p>
4105 <p>Cette directive s'applique aux processus initiés par les
4106 processus enfants d'Apache httpd qui traitent les requêtes, et non aux
4107 processus enfants eux-mêmes. Sont concernés les scripts CGI et les
4108 commandes exec des SSI, mais en aucun cas les processus initiés par
4109 le processus parent d'Apache httpd comme les journalisations redirigées
4110 vers un programme.</p>
4112 <p>Les limites de ressources mémoire sont exprimées en octets par
4115 <seealso><directive module="core">RLimitCPU</directive></seealso>
4116 <seealso><directive module="core">RLimitNPROC</directive></seealso>
4117 </directivesynopsis>
4120 <name>RLimitNPROC</name>
4121 <description>Limite le nombre de processus qui peuvent être initiés par
4122 les processus initiés par les processus enfants d'Apache httpd</description>
4123 <syntax>RLimitNPROC <var>nombre</var>|max [<var>nombre</var>|max]</syntax>
4124 <default>Unset; uses operating system defaults</default>
4125 <contextlist><context>server config</context><context>virtual
4127 <context>directory</context><context>.htaccess</context></contextlist>
4128 <override>All</override>
4131 <p>Prend 1 ou 2 paramètres. Le premier definit la limite de
4132 consommation de ressources pour tous les processus, et le second la
4133 consommation de ressources maximale. Les deux paramètres peuvent
4134 contenir soit un nombre, soit <code>max</code> pour indiquer au
4135 serveur que la limite de consommation correspond à la valeur
4136 maximale autorisée par la configuration du système d'exploitation.
4137 Pour augmenter la consommation maximale de ressources, le serveur
4138 doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa
4139 phase de démarrage.</p>
4141 <p>Cette directive s'applique aux processus initiés par les
4142 processus enfants d'Apache httpd qui traitent les requêtes, et non aux
4143 processus enfants eux-mêmes. Sont concernés les scripts CGI et les
4144 commandes exec des SSI, mais en aucun cas les processus initiés par
4145 le processus parent d'Apache httpd comme les journalisations redirigées
4146 vers un programme.</p>
4148 <p>Les limites des processus contrôlent le nombre de processus par
4151 <note><title>Note</title>
4152 <p>Si les processus CGI s'exécutent sous le même
4153 utilisateur que celui du serveur web, cette
4154 directive va limiter le nombre de processus que le serveur
4155 pourra lui-même créer. La présence de messages
4156 <strong><code>cannot fork</code></strong> dans le journal des
4157 erreurs indiquera que la limite est atteinte.</p>
4160 <seealso><directive module="core">RLimitMEM</directive></seealso>
4161 <seealso><directive module="core">RLimitCPU</directive></seealso>
4162 </directivesynopsis>
4165 <name>ScriptInterpreterSource</name>
4166 <description>Permet de localiser l'interpréteur des scripts
4168 <syntax>ScriptInterpreterSource Registry|Registry-Strict|Script</syntax>
4169 <default>ScriptInterpreterSource Script</default>
4170 <contextlist><context>server config</context><context>virtual
4172 <context>directory</context><context>.htaccess</context></contextlist>
4173 <override>FileInfo</override>
4174 <compatibility>Win32 seulement.</compatibility>
4177 <p>Cette directive permet de contrôler la méthode qu'utilise Apache
4178 httpd pour trouver l'interpréteur destiné à exécuter les scripts CGI. La
4179 définition par défaut est <code>Script</code> : ceci indique à
4180 Apache httpd qu'il doit utiliser l'interpréteur précisé dans la ligne
4181 shebang du script (la première ligne, commençant par
4182 <code>#!</code>). Sur les systèmes Win32, cette ligne ressemble
4183 souvent à ceci :</p>
4185 <highlight language="perl">#!C:/Perl/bin/perl.exe</highlight>
4187 <p>ou simplement, dans le cas où <code>perl</code> est dans le
4188 <code>PATH</code> :</p>
4190 <highlight language="perl">#!perl</highlight>
4192 <p>Avec <code>ScriptInterpreterSource Registry</code>, Windows va
4193 effectuer une recherche dans l'arborescence
4194 <code>HKEY_CLASSES_ROOT</code> de la base de registre avec comme
4195 mot-clé l'extension du fichier contenant le script (par exemple
4196 <code>.pl</code>). C'est la commande définie par la sous-clé de
4197 registre <code>Shell\ExecCGI\Command</code> ou, si elle n'existe
4198 pas, la sous-clé <code>Shell\Open\Command</code> qui est utilisée
4199 pour ouvrir le fichier du script. Si ces clés de registre ne sont
4200 pas trouvées, Apache httpd utilise la méthode de l'option
4201 <code>Script</code>.</p>
4203 <note type="warning"><title>Sécurité</title>
4204 <p>Soyez prudent si vous utilisez <code>ScriptInterpreterSource
4205 Registry</code> avec des répertoires faisant l'objet d'un <directive
4206 module="mod_alias">ScriptAlias</directive>, car Apache httpd va essayer
4207 d'exécuter <strong>tous</strong> les fichiers contenus dans
4208 celui-ci. L'option <code>Registry</code> peut causer des appels de
4209 programmes non voulus sur des fichiers non destinés à être exécutés.
4210 Par exemple, la commande par défaut open sur les fichiers
4211 <code>.htm</code> sur la plupart des systèmes Windows va lancer
4212 Microsoft Internet Explorer ; ainsi, toute requête HTTP pour un
4213 fichier <code>.htm</code> situé dans le répertoire des scripts
4214 va lancer le navigateur en arrière-plan sur le serveur, ce qui a
4215 toutes les chances de crasher votre système dans les minutes qui
4219 <p>L'option <code>Registry-Strict</code>, apparue avec la version
4220 2.0 du serveur HTTP Apache,
4221 agit de manière identique à <code>Registry</code>, mais n'utilise
4222 que la sous-clé <code>Shell\ExecCGI\Command</code>. La présence de
4223 la clé <code>ExecCGI</code> n'étant pas systématique, Elle doit être
4224 définie manuellement dans le registre Windows et évite ainsi tout
4225 appel de programme accidentel sur votre système.</p>
4227 </directivesynopsis>
4230 <name>SeeRequestTail</name>
4231 <description>Détermine si mod_status affiche les 63 premiers caractères
4232 d'une requête ou les 63 derniers, en supposant que la requête
4233 elle-même possède plus de 63 caractères.</description>
4234 <syntax>SeeRequestTail On|Off</syntax>
4235 <default>SeeRequestTail Off</default>
4236 <contextlist><context>server config</context></contextlist>
4237 <compatibility>Disponible depuis la version 2.2.7
4238 d'Apache httpd.</compatibility>
4241 <p>Avec <code>ExtendedStatus On</code>, mod_status affiche la
4242 véritable requête en cours de traitement. Pour des raisons
4243 historiques, seuls 63 caractères de la requête sont réellement
4244 stockés à des fins d'affichage. Cette directive permet de déterminer
4245 si ce sont les 63 premiers caractères qui seront stockés (c'est le
4246 comportement par défaut),
4247 ou si ce sont les 63 derniers. Ceci ne s'applique bien entendu que
4248 si la taille de la requête est de 64 caractères ou plus.</p>
4250 <p>Si Apache httpd traite la requête <code
4251 >GET /disque1/stockage/apache/htdocs/images/rep-images1/nourriture/pommes.jpg HTTP/1.1</code>
4252 , l'affichage de la requête par mod_status se présentera comme suit :
4257 <th>Off (défaut)</th>
4258 <td>GET /disque1/stockage/apache/htdocs/images/rep-images1/nourritu</td>
4262 <td>apache/htdocs/images/rep-images1/nourriture/pommes.jpg HTTP/1.1</td>
4268 </directivesynopsis>
4271 <name>ServerAdmin</name>
4272 <description>L'adresse électronique que le serveur inclut dans les
4273 messages d'erreur envoyés au client</description>
4274 <syntax>ServerAdmin <var>adresse électronique</var>|<var>URL</var></syntax>
4275 <contextlist><context>server config</context><context>virtual
4280 <p>La directive <directive>ServerAdmin</directive> permet de définir
4281 l'adresse de contact que le serveur va inclure dans tout message
4282 d'erreur qu'il envoie au client. Si le programme <code>httpd</code>
4283 ne reconnait pas l'argument fourni comme une URL, il suppose que
4284 c'est une <var>adresse électronique</var>, et lui ajoute le préfixe
4285 <code>mailto:</code> dans les cibles des hyperliens. Il est
4286 cependant recommandé d'utiliser exclusivement une adresse
4287 électronique, car de nombreux scripts CGI considèrent ceci comme
4288 implicite. Si vous utilisez une URL, elle doit pointer vers un autre
4289 serveur que vous contrôlez. Dans le cas contraire, les utilisateurs
4290 seraient dans l'impossibilité de vous contacter en cas de problème.</p>
4292 <p>Il peut s'avérer utile de définir une adresse dédiée à
4293 l'administration du serveur, par exemple :</p>
4295 <highlight language="config">ServerAdmin www-admin@foo.example.com</highlight>
4296 <p>car les utilisateurs ne mentionnent pas systématiquement le
4297 serveur dont ils parlent !</p>
4299 </directivesynopsis>
4302 <name>ServerAlias</name>
4303 <description>Autres noms d'un serveur utilisables pour atteindre des
4304 serveurs virtuels à base de nom</description>
4305 <syntax>ServerAlias <var>nom serveur</var> [<var>nom serveur</var>]
4307 <contextlist><context>virtual host</context></contextlist>
4310 <p>La directive <directive>ServerAlias</directive> permet de définir
4311 les noms alternatifs d'un serveur utilisables pour atteindre des <a
4312 href="../vhosts/name-based.html">serveurs virtuels à base de
4313 nom</a>. La directive <directive>ServerAlias</directive> peut
4314 contenir des caractères génériques, si nécessaire.</p>
4316 <highlight language="config">
4317 <VirtualHost *:80>
4318 ServerName server.example.com
4319 ServerAlias server server2.example.com server2
4320 ServerAlias *.example.com
4321 UseCanonicalName Off
4323 </VirtualHost>
4325 <p>La recherche du serveur virtuel à base de nom correspondant au
4326 plus près à la requête s'effectue selon l'ordre d'apparition des
4327 directives <directive type="section"
4328 module="core">virtualhost</directive> dans le fichier de
4329 configuration. Le premier serveur virtuel dont le <directive
4330 module="core">ServerName</directive> ou le <directive
4331 module="core">ServerAlias</directive> correspond est choisi, sans
4332 priorité particulière si le nom contient des caractères génériques
4333 (que ce soit pour ServerName ou ServerAlias).</p>
4335 <p>Tous les noms spécifiés au sein d'une section <directive type="section"
4336 module="core">VirtualHost</directive> sont traités comme un
4337 <directive>ServerAlias</directive> (sans caractères génériques).</p>
4340 <seealso><directive module="core">UseCanonicalName</directive></seealso>
4341 <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels
4342 du serveur HTTP Apache</a></seealso>
4343 </directivesynopsis>
4346 <name>ServerName</name>
4347 <description>Nom d'hôte et port que le serveur utilise pour
4348 s'authentifier lui-même</description>
4350 [<var>protocole</var>://]<var>nom-de-domaine</var>|<var>adresse-ip</var>[:<var>port</var>]</syntax>
4351 <contextlist><context>server config</context><context>virtual
4356 <p>La directive <directive>ServerName</directive> permet de définir
4357 les protocole, nom d'hôte et port d'une requête que le serveur
4358 utilise pour s'authentifier lui-même.</p>
4360 <p>La directive <directive>ServerName</directive> permet (éventuellement en
4361 conjonction avec la directive <directive
4362 module="core">ServerAlias</directive>) d'identifier de manière unique un
4363 serveur virtuel, lorsqu'elle est utilisée dans un contexte de <a
4364 href="../vhosts/name-based.html">serveurs virtuels à base de noms</a>.</p>
4366 <p>Cette directive est aussi utilisée lors de la création d'URLs de
4367 redirection relatives quand la directive <directive
4368 module="core">UseCanonicalName</directive> est définie à une valeur autre
4369 que la valeur par défaut.</p>
4371 <p>Par exemple, si le nom de la
4372 machine hébergeant le serveur web est
4373 <code>simple.example.com</code>, la machine possède l'alias
4374 DNS <code>www.example.com</code>, et si vous voulez que le serveur
4375 web s'identifie avec cet alias, vous devez utilisez la définition
4378 <highlight language="config">ServerName www.example.com</highlight>
4380 <p>La directive <directive>ServerName</directive> peut apparaître à
4381 toutes les étapes de la définition du serveur. Toute occurrence
4382 annule cependant la précédente (pour ce serveur).</p>
4384 <p>Si la directive <directive>ServerName</directive> n'est pas
4385 définie, le serveur tente de déterminer le nom
4386 d'hôte visible du point de vue du client en demandant tout d'abord au
4387 système d'exploitation le nom d'hôte système, et en cas d'échec, en effectuant
4388 une recherche DNS inverse sur une adresse IP présente sur le système.</p>
4391 <directive>ServerName</directive> ne précise pas de port, le serveur
4392 utilisera celui de la requête entrante. Il est recommandé de
4393 spécifier un nom d'hôte et un port spécifiques à l'aide de la
4394 directive <directive>ServerName</directive> pour une fiabilité
4395 optimale et à titre préventif.</p>
4397 <p>Si vous définissez des <a
4398 href="../vhosts/name-based.html">serveurs virtuels à base de
4399 nom</a>, une directive <directive>ServerName</directive> située à
4400 l'intérieur d'une section <directive type="section"
4401 module="core">VirtualHost</directive> spécifiera quel nom d'hôte
4402 doit apparaître dans l'en-tête de requête <code>Host:</code> pour
4403 pouvoir atteindre ce serveur virtuel.</p>
4406 <p>Parfois, le serveur s'exécute en amont d'un dispositif qui
4407 implémente SSL, comme un mandataire inverse, un répartiteur de
4408 charge ou un boîtier dédié SSL. Dans ce cas, spécifiez le protocole
4409 <code>https://</code> et le port auquel les clients se connectent
4410 dans la directive <directive>ServerName</directive>, afin de
4411 s'assurer que le serveur génère correctement ses URLs
4412 d'auto-identification.
4415 <p>Voir la description des directives <directive
4416 module="core">UseCanonicalName</directive> et <directive
4417 module="core">UseCanonicalPhysicalPort</directive> pour les
4418 définitions qui permettent de déterminer si les URLs
4419 auto-identifiantes (par exemple via le module
4420 <module>mod_dir</module>) vont faire référence au port spécifié, ou
4421 au port indiqué dans la requête du client.
4424 <note type="warning">
4425 <p>Si la valeur de la directive <directive>ServerName</directive> ne
4426 peut pas être résolue en adresse IP, le démarrage du serveur
4427 provoquera un avertissement. <code>httpd</code> va alors utiliser le
4428 résultat de la commande système <code>hostname</code> pour
4429 déterminer le nom du serveur, ce qui ne correspondra pratiquement
4430 jamais au nom de serveur que vous souhaitez réellement.</p>
4432 httpd: Could not reliably determine the server's fully qualified domain name, using rocinante.local for ServerName
4438 <seealso><a href="../dns-caveats.html">Problèmes concernant le DNS et
4439 le serveur HTTP Apache</a></seealso>
4440 <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels
4441 du serveur HTTP Apache</a></seealso>
4442 <seealso><directive module="core">UseCanonicalName</directive></seealso>
4443 <seealso><directive module="core">UseCanonicalPhysicalPort</directive></seealso>
4444 <seealso><directive module="core">ServerAlias</directive></seealso>
4445 </directivesynopsis>
4448 <name>ServerPath</name>
4449 <description>Nom de chemin d'URL hérité pour un serveur virtuel à base
4450 de nom accédé par un navigateur incompatible</description>
4451 <syntax>ServerPath <var>chemin d'URL</var></syntax>
4452 <contextlist><context>virtual host</context></contextlist>
4455 <p>La directive <directive>ServerPath</directive> permet de définir
4456 le nom de chemin d'URL hérité d'un hôte, à utiliser avec les <a
4457 href="../vhosts/">serveurs virtuels à base de nom</a>.</p>
4459 <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels
4460 du serveur HTTP Apache</a></seealso>
4461 </directivesynopsis>
4464 <name>ServerRoot</name>
4465 <description>Racine du répertoire d'installation du
4466 serveur</description>
4467 <syntax>ServerRoot <var>chemin de répertoire</var></syntax>
4468 <default>ServerRoot /usr/local/apache</default>
4469 <contextlist><context>server config</context></contextlist>
4472 <p>La directive <directive>ServerRoot</directive> permet de définir
4473 le répertoire dans lequel le serveur est installé. En particulier,
4474 il contiendra les sous-répertoires <code>conf/</code> et
4475 <code>logs/</code>. Les chemins relatifs indiqués dans les autres
4476 directives (comme <directive
4477 module="core">Include</directive> ou <directive
4478 module="mod_so">LoadModule</directive>) seront définis par
4479 rapport à ce répertoire.</p>
4481 <highlight language="config">ServerRoot "/home/httpd"</highlight>
4483 <p>La valeur par défaut de <directive>ServerRoot</directive> peut
4484 être modifiée via l'argument <code>--prefix</code> de la commande <a
4485 href="../programs/configure.html"><code>configure</code></a>, et de
4486 nombreuses distributions tierces du serveur proposent une valeur
4487 différente de celles listées ci-dessus.</p>
4490 <seealso><a href="../invoking.html">the <code>-d</code>
4491 options de <code>httpd</code></a></seealso>
4492 <seealso><a href="../misc/security_tips.html#serverroot">les conseils à
4493 propos de sécurité</a> pour des informations sur la manière de définir
4494 correctement les permissions sur le répertoire indiqué par la directive
4495 <directive>ServerRoot</directive></seealso>
4496 </directivesynopsis>
4499 <name>ServerSignature</name>
4500 <description>Définit un pied de page pour les documents générés par le
4501 serveur</description>
4502 <syntax>ServerSignature On|Off|EMail</syntax>
4503 <default>ServerSignature Off</default>
4504 <contextlist><context>server config</context><context>virtual
4506 <context>directory</context><context>.htaccess</context>
4508 <override>All</override>
4511 <p>La directive <directive>ServerSignature</directive> permet de
4512 définir une ligne de pied de page fixe pour les documents générés
4513 par le serveur (messages d'erreur, listings de répertoires ftp de
4514 <module>mod_proxy</module>, sorties de <module>mod_info</module>,
4515 etc...). Dans le cas d'une chaîne de mandataires, l'utilisateur n'a
4516 souvent aucun moyen de déterminer lequel des mandataires chaînés a
4517 généré un message d'erreur, et c'est une des raisons pour lesquelles
4518 on peut être amené à ajouter un tel pied de page.</p>
4520 <p>La valeur par défaut <code>Off</code> supprime la ligne de pied
4521 de page (et est ainsi compatible avec le comportement des
4522 versions 1.2 et antérieures d'Apache). la valeur <code>On</code>
4523 ajoute simplement une ligne contenant le numéro de version du
4524 serveur ainsi que le nom du serveur virtuel issu de la directive
4525 <directive module="core">ServerName</directive>, alors que la valeur
4526 <code>EMail</code> ajoute en plus une référence "mailto:" à
4527 l'administrateur du document référencé issu la directive
4528 <directive module="core">ServerAdmin</directive>.</p>
4530 <p>Après la version 2.0.44, les détails à propos du numéro de
4531 version du serveur sont contrôlés à l'aide de la directive
4532 <directive module="core">ServerTokens</directive>.</p>
4534 <seealso><directive module="core">ServerTokens</directive></seealso>
4535 </directivesynopsis>
4538 <name>ServerTokens</name>
4539 <description>Configure l'en-tête <code>Server</code> de la réponse
4541 <syntax>ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full</syntax>
4542 <default>ServerTokens Full</default>
4543 <contextlist><context>server config</context></contextlist>
4546 <p>Cette directive permet de contrôler le contenu de l'en-tête
4547 <code>Server</code> inclus dans la réponse envoyée au client : cet
4548 en-tête peut contenir le type de système d'exploitation du serveur,
4549 ainsi que des informations à propos des modules compilés avec le
4553 <dt><code>ServerTokens Full</code> (ou non spécifié)</dt>
4555 <dd>Le serveur envoie par exemple : <code>Server: Apache/2.4.2
4556 (Unix) PHP/4.2.2 MyMod/1.2</code></dd>
4558 <dt><code>ServerTokens Prod[uctOnly]</code></dt>
4560 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4563 <dt><code>ServerTokens Major</code></dt>
4565 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4566 Apache/2</code></dd>
4568 <dt><code>ServerTokens Minor</code></dt>
4570 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4571 Apache/2.4</code></dd>
4573 <dt><code>ServerTokens Min[imal]</code></dt>
4575 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4576 Apache/2.4.2</code></dd>
4578 <dt><code>ServerTokens OS</code></dt>
4580 <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server:
4581 Apache/2.4.2 (Unix)</code></dd>
4587 <p>Cette définition s'applique à l'ensemble du serveur et ne peut
4588 être activée ou désactivée pour tel ou tel serveur virtuel.</p>
4590 <p>Dans les versions postérieures à 2.0.44, cette directive contrôle
4591 aussi les informations fournies par la directive <directive
4592 module="core">ServerSignature</directive>.</p>
4594 <note>Définir <directive>ServerTokens</directive> à une
4595 valeur inférieure à <code>minimal</code> n'est pas
4596 recommandé car le débogage des problèmes
4597 interopérationnels n'en sera alors que plus difficile. Notez
4598 aussi que la désactivation de l'en-tête Server:
4599 n'améliore en rien la sécurité de votre
4600 serveur ; le concept de "sécurité par
4601 l'obscurité" est un mythe et conduit à
4602 une mauvaise perception de ce qu'est la sécurité.</note>
4606 <seealso><directive module="core">ServerSignature</directive></seealso>
4607 </directivesynopsis>
4610 <name>SetHandler</name>
4611 <description>Force le traitement des fichiers spécifiés par un
4612 gestionnaire particulier</description>
4613 <syntax>SetHandler <var>handler-name</var>|none|<var>expression</var></syntax>
4614 <contextlist><context>server config</context><context>virtual
4616 <context>directory</context><context>.htaccess</context>
4618 <override>FileInfo</override>
4619 <compatibility>L'argument expression est disponible à partir de la version
4620 2.4.19 su serveur HTTP Apache</compatibility>
4623 <p>Lorsqu'elle se situe à l'intérieur d'un fichier
4624 <code>.htaccess</code>, ou d'une section <directive type="section"
4625 module="core">Directory</directive> ou <directive type="section"
4626 module="core">Location</directive>, cette directive force le
4627 traitement de tous les fichiers spécifiés par le <a
4628 href="../handler.html">gestionnaire</a> défini par l'argument
4629 <var>nom gestionnaire</var>. Par exemple, dans le cas d'un
4630 répertoire dont vous voulez interpréter le contenu comme des
4631 fichiers de règles d'images cliquables, sans tenir compte des
4632 extensions, vous pouvez ajouter la ligne suivante dans un fichier
4633 <code>.htaccess</code> de ce répertoire :</p>
4635 <highlight language="config">SetHandler imap-file</highlight>
4637 <p>Autre exemple : si vous voulez que le serveur affiche un
4638 compte-rendu d'état chaque fois qu'une URL du type <code>http://nom
4639 serveur/status</code> est appelée, vous pouvez ajouter ceci dans
4640 <code>httpd.conf</code> :</p>
4642 <highlight language="config">
4643 <Location "/status">
4644 SetHandler server-status
4648 <p>Vous pouvez aussi utiliser cette directive pour associer un
4649 gestionnaire à des fichiers possèdant une extension de nom de
4650 fichier particulière. Par exemple :</p>
4652 <highlight language="config">
4653 <FilesMatch "\.php$">
4654 SetHandler application/x-httpd-php
4658 <p>Pour référencer des variables spécifiques à une requête, y compris les
4659 références arrières vers des expressions rationnelles nommées, vous pouvez
4660 utiliser des expressions ayant pour valeur une chaîne : </p>
4662 <highlight language="config">
4663 <LocationMatch ^/app/(?<sub>[^/]+)/>
4664 SetHandler "proxy:unix:/var/run/app_%{env:MATCH_sub}.sock|fcgi://localhost:8080"
4665 </LocationMatch>
4668 <p>Vous pouvez écraser la définition antérieure d'une directive
4669 <directive>SetHandler</directive> en utilisant la valeur
4670 <code>None</code>.</p>
4672 <note><title>Note</title>
4673 <p>Comme <directive>SetHandler</directive> l'emporte sur la
4674 définition des gestionnaires par défaut, le comportement habituel
4675 consistant à traiter les URLs se terminant par un slash (/) comme
4676 des répertoires ou des fichiers index est désactivé.</p></note>
4679 <seealso><directive module="mod_mime">AddHandler</directive></seealso>
4681 </directivesynopsis>
4684 <name>SetInputFilter</name>
4685 <description>Définit les filtres par lesquels vont passer les requêtes
4686 client et les données POST</description>
4687 <syntax>SetInputFilter <var>filtre</var>[;<var>filtre</var>...]</syntax>
4688 <contextlist><context>server config</context><context>virtual
4690 <context>directory</context><context>.htaccess</context>
4692 <override>FileInfo</override>
4695 <p>La directive <directive>SetInputFilter</directive> permet de
4696 définir le ou les filtres par lesquels vont passer les requêtes
4697 client et les données POST au moment où le serveur les reçoit. Cette
4698 définition vient en ajout à tout autre filtre défini en
4699 quelqu'endroit que ce soit, y compris via la directive <directive
4700 module="mod_mime">AddInputFilter</directive>.</p>
4702 <p>Si la directive comporte plusieurs filtres, ils doivent être
4703 séparés par des points-virgules, et spécifiés selon l'ordre dans
4704 lequel vous souhaitez les voir agir sur les contenus.</p>
4706 <seealso>documentation des <a
4707 href="../filter.html">Filtres</a></seealso>
4708 </directivesynopsis>
4711 <name>SetOutputFilter</name>
4712 <description>Définit les filtres par lesquels vont passer les réponses
4713 du serveur</description>
4714 <syntax>SetOutputFilter <var>filtre</var>[;<var>filtre</var>...]</syntax>
4715 <contextlist><context>server config</context><context>virtual
4717 <context>directory</context><context>.htaccess</context>
4719 <override>FileInfo</override>
4722 <p>La directive <directive>SetOutputFilter</directive> permet de
4723 définir les filtres par lesquels vont passer les réponses du serveur
4724 avant d'être envoyées au client. Cette définition vient en ajout à
4725 tout autre filtre défini en quelqu'endroit que ce soit, y compris
4726 via la directive <directive
4727 module="mod_mime">AddOutputFilter</directive>.</p>
4729 <p>Par exemple, la configuration suivante va traiter tous les
4730 fichiers du répertoire <code>/www/data/</code> comme des inclusions
4731 côté serveur (SSI) :</p>
4733 <highlight language="config">
4734 <Directory "/www/data/">
4735 SetOutputFilter INCLUDES
4739 <p>Si la directive comporte plusieurs filtres, ils doivent être
4740 séparés par des points-virgules, et spécifiés selon l'ordre dans
4741 lequel vous souhaitez les voir agir sur les contenus.</p>
4743 <seealso><a href="../filter.html">Filters</a> documentation</seealso>
4744 </directivesynopsis>
4747 <name>TimeOut</name>
4748 <description>Temps pendant lequel le serveur va attendre certains
4749 évènements avant de considérer qu'une requête a échoué</description>
4750 <syntax>TimeOut <var>secondes</var></syntax>
4751 <default>TimeOut 60</default>
4752 <contextlist><context>server config</context><context>virtual
4753 host</context></contextlist>
4756 <p>La directive <directive>TimeOut</directive> permet de définir le
4757 temps maximum pendant lequel Apache httpd va attendre des entrées/sorties
4758 selon les circonstances :</p>
4761 <li><p>Lors de la lecture de données en provenance du client, le
4762 temps maximum jusqu'à l'arrivée d'un paquet TCP si le tampon est
4764 <p>Pour les données initiales d'une nouvelle connexion, et tant qu'une
4765 directive <directive module="core">AcceptFilter</directive> n'aura pas
4766 transmis cette nouvelle connexion au serveur, cette directive n'aura aucun
4770 <li>Lors de l'écriture de données destinées au client, le temps
4771 maximum jusqu'à l'arrivée de l'accusé-réception d'un paquet si le
4772 tampon d'envoi est plein.</li>
4774 <li>Avec <module>mod_cgi</module>, le temps d'attente maximum des
4775 sorties d'un script CGI.</li>
4777 <li>Avec <module>mod_ext_filter</module>, le temps d'attente
4778 maximum des sorties d'un processus de filtrage.</li>
4780 <li>Avec <module>mod_proxy</module>, la valeur du délai par défaut
4781 si <directive module="mod_proxy">ProxyTimeout</directive> n'est
4786 </directivesynopsis>
4789 <name>TraceEnable</name>
4790 <description>Détermine le comportement des requêtes
4791 <code>TRACE</code></description>
4792 <syntax>TraceEnable <var>[on|off|extended]</var></syntax>
4793 <default>TraceEnable on</default>
4794 <contextlist><context>server config</context><context>virtual host</context></contextlist>
4797 <p>Cette directive l'emporte sur le comportement de
4798 <code>TRACE</code> pour le noyau du serveur et
4799 <module>mod_proxy</module>. La définition par défaut
4800 <code>TraceEnable on</code> permet des requêtes <code>TRACE</code>
4801 selon la RFC 2616, qui interdit d'ajouter tout corps à la requête.
4802 La définition <code>TraceEnable off</code> indique au noyau du
4803 serveur et à <module>mod_proxy</module> de retourner un code
4804 d'erreur <code>405</code> (Méthode non autorisée) au client.</p>
4806 <p>En fait, et à des fins de test et de diagnostic seulement, on
4807 peut autoriser l'ajout d'un corps de requête à l'aide de la
4808 définition non standard <code>TraceEnable extended</code>. Le noyau
4809 du serveur (dans le cas d'un serveur d'origine) va limiter la taille
4810 du corps de requête à 64Kb (plus 8Kb pour les en-têtes de
4811 fractionnement si <code>Transfer-Encoding: chunked</code> est
4812 utilisé). Le noyau du serveur va reproduire l'ensemble des en-têtes,
4813 y compris les en-têtes de fractionnement avec le corps de la
4814 réponse. Dans le cas d'un serveur mandataire, la taille du corps de
4815 requête n'est pas limitée à 64Kb.</p>
4817 <note><title>Note</title>
4818 <p>Bien que certains prétendent le contraire, activer la méthode
4819 <code>TRACE</code> ne constitue pas un problème de sécurité dans Apache
4820 httpd. La méthode <code>TRACE</code> est définie par la spécification
4821 HTTP/1.1 et les différentes implémentations sont censées la supporter.</p>
4824 </directivesynopsis>
4827 <name>UnDefine</name>
4828 <description>Invalide la définition d'une variable</description>
4829 <syntax>UnDefine <var>nom-variable</var></syntax>
4830 <contextlist><context>server config</context></contextlist>
4833 <p>Annule l'effet d'une directive <directive
4834 module="core">Define</directive> ou d'un argument <code>-D</code> de
4835 <program>httpd</program> en invalidant l'existence de la variable
4837 <p>On peut utiliser cette directive pour inverser l'effet d'une
4838 section <directive module="core" type="section">IfDefine</directive>
4839 sans avoir à modifier les arguments <code>-D</code> dans les scripts
4841 <p>Si cette directive est définie au sein d'un bloc VirtualHost, les
4842 changements qu'elle induit sont visibles de toute directive
4843 ultérieure, au delà de tout bloc VirtualHost.</p>
4845 </directivesynopsis>
4848 <name>UseCanonicalName</name>
4849 <description>Définit la manière dont le serveur détermine son propre nom
4850 et son port</description>
4851 <syntax>UseCanonicalName On|Off|DNS</syntax>
4852 <default>UseCanonicalName Off</default>
4853 <contextlist><context>server config</context><context>virtual
4855 <context>directory</context></contextlist>
4858 <p>Dans de nombreuses situations, Apache httpd doit construire une URL
4859 <em>auto-identifiante</em> -- c'est à dire une URL qui fait
4860 référence au serveur lui-même. Avec <code>UseCanonicalName
4861 On</code>, Apache httpd va utiliser le nom d'hôte et le port spécifiés par
4862 la directive <directive module="core">ServerName</directive> pour
4863 construire le nom canonique du serveur. Ce nom est utilisé dans
4864 toutes les URLs auto-identifiantes, et affecté aux variables
4865 <code>SERVER_NAME</code> et <code>SERVER_PORT</code> dans les
4868 <p>Avec <code>UseCanonicalName Off</code>, Apache httpd va construire ses
4869 URLs auto-identifiantes à l'aide du nom d'hôte et du port fournis
4870 par le client, si ce dernier en a fourni un (dans la négative,
4871 Apache utilisera le nom canonique, de la même manière que
4872 ci-dessus). Ces valeurs sont les mêmes que celles qui sont utilisées
4873 pour implémenter les <a
4874 href="../vhosts/name-based.html">serveurs virtuels à base de
4875 nom</a>, et sont disponibles avec les mêmes clients. De même, les
4876 variables CGI <code>SERVER_NAME</code> et <code>SERVER_PORT</code>
4877 seront affectées des valeurs fournies par le client.</p>
4879 <p>Cette directive peut s'avérer utile, par exemple, sur un serveur
4880 intranet auquel les utilisateurs se connectent en utilisant des noms
4881 courts tels que <code>www</code>. Si les utilisateurs tapent un nom
4882 court suivi d'une URL qui fait référence à un répertoire, comme
4883 <code>http://www/splat</code>, <em>sans le slash terminal</em>, vous
4884 remarquerez qu'Apache httpd va les rediriger vers
4885 <code>http://www.example.com/splat/</code>. Si vous avez activé
4886 l'authentification, ceci va obliger l'utilisateur à s'authentifier
4887 deux fois (une première fois pour <code>www</code> et une seconde
4888 fois pour <code>www.example.com</code> -- voir <a
4889 href="http://wiki.apache.org/httpd/FAQ#Why_does_Apache_ask_for_my_password_twice_before_serving_a_file.3F">la
4890 foire aux questions sur ce sujet pour plus d'informations</a>).
4891 Par contre, si <directive>UseCanonicalName</directive> est définie à
4892 <code>Off</code>, Apache httpd redirigera l'utilisateur vers
4893 <code>http://www/splat/</code>.</p>
4895 <p>Pour l'hébergement virtuel en masse à base d'adresse IP, on
4896 utilise une troisième option, <code>UseCanonicalName
4897 DNS</code>, pour supporter les clients anciens qui ne
4898 fournissent pas d'en-tête <code>Host:</code>. Apache httpd effectue alors
4899 une recherche DNS inverse sur l'adresse IP du serveur auquel le
4900 client s'est connecté afin de construire ses URLs
4901 auto-identifiantes.</p>
4903 <note type="warning"><title>Avertissement</title>
4904 <p>Les programmes CGI risquent d'être perturbés par cette option
4905 s'ils tiennent compte de la variable <code>SERVER_NAME</code>. Le
4906 client est pratiquement libre de fournir la valeur qu'il veut comme
4907 nom d'hôte. Mais si le programme CGI n'utilise
4908 <code>SERVER_NAME</code> que pour construire des URLs
4909 auto-identifiantes, il ne devrait pas y avoir de problème.</p>
4912 <seealso><directive module="core">UseCanonicalPhysicalPort</directive></seealso>
4913 <seealso><directive module="core">ServerName</directive></seealso>
4914 <seealso><directive module="mpm_common">Listen</directive></seealso>
4915 </directivesynopsis>
4918 <name>UseCanonicalPhysicalPort</name>
4919 <description>Définit la manière dont le serveur
4920 détermine son propre port</description>
4921 <syntax>UseCanonicalPhysicalPort On|Off</syntax>
4922 <default>UseCanonicalPhysicalPort Off</default>
4923 <contextlist><context>server config</context><context>virtual
4925 <context>directory</context></contextlist>
4928 <p>Dans de nombreuses situations, Apache httpd doit construire une URL
4929 <em>auto-identifiante</em> -- c'est à dire une URL qui fait
4930 référence au serveur lui-même. Avec <code>UseCanonicalPhysicalPort
4931 On</code>, Apache httpd va fournir le numéro de port physique réel utilisé
4932 par la requête en tant que port potentiel, pour construire le port
4933 canonique afin que le serveur puisse alimenter la directive
4934 <directive module="core">UseCanonicalName</directive>. Avec
4935 <code>UseCanonicalPhysicalPort Off</code>, Apache httpd n'utilisera pas le
4936 numéro de port physique réel, mais au contraire se référera aux
4937 informations de configuration pour construire un numéro de port
4940 <note><title>Note</title>
4941 <p>L'ordre dans lequel s'effectue la recherche quand on utilise le
4942 port physique est le suivant :</p>
4944 <dt><code>UseCanonicalName On</code></dt>
4947 <li>Port indiqué dans <directive module="core">Servername</directive></li>
4948 <li>Port physique</li>
4949 <li>Port par défaut</li>
4952 <dt><code>UseCanonicalName Off | DNS</code></dt>
4955 <li>Port spécifié dans l'en-tête <code>Host:</code></li>
4956 <li>Port physique</li>
4957 <li>Port spécifié par <directive module="core">Servername</directive></li>
4958 <li>Port par défaut</li>
4963 <p>Avec <code>UseCanonicalPhysicalPort Off</code>, on reprend
4964 l'ordre ci-dessus en supprimant "Port physique".</p>
4968 <seealso><directive module="core">UseCanonicalName</directive></seealso>
4969 <seealso><directive module="core">ServerName</directive></seealso>
4970 <seealso><directive module="mpm_common">Listen</directive></seealso>
4971 </directivesynopsis>
4973 <directivesynopsis type="section">
4974 <name>VirtualHost</name>
4975 <description>Contient des directives qui ne s'appliquent qu'à un nom
4976 d'hôte spécifique ou à une adresse IP</description>
4977 <syntax><VirtualHost
4978 <var>adresse IP</var>[:<var>port</var>] [<var>adresse
4979 IP</var>[:<var>port</var>]] ...> ...
4980 </VirtualHost></syntax>
4981 <contextlist><context>server config</context></contextlist>
4984 <p>Les balises <directive type="section">VirtualHost</directive> et
4985 <code></VirtualHost></code> permettent de rassembler un groupe
4986 de directives qui ne s'appliquent qu'à un serveur virtuel
4987 particulier. Toute directive autorisée dans un contexte de serveur
4988 virtuel peut être utilisée. Lorsque le serveur reçoit un requête
4989 pour un document hébergé par un serveur virtuel particulier, il
4990 applique les directives de configuration rassemblées dans la section
4991 <directive type="section">VirtualHost</directive>. <var>adresse
4992 IP</var> peut être une des entités suivantes, éventuellement suivies
4993 d'un caractère ':' et d'un numéro de port (ou *) :</p>
4996 <li>L'adresse IP du serveur virtuel ;</li>
4998 <li>Un nom de domaine entièrement qualifié correspondant à
4999 l'adresse IP du serveur virtuel (non recommandé) ;</li>
5001 <li>Le caractère <code>*</code>, qui agit comme un
5002 caractère générique, et correspond à toute adresse IP.</li>
5004 <li>La chaîne <code>_default_</code>, dont la signification est
5005 identique à celle du caractère <code>*</code></li>
5009 <highlight language="config">
5010 <VirtualHost 10.1.2.3:80>
5011 ServerAdmin webmaster@host.example.com
5012 DocumentRoot "/www/docs/host.example.com"
5013 ServerName host.example.com
5014 ErrorLog "logs/host.example.com-error_log"
5015 TransferLog "logs/host.example.com-access_log"
5016 </VirtualHost>
5020 <p>Les adresses IPv6 doivent être entourées de crochets car dans le
5021 cas contraire, un éventuel port optionnel ne pourrait pas être
5022 déterminé. Voici un exemple de serveur virtuel avec adresse IPv6
5025 <highlight language="config">
5026 <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80>
5027 ServerAdmin webmaster@host.example.com
5028 DocumentRoot "/www/docs/host.example.com"
5029 ServerName host.example.com
5030 ErrorLog "logs/host.example.com-error_log"
5031 TransferLog "logs/host.example.com-access_log"
5032 </VirtualHost>
5035 <p>Chaque serveur virtuel doit correspondre à une adresse IP, un
5036 port ou un nom d'hôte spécifique ; dans le premier cas, le serveur
5037 doit être configuré pour recevoir les paquets IP de plusieurs
5038 adresses (si le serveur n'a qu'une interface réseau, on peut
5039 utiliser à cet effet la commande <code>ifconfig alias</code> -- si
5040 votre système d'exploitation le permet).</p>
5042 <note><title>Note</title>
5043 <p>L'utilisation de la directive <directive
5044 type="section">VirtualHost</directive> n'affecte en rien les
5045 adresses IP sur lesquelles Apache httpd est en écoute. Vous devez vous
5046 assurer que les adresses des serveurs virtuels sont bien incluses
5047 dans la liste des adresses précisées par la directive <directive
5048 module="mpm_common">Listen</directive>.</p>
5051 <p>Tout bloc <directive
5052 type="section">VirtualHost</directive> doit comporter une directive
5053 <directive module="core">ServerName</directive>. Dans le cas
5054 contraire, le serveur virtuel héritera de la valeur de la directive
5055 <directive module="core">ServerName</directive> issue de la
5056 configuration du serveur principal.</p>
5058 <p>A l'arrivée d'une requête, le serveur tente de la
5059 faire prendre en compte par la section <directive
5060 type="section">VirtualHost</directive> qui correspond le mieux en ne
5061 se basant que sur la paire adresse IP/port. Les chaînes sans
5062 caractères génériques l'emportent sur celles qui en contiennent. Si
5063 aucune correspondance du point de vue de l'adresse IP/port n'est
5064 trouvée, c'est la configuration du serveur "principal" qui sera
5067 <p>Si plusieurs serveurs virtuels correspondent du point de vue de
5068 l'adresse IP/port, le serveur sélectionne celui qui correspond le
5069 mieux du point de vue du nom d'hôte de la requête. Si aucune
5070 correspondance du point de vue du nom d'hôte n'est trouvée, c'est le
5071 premier serveur virtuel dont l'adresse IP/port correspond qui sera
5072 utilisé. Par voie de conséquence, le premier serveur virtuel
5073 comportant une certaine paire adresse IP/port est le serveur virtuel
5074 par défaut pour cette paire adresse IP/port.</p>
5076 <note type="warning"><title>Sécurité</title>
5077 <p>Voir le document sur les <a
5078 href="../misc/security_tips.html">conseils à propos de sécurité</a>
5079 pour une description détaillée des raisons pour lesquelles la
5080 sécurité de votre serveur pourrait être compromise, si le répertoire
5081 contenant les fichiers journaux est inscriptible par tout autre
5082 utilisateur que celui qui démarre le serveur.</p>
5085 <seealso><a href="../vhosts/">Documentation des serveurs virtuels
5086 du serveur HTTP Apache</a></seealso>
5087 <seealso><a href="../dns-caveats.html">Problèmes concernant le DNS et
5088 le serveur HTTP Apache</a></seealso>
5089 <seealso><a href="../bind.html">Définition des adresses et ports
5090 qu'utilise le serveur HTTP Apache</a></seealso>
5091 <seealso><a href="../sections.html">Comment fonctionnent les sections
5092 <Directory>, <Location> et <Files></a> pour une
5093 explication de la manière dont ces différentes sections se combinent
5094 entre elles à la réception d'une requête</seealso>
5095 </directivesynopsis>
5098 <name>MergeTrailers</name>
5099 <description>Détermine si les données supplémentaires (trailers) sont
5100 fusionnées avec les en-têtes</description>
5101 <syntax>MergeTrailers [on|off]</syntax>
5102 <default>MergeTrailers off</default>
5103 <contextlist><context>server config</context><context>virtual host</context></contextlist>
5104 <compatibility>Disponible à partir de la version 2.4.11 du serveur HTTP
5105 Apache</compatibility>
5108 <p>Cette directive permet de contrôler la fusion des données HTTP
5109 supplémentaires (trailers) avec la représentation interne des
5110 en-têtes. Cette fusion intervient lorsque le corps de la requête a
5111 été entièrement reçu, bien longtemps après que la majeure partie du
5112 traitement des en-têtes ait une chance de pouvoir examiner ou
5113 modifier les en-têtes de la requête.</p>
5114 <p>Cette option a été introduite dans un souci de compatibilité avec
5115 les versions antérieures à 2.4.11, où les données supplémentaires
5116 étaient systématiquement fusionnées avec les en-têtes de la requête.</p>
5118 </directivesynopsis>
5121 <name>QualifyRedirectURL</name>
5122 <description>Vérifie si la variable d'environnement REDIRECT_URL est
5123 pleinement qualifiée</description>
5124 <syntax>QualifyRedirectURL ON|OFF</syntax>
5125 <default>QualifyRedirectURL OFF</default>
5126 <contextlist><context>server config</context><context>virtual host</context>
5127 <context>directory</context>
5129 <override>FileInfo</override>
5130 <compatibility>Directive supportée à partir de la version 2.4.18 du
5131 serveur HTTP Apache. Jusqu'à la version 2.4.17, le serveur se comportait
5132 comme si la directive QualifyRedirectURL était définie à ON.</compatibility>
5135 <p>Cette directive permet de s'assurer que le serveur vérifiera que
5136 la variable d'environnement REDIRECT_URL est bien pleinement
5137 qualifiée. Par défaut, cette variable contient l'URL textuellement
5138 demandée par le client, par exemple "/index.html". Avec <directive
5139 module="core">QualifyRedirectURL ON</directive>, la même requête
5140 affectera à la variable REDIRECT_URL une valeur du style
5141 "http://www.example.com/index.html".</p>
5142 <p>Même si cette directive n'est pas définie, lorsqu'une requête est
5143 soumise avec une URL pleinement qualifiée, la variable REDIRECT_URL
5144 contiendra quand-même une URL pleinement qualifiée.
5147 </directivesynopsis>