| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?> |
| <!-- English Revision: 1777405 --> |
| <!-- French translation : Lucien GENTIS --> |
| <!-- Reviewed by : Vincent Deffontaines --> |
| |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <modulesynopsis metafile="core.xml.meta"> |
| |
| <name>core</name> |
| <description>Fonctionnalités de base du serveur HTTP Apache disponibles |
| en toutes circonstances</description> |
| <status>Core</status> |
| |
| <directivesynopsis> |
| <name>AcceptFilter</name> |
| <description>Permet d'optimiser la configuration d'un socket pour |
| l'écoute d'un protocole</description> |
| <syntax>AcceptFilter <var>protocole</var> <var>filtre |
| d'acceptation</var></syntax> |
| <contextlist><context>server config</context></contextlist> |
| <compatibility>Disponible avec Apache version 2.1.5 et |
| supérieures</compatibility> |
| |
| <usage> |
| <p>Cette directive permet d'effectuer une optimisation du socket |
| d'écoute d'un type de protocole en fonction du système |
| d'exploitation. Le but premier est de faire en sorte que le noyau |
| n'envoie pas de socket au processus du serveur jusqu'à ce que |
| des données soient reçues, ou qu'une requête HTTP complète soit mise |
| en tampon. Seuls les <a |
| href="http://www.freebsd.org/cgi/man.cgi?query=accept_filter& |
| sektion=9">Filtres d'acceptation de FreeBSD</a> et le filtre plus |
| primitif <code>TCP_DEFER_ACCEPT</code> sous Linux sont actuellement |
| supportés.</p> |
| |
| <p>Sous FreeBSD, les valeurs par défaut sont :</p> |
| <example> |
| AcceptFilter http httpready <br/> |
| AcceptFilter https dataready |
| </example> |
| |
| <p>Le filtre d'acceptation <code>httpready</code> met en tampon des |
| requêtes HTTP entières au niveau du noyau. Quand une requête |
| entière a été reçue, le noyau l'envoie au serveur. Voir la page de |
| manuel de <a |
| href="http://www.freebsd.org/cgi/man.cgi?query=accf_http& |
| sektion=9">accf_http(9)</a> pour plus de détails. Comme les requêtes |
| HTTPS sont chiffrées, celles-ci n'autorisent que le filtre <a |
| href="http://www.freebsd.org/cgi/man.cgi?query=accf_data& |
| sektion=9">accf_data(9)</a>.</p> |
| |
| <p>Sous Linux, les valeurs par défaut sont :</p> |
| <example> |
| AcceptFilter http data <br/> |
| AcceptFilter https data |
| </example> |
| |
| <p>Le filtre <code>TCP_DEFER_ACCEPT</code> de Linux ne supporte pas |
| la mise en tampon des requêtes http. Toute valeur autre que |
| <code>none</code> active le filtre <code>TCP_DEFER_ACCEPT</code> |
| pour ce protocole. Pour plus de détails, voir la page de |
| manuel Linux de <a |
| href="http://homepages.cwi.nl/~aeb/linux/man2html/man7/ |
| tcp.7.html">tcp(7)</a>.</p> |
| |
| <p>L'utilisation de la valeur <code>none</code> comme argument |
| désactive tout filtre d'acceptation pour ce protocole. Elle peut |
| être utile dans le cas d'un protocole pour lequel un serveur doit |
| d'abord envoyer des données, comme <code>nntp</code> :</p> |
| <example>AcceptFilter nntp none</example> |
| |
| </usage> |
| <seealso><directive>Protocol</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>AcceptPathInfo</name> |
| <description>Les ressources acceptent des informations sous forme d'un |
| nom de chemin en fin de requête.</description> |
| <syntax>AcceptPathInfo On|Off|Default</syntax> |
| <default>AcceptPathInfo Default</default> |
| <contextlist><context>server config</context> |
| <context>virtual host</context><context>directory</context> |
| <context>.htaccess</context></contextlist> |
| <override>FileInfo</override> |
| <compatibility>Disponible avec Apache version 2.0.30 et |
| supérieures</compatibility> |
| |
| <usage> |
| |
| <p>Cette directive permet de définir si les requêtes contenant des |
| informations sous forme d'un nom de chemin suivant le nom d'un |
| fichier réel (ou un fichier qui n'existe pas dans un répertoire qui |
| existe) doivent être acceptées ou rejetées. Les scripts peuvent |
| accéder à cette information via la variable d'environnement |
| <code>PATH_INFO</code>.</p> |
| |
| <p>Supposons par exemple que <code>/test/</code> pointe vers un |
| répertoire qui ne contient que le fichier <code>here.html</code>. |
| Les requêtes pour <code>/test/here.html/more</code> et |
| <code>/test/nothere.html/more</code> vont affecter la valeur |
| <code>/more</code> à la variable d'environnement |
| <code>PATH_INFO</code>.</p> |
| |
| <p>L'argument de la directive <directive>AcceptPathInfo</directive> |
| possède trois valeurs possibles :</p> |
| <dl> |
| <dt><code>Off</code></dt><dd>Une requête ne sera acceptée que si |
| elle correspond à un chemin qui existe. Par conséquent, une requête |
| contenant une information de chemin après le nom de fichier réel |
| comme <code>/test/here.html/more</code> dans l'exemple ci-dessus |
| renverra une erreur "404 NOT FOUND".</dd> |
| |
| <dt><code>On</code></dt><dd>Une requête sera acceptée si la partie |
| principale du chemin correspond à un fichier existant. Dans |
| l'exemple ci-dessus <code>/test/here.html/more</code>, la requête |
| sera acceptée si <code>/test/here.html</code> correspond à un nom de |
| fichier valide.</dd> |
| |
| <dt><code>Default</code></dt><dd>Le traitement des requêtes est |
| déterminé par le <a |
| href="../handler.html">gestionnaire</a> responsable de la requête. |
| Le gestionnaire de base pour les fichiers normaux rejette par défaut |
| les requêtes avec <code>PATH_INFO</code>. Les gestionnaires qui |
| servent des scripts, comme<a |
| href="mod_cgi.html">cgi-script</a> et <a |
| href="mod_isapi.html">isapi-handler</a>, acceptent en général par |
| défaut les requêtes avec <code>PATH_INFO</code>.</dd> |
| </dl> |
| |
| <p>Le but premier de la directive <code>AcceptPathInfo</code> est de |
| vous permettre de remplacer le choix du gestionnaire d'accepter ou |
| de rejeter <code>PATH_INFO</code>. Ce remplacement est nécessaire |
| par exemple, lorsque vous utilisez un <a |
| href="../filter.html">filtre</a>, comme <a |
| href="mod_include.html">INCLUDES</a>, pour générer un contenu basé |
| sur <code>PATH_INFO</code>. Le gestionnaire de base va en général |
| rejeter la requête, et vous pouvez utiliser la configuration |
| suivante pour utiliser un tel script :</p> |
| |
| <example> |
| <Files "mes-chemins.shtml"><br /> |
| <indent> |
| Options +Includes<br /> |
| SetOutputFilter INCLUDES<br /> |
| AcceptPathInfo On<br /> |
| </indent> |
| </Files> |
| </example> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>AccessFileName</name> |
| <description>Nom du fichier de configuration distribué</description> |
| <syntax>AccessFileName <var>nom-du-fichier</var> |
| [<var>nom-du-fichier</var>] ...</syntax> |
| <default>AccessFileName .htaccess</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>Au cours du traitement d'une requête, le serveur recherche le |
| premier fichier de configuration existant à partir de la liste |
| de noms dans chaque répertoire composant le chemin du document, à |
| partir du moment où les fichiers de configuration distribués sont <a |
| href="#allowoverride">activés pour ce répertoire</a>. Par exemple |
| :</p> |
| |
| <example> |
| AccessFileName .acl |
| </example> |
| |
| <p>avant de renvoyer le document |
| <code>/usr/local/web/index.html</code>, le serveur va rechercher les |
| fichiers <code>/.acl</code>, <code>/usr/.acl</code>, |
| <code>/usr/local/.acl</code> et <code>/usr/local/web/.acl</code> |
| pour y lire d'éventuelles directives, à moins quelles n'aient été |
| désactivées avec</p> |
| |
| <example> |
| <Directory /><br /> |
| <indent> |
| AllowOverride None<br /> |
| </indent> |
| </Directory> |
| </example> |
| </usage> |
| <seealso><directive module="core">AllowOverride</directive></seealso> |
| <seealso><a href="../configuring.html">Fichiers de configuration</a></seealso> |
| <seealso><a href="../howto/htaccess.html">Fichiers .htaccess</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>AddDefaultCharset</name> |
| <description>Paramètre jeu de caractères par défaut à ajouter quand le |
| type de contenu d'une réponse est <code>text/plain</code> ou |
| <code>text/html</code></description> |
| <syntax>AddDefaultCharset On|Off|<var>jeu de caractères</var></syntax> |
| <default>AddDefaultCharset Off</default> |
| <contextlist><context>server config</context> |
| <context>virtual host</context><context>directory</context> |
| <context>.htaccess</context></contextlist> |
| <override>FileInfo</override> |
| |
| <usage> |
| <p>Cette directive spécifie une valeur par défaut pour le paramètre |
| jeu de caractères du type de média (le nom d'un codage de |
| caractères) à ajouter à une réponse, si et seulement si le type de |
| contenu de la réponse est soit <code>text/plain</code>, soit |
| <code>text/html</code>. Ceci va remplacer |
| tout jeu de caractères spécifié dans le corps de la réponse via un |
| élément <code>META</code>, bien que cet effet dépende en fait |
| souvent de la configuration du client de l'utilisateur. La |
| définition de <code>AddDefaultCharset Off</code> désactive cette |
| fonctionnalité. <code>AddDefaultCharset On</code> ajoute un jeu de |
| caractères par défaut de <code>iso-8859-1</code>. Toute autre valeur |
| peut être définie via le paramètre <var>jeu de caractères</var>, qui |
| doit appartenir à la liste des <a |
| href="http://www.iana.org/assignments/character-sets">valeurs de |
| jeux de caractères enregistrés par l'IANA</a> à utiliser dans les |
| types de média MIME. |
| Par exemple :</p> |
| |
| <example> |
| AddDefaultCharset utf-8 |
| </example> |
| |
| <p>La directive <directive>AddDefaultCharset</directive> ne doit |
| être utilisée que lorsque toutes les ressources textes auxquelles |
| elle s'applique possèdent le jeu de caractère spécifié, et qu'il est |
| trop contraignant de définir leur jeu de caractères |
| individuellement. Un exemple de ce type est l'ajout du paramètre jeu |
| de caractères aux ressources comportant un contenu généré, comme les |
| scripts CGI hérités qui peuvent être vulnérables à des attaques de |
| type cross-site scripting à cause des données utilisateurs incluses |
| dans leur sortie. Notez cependant qu'une meilleur solution consiste |
| à corriger (ou supprimer) ces scripts, car la définition d'un jeu de |
| caractères par défaut ne protège pas les utilisateurs qui ont activé |
| la fonctionnalité "Détection automatique de l'encodage des |
| caractères" dans leur navigateur.</p> |
| </usage> |
| <seealso><directive module="mod_mime">AddCharset</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>AddOutputFilterByType</name> |
| <description>assigne un filtre en sortie pour un type MIME |
| particulier</description> |
| <syntax>AddOutputFilterByType <var>filtre</var>[;<var>filtre</var>...] |
| <var>type MIME</var> [<var>type MIME</var>] ...</syntax> |
| <contextlist><context>server config</context> |
| <context>virtual host</context><context>directory</context> |
| <context>.htaccess</context></contextlist> |
| <override>FileInfo</override> |
| <compatibility>Disponible dans Apache version 2.0.33 et supérieures ; |
| obsolète depuis les versions 2.1</compatibility> |
| |
| <usage> |
| <p>Cette directive active un <a |
| href="../filter.html">filtre</a> en sortie particulier pour une |
| requête en fonction du <glossary>type MIME</glossary> de la réponse. |
| Suite à certains problèmes évoqués plus loin, cette directive a été |
| abandonnée. Le même résultat peut être obtenu à l'aide du module |
| <module>mod_filter</module>.</p> |
| |
| <p>L'exemple suivant active le filtre <code>DEFLATE</code> qui est |
| fourni par le module <module>mod_deflate</module>. Il va compresser |
| toute sortie dont le type MIME est <code>text/html</code> ou |
| <code>text/plain</code> avant de l'envoyer au client.</p> |
| |
| <example> |
| AddOutputFilterByType DEFLATE text/html text/plain |
| </example> |
| |
| <p>Si vous voulez assigner plusieurs filtres au contenu, leurs noms |
| doivent être séparés par des points-virgules. On peut aussi utiliser |
| une directive <directive>AddOutputFilterByType</directive> pour |
| chacun des filtres à assigner.</p> |
| |
| <p>La configuration ci-dessous impose le traitement de toute sortie |
| de script dont le type MIME est <code>text/html</code> en premier |
| lieu par le filtre <code>INCLUDES</code>, puis par le filtre |
| <code>DEFLATE</code>.</p> |
| |
| <example> |
| <Location /cgi-bin/><br /> |
| <indent> |
| Options Includes<br /> |
| AddOutputFilterByType INCLUDES;DEFLATE text/html<br /> |
| </indent> |
| </Location> |
| </example> |
| |
| <note type="warning"><title>Note</title> |
| <p>L'activation de filtres par la directive |
| <directive>AddOutputFilterByType</directive> peut partiellement |
| échouer, ou même complètement dans certains cas. Par exemple, |
| aucun filtre n'est appliqué si le <glossary>type MIME</glossary> |
| n'a pas pu être déterminé et est dans ce cas défini par la |
| directive <directive module="core">DefaultType</directive>, même |
| si la directive <directive module="core">DefaultType</directive> a |
| la même valeur.</p> |
| |
| <p>Cependant, si vous voulez vous assurer que les filtres seront |
| appliqués, assignez explicitement le type de contenu à une |
| ressource, par exemple à l'aide d'une directive <directive |
| module="mod_mime">AddType</directive> ou <directive |
| module="core">ForceType</directive>. Il est aussi recommandé de |
| définir le type de contenu dans un script CGI (non-nph).</p> |
| |
| </note> |
| </usage> |
| |
| <seealso><directive module="mod_mime">AddOutputFilter</directive></seealso> |
| <seealso><directive module="core">SetOutputFilter</directive></seealso> |
| <seealso><a href="../filter.html">Les filtres</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>AllowEncodedSlashes</name> |
| <description>Détermine si les séparateurs de chemin encodés sont |
| autorisés à transiter dans les URLs tel quel</description> |
| <syntax>AllowEncodedSlashes On|Off|NoDecode</syntax> |
| <default>AllowEncodedSlashes Off</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| <compatibility>Disponible dans Apache version 2.0.46 et |
| ultérieures. L'option NoDecode est disponible depuis la version |
| 2.2.18.</compatibility> |
| |
| <usage> |
| <p>La directive <directive>AllowEncodedSlashes</directive> permet |
| l'utilisation des URLs contenant des séparateurs de chemin |
| encodés dans la partie chemin |
| (<code>%2F</code> pour <code>/</code> et même <code>%5C</code> pour |
| <code>\</code> sur les systèmes concernés).</p> |
| |
| <p>Avec la valeur par défaut, <code>Off</code>, de telles URLs sont |
| refusées et provoquent le renvoi d'une erreur 404 (Not found).</p> |
| |
| <p>Avec la valeur <code>On</code>, ces URLs sont acceptées, et les |
| slashes encodés sont décodés comme tout autre caractère codé.</p> |
| |
| <p>Avec la valeur <code>NoDecode</code>, ces URLs sont acceptées, |
| mais les slashes codés ne sont pas décodés et laissés dans leur état |
| codé.</p> |
| |
| <p>Définir <directive>AllowEncodedSlashes</directive> à |
| <code>On</code> est surtout utile en association avec |
| <code>PATH_INFO</code>.</p> |
| |
| <note><title>Note</title> |
| <p>Si le codage des slashes dans la partie chemin est nécessaire, |
| l'utilisation de l'option <code>NoDecode</code> est fortement |
| recommandée par mesure de sécurité. Permettre le décodage des |
| slashes pourrait éventuellement induire l'autorisation de chemins |
| non sûrs.</p> |
| </note> |
| </usage> |
| <seealso><directive module="core">AcceptPathInfo</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>AllowOverride</name> |
| <description>Types de directives autorisées dans les fichiers |
| <code>.htaccess</code></description> |
| <syntax>AllowOverride All|None|<var>type directive</var> |
| [<var>type directive</var>] ...</syntax> |
| <default>AllowOverride All</default> |
| <contextlist><context>directory</context></contextlist> |
| |
| <usage> |
| <p>Lorsque le serveur trouve un fichier <code>.htaccess</code> (dont |
| le nom est défini par la directive <directive |
| module="core">AccessFileName</directive>), il doit savoir lesquelles |
| des directives placées dans ce fichier sont autorisées à modifier la |
| configuration préexistante.</p> |
| |
| <note><title>Valable seulement dans les sections |
| <Directory></title> |
| La directive <directive>AllowOverride</directive> ne peut être |
| utilisée que dans les sections <directive type="section" |
| module="core">Directory</directive> définies sans expressions |
| rationnelles, et non dans les sections <directive |
| type="section" module="core">Location</directive>, <directive |
| module="core" type="section">DirectoryMatch</directive> ou |
| <directive type="section" module="core">Files</directive>. |
| </note> |
| |
| <p>Lorsque cette directive est définie à <code>None</code>, les |
| fichiers <a href="#accessfilename">.htaccess</a> sont totalement |
| ignorés. Dans ce cas, le serveur n'essaiera même pas de lire les |
| fichiers <code>.htaccess</code> du système de fichiers.</p> |
| |
| <p>Lorsque cette directive est définie à <code>All</code>, toute |
| directive valable dans le <a |
| href="directive-dict.html#Context">Contexte</a> .htaccess sera |
| autorisée dans les fichiers <code>.htaccess</code>.</p> |
| |
| <p>L'argument <var>type directive</var> peut contenir les |
| groupements de directives suivants :</p> |
| |
| <dl> |
| <dt>AuthConfig</dt> |
| |
| <dd> |
| |
| Permet l'utilisation des directives d'autorisation (<directive |
| module="mod_authz_dbm">AuthDBMGroupFile</directive>, |
| <directive module="mod_authn_dbm">AuthDBMUserFile</directive>, |
| <directive module="mod_authz_groupfile">AuthGroupFile</directive>, |
| <directive module="core">AuthName</directive>, |
| <directive module="core">AuthType</directive>, <directive |
| module="mod_authn_file">AuthUserFile</directive>, <directive |
| module="core">Require</directive>, <em>etc.</em>).</dd> |
| |
| <dt>FileInfo</dt> |
| |
| <dd> |
| Permet l'utilisation des directives qui contrôlent les types de |
| documents (directives <directive |
| module="core">DefaultType</directive>, <directive |
| module="core">ErrorDocument</directive>, <directive |
| module="core">ForceType</directive>, <directive |
| module="mod_negotiation">LanguagePriority</directive>, |
| <directive module="core">SetHandler</directive>, <directive |
| module="core">SetInputFilter</directive>, <directive |
| module="core">SetOutputFilter</directive>, et directives du |
| module <module>mod_mime</module> Add* et Remove*, |
| <em>etc...</em>), des metadonnées des documents (<directive |
| module="mod_headers">Header</directive>, <directive |
| module="mod_headers">RequestHeader</directive>, <directive |
| module="mod_setenvif">SetEnvIf</directive>, <directive |
| module="mod_setenvif">SetEnvIfNoCase</directive>, <directive |
| module="mod_setenvif">BrowserMatch</directive>, <directive |
| module="mod_usertrack">CookieExpires</directive>, <directive |
| module="mod_usertrack">CookieDomain</directive>, <directive |
| module="mod_usertrack">CookieStyle</directive>, <directive |
| module="mod_usertrack">CookieTracking</directive>, <directive |
| module="mod_usertrack">CookieName</directive>), des directives du |
| module <module>mod_rewrite</module> (<directive |
| module="mod_rewrite">RewriteEngine</directive>, <directive |
| module="mod_rewrite">RewriteOptions</directive>, <directive |
| module="mod_rewrite">RewriteBase</directive>, <directive |
| module="mod_rewrite">RewriteCond</directive>, <directive |
| module="mod_rewrite">RewriteRule</directive>), des directives du |
| module <module>mod_alias</module> directives (<directive |
| module="mod_alias">Redirect</directive>, <directive |
| module="mod_alias">RedirectTemp</directive>, <directive |
| module="mod_alias">RedirectPermanent</directive>, <directive |
| module="mod_alias">RedirectMatch</directive>), et de la directive |
| <directive module="mod_actions">Action</directive> du module |
| <module>mod_actions</module>. |
| </dd> |
| |
| <dt>Indexes</dt> |
| |
| <dd> |
| Permet l'utilisation des directives qui contrôlent l'indexation |
| des répertoires (<directive |
| module="mod_autoindex">AddDescription</directive>, |
| <directive module="mod_autoindex">AddIcon</directive>, <directive |
| module="mod_autoindex">AddIconByEncoding</directive>, |
| <directive module="mod_autoindex">AddIconByType</directive>, |
| <directive module="mod_autoindex">DefaultIcon</directive>, <directive |
| module="mod_dir">DirectoryIndex</directive>, <a |
| href="mod_autoindex.html#indexoptions.fancyindexing"><code>FancyIndexing</code></a>, |
| <directive |
| module="mod_autoindex">HeaderName</directive>, <directive |
| module="mod_autoindex">IndexIgnore</directive>, <directive |
| module="mod_autoindex">IndexOptions</directive>, <directive |
| module="mod_autoindex">ReadmeName</directive>, |
| <em>etc...</em>).</dd> |
| |
| <dt>Limit</dt> |
| |
| <dd> |
| Permet l'utilisation des directives contrôlant l'accès au serveur |
| (<directive |
| module="mod_authz_host">Allow</directive>, <directive |
| module="mod_authz_host">Deny</directive> et <directive |
| module="mod_authz_host">Order</directive>).</dd> |
| |
| <dt>Options[=<var>Option</var>,...]</dt> |
| |
| <dd> |
| Permet l'utilisation des directives contrôlant les fonctionnalités |
| spécifiques d'un répertoire (<directive |
| module="core">Options</directive> et <directive |
| module="mod_include">XBitHack</directive>). "Options" doit être |
| suivi d'un signe "égal", puis d'une liste d'options séparées par des |
| virgules (pas d'espaces) ; ces options doivent être définies à |
| l'aide de la commande <directive |
| module="core">Options</directive>. |
| |
| <note><title>Désactivation implicite des options</title> |
| <p>Bien que la liste des options disponibles dans les fichiers |
| .htaccess puisse être limitée par cette directive, tant qu'un |
| directive <directive module="core">Options</directive> est |
| autorisée, toute autre option héritée peut être désactivée en |
| utilisant la syntaxe non-relative. En d'autres termes, ce |
| mécanisme ne peut pas forcer une option spécifique à rester |
| <em>activée</em> tout en permettant à toute autre option d'être |
| activée. |
| </p></note> |
| </dd> |
| </dl> |
| |
| <p>Exemple :</p> |
| |
| <example> |
| AllowOverride AuthConfig Indexes |
| </example> |
| |
| <p>Dans l'exemple ci-dessus, toutes les directives qui ne font |
| partie ni du groupe <code>AuthConfig</code>, ni du groupe |
| <code>Indexes</code>, provoquent une "internal |
| server error".</p> |
| |
| <note><p>Pour des raisons de sécurité et de performances, n'affectez |
| pas à <code>AllowOverride</code> une autre valeur que |
| <code>None</code> dans votre bloc <code><Directory /></code>. |
| Configurez plutôt le bloc <code><Directory></code> qui |
| concerne le répertoire dans lequel vous voulez placer votre fichier |
| <code>.htaccess</code> (ou créez-le s'il n'existe pas).</p> |
| </note> |
| |
| </usage> |
| |
| <seealso><directive module="core">AccessFileName</directive></seealso> |
| <seealso><a href="../configuring.html">Fichiers de Configuration</a></seealso> |
| <seealso><a href="../howto/htaccess.html">Fichiers .htaccess</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>AuthName</name> |
| <description>Identificateur d'autorisation à utiliser pour |
| l'authentification HTTP</description> |
| <syntax>AuthName <var>domaine d'authentification</var></syntax> |
| <contextlist><context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>AuthConfig</override> |
| |
| <usage> |
| <p>Cette directive permet de définir l'identificateur d'autorisation |
| pour un répertoire. Cet identificateur est fourni au client afin que |
| ce dernier sache quels nom d'utilisateur et mot de passe envoyer. |
| <directive>AuthName</directive> n'accepte qu'un seul argument ; si |
| l'identificateur contient des espaces, il doit être entouré |
| d'apostrophes. Il doit être associé à des directives <directive |
| module="core">AuthType</directive> et <directive |
| module="core">Require</directive>, ainsi qu'à des directives telles |
| que <directive module="mod_authn_file">AuthUserFile</directive> et |
| <directive module="mod_authz_groupfile">AuthGroupFile</directive> |
| pour pouvoir fonctionner.</p> |
| |
| <p>Par exemple :</p> |
| |
| <example> |
| AuthName "Top Secret" |
| </example> |
| |
| <p>La chaîne de caractères définie par la directive |
| <code>AuthName</code> correspond à celle que la plupart des |
| navigateurs vont fournir dans la boîte de dialogue de saisie du mot |
| de passe.</p> |
| </usage> |
| <seealso><a |
| href="../howto/auth.html">Authentification, Autorisation, et |
| contrôle d'accès</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>AuthType</name> |
| <description>Le type d'authentification de l'utilisateur</description> |
| <syntax>AuthType Basic|Digest</syntax> |
| <contextlist><context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>AuthConfig</override> |
| |
| <usage> |
| <p>Cette directive permet de définir le type d'authentification de |
| l'utilisateur pour un répertoire. Les types d'authentification |
| disponibles sont <code>Basic</code> (implémenté par |
| <module>mod_auth_basic</module>), et <code>Digest</code> (implémenté |
| par <module>mod_auth_digest</module>).</p> |
| |
| <p>Pour que l'authentification fonctionne, vous devez aussi définir |
| les directives <directive |
| module="core">AuthName</directive> et <directive |
| module="core">Require</directive>. |
| En outre, le serveur doit avoir à sa disposition un module |
| fournisseur d'authentification tel que |
| <module>mod_authn_file</module> et un module d'autorisation tel que |
| <module>mod_authz_user</module>.</p> |
| </usage> |
| |
| <seealso><a href="../howto/auth.html">Authentification et autorisation</a></seealso> |
| <seealso><a href="../howto/access.html">Tutoriel du contrôle d'accès</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>CGIMapExtension</name> |
| <description>Technique permettant de localiser l'interpréteur des |
| scripts CGI</description> |
| <syntax>CGIMapExtension <var>chemin CGI</var> <var>.extension</var></syntax> |
| <contextlist><context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| <compatibility>NetWare uniquement</compatibility> |
| |
| <usage> |
| <p>Cette directive permet de contrôler la manière dont Apache trouve |
| l'interpréteur servant à exécuter les scripts CGI. Par exemple, avec |
| la définition <code>CGIMapExtension sys:\foo.nlm .foo</code>, tous |
| les fichiers scripts CGI possédant une extension <code>.foo</code> |
| seront passés à l'interpréteur FOO.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ContentDigest</name> |
| <description>Active la génération d'un en-tête <code>Content-MD5</code> |
| dans la réponse HTTP</description> |
| <syntax>ContentDigest On|Off</syntax> |
| <default>ContentDigest Off</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>Options</override> |
| <status>Expérimental</status> |
| |
| <usage> |
| <p>Cette directive active la génération d'un en-tête |
| <code>Content-MD5</code> selon les définitions des RFC 1864 et |
| 2616.</p> |
| |
| <p>MD5 est un algorithme permettant de générer un condensé (parfois |
| appelé "empreinte") à partir de données d'une taille aléatoire ; le |
| degré de précision est tel que la moindre altération des données |
| d'origine entraîne une altération de l'empreinte.</p> |
| |
| <p>L'en-tête <code>Content-MD5</code> permet de vérifier |
| l'intégrité de la réponse HTTP dans son ensemble. Un serveur mandataire |
| ou un client peut utiliser cet en-tête pour rechercher une |
| éventuelle modification accidentelle de la réponse au cours de sa |
| transmission. Exemple d'en-tête :</p> |
| |
| <example> |
| Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA== |
| </example> |
| |
| <p>Notez que des problèmes de performances peuvent affecter votre |
| serveur, car l'empreinte est générée pour chaque requête (il n'y a |
| pas de mise en cache).</p> |
| |
| <p>L'en-tête <code>Content-MD5</code> n'est envoyé qu'avec les |
| documents servis par le module <module>core</module>, à l'exclusion |
| de tout autre module. Ainsi, les documents SSI, les sorties de |
| scripts CGI, et les réponses à des requêtes partielles (byte range) |
| ne comportent pas cet en-tête.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>DefaultType</name> |
| <description>Type de contenu MIME qui sera envoyé par défaut si le |
| serveur ne peut le déterminer d'aucune manière</description> |
| <syntax>DefaultType <var>type MIME|none</var></syntax> |
| <default>DefaultType text/plain</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| <compatibility>L'argument <code>none</code> est disponible dans les |
| versions d'Apache 2.2.7 et supérieures</compatibility> |
| |
| <usage> |
| <p>Il peut arriver que le serveur doive servir un document dont il |
| ne peut pas déterminer le type à partir de sa table de <glossary |
| ref="mime-type">types MIME</glossary>.</p> |
| |
| <p>Le serveur DEVRAIT fournir au client le type de contenu du |
| document. Si le serveur n'est pas capable de le déterminer par la |
| voie normale, il fournira le type défini par la directive |
| <code>DefaultType</code>. Par exemple :</p> |
| |
| <example> |
| DefaultType image/gif |
| </example> |
| |
| <p>conviendra pour un répertoire contenant de nombreuses images GIF |
| dont le fichier ne comporte pas l'extension <code>.gif</code>.</p> |
| |
| <p>Dans les cas où ni le serveur, ni l'administrateur (ou un |
| serveur mandataire) ne sont en mesure de déterminer le type du |
| document, il est préférable de ne pas le mentionner, plutôt que de |
| fournir de fausses informations. À cet effet, on utilise </p> |
| <example> |
| DefaultType None |
| </example> |
| <p><code>DefaultType None</code> n'est disponible que dans les |
| versions d'Apache 2.2.7 et supérieures.</p> |
| |
| <p>Notez qu'à la différence de la directive <directive |
| module="core">ForceType</directive>, cette directive ne définit que |
| le type MIME par défaut. Toute autre définition de type MIME, y |
| compris l'extension des noms de fichiers, susceptible de |
| permettre d'identifier le type de média l'emportera sur la valeur |
| par défaut.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>Directory</name> |
| <description>Regroupe un ensemble de directives qui ne s'appliquent |
| qu'au répertoire concerné du système de fichiers, à ses |
| sous-répertoires, et à leur contenu.</description> |
| <syntax><Directory <var>chemin répertoire</var>> |
| ... </Directory></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>Les balises <directive type="section">Directory</directive> et |
| <code></Directory></code> permettent de regrouper un ensemble |
| de directives qui ne s'appliquent qu'au répertoire |
| précisé, à ses sous-répertoires, et aux fichiers situés dans ces |
| sous-répertoires. Toute directive |
| autorisée dans un contexte de répertoire peut être utilisée. |
| <var>chemin répertoire</var> est soit le chemin absolu d'un |
| répertoire, soit une chaîne de caractères avec caractères génériques |
| utilisant la comparaison Unix de style shell. Dans une chaîne de |
| caractères avec caractères génériques, <code>?</code> correspond à |
| un caractère quelconque, et <code>*</code> à toute chaîne de |
| caractères. Les intervalles de caractères <code>[]</code> sont aussi |
| autorisés. Aucun caractère générique ne peut remplacer le caractère |
| `/', si bien que l'expression <code><Directory |
| /*/public_html></code> ne conviendra pas pour le chemin |
| * <code>/home/user/public_html</code>, alors que <code><Directory |
| /home/*/public_html></code> conviendra. Exemple :</p> |
| |
| <example> |
| <Directory /usr/local/httpd/htdocs><br /> |
| <indent> |
| Options Indexes FollowSymLinks<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <note> |
| <p>Soyez prudent avec l'argument <var>chemin répertoire</var> : il |
| doit correspondre exactement au chemin du système de fichier |
| qu'Apache utilise pour accéder aux fichiers. Les directives |
| comprises dans une section <code><Directory></code> ne |
| s'appliqueront pas aux fichiers du même répertoire auxquels on |
| aura accédé via un chemin différent, per exemple via un lien |
| symbolique.</p> |
| </note> |
| |
| <p> Les <glossary ref="regex">Expressions rationnelles</glossary> |
| peuvent aussi être utilisées en ajoutant le caractère |
| <code>~</code>. Par exemple :</p> |
| |
| <example> |
| <Directory ~ "^/www/[0-9]{3}"> |
| </example> |
| |
| <p>pourra correspondre à tout répertoire situé dans /www/ et dont le |
| nom se compose de trois chiffres.</p> |
| |
| <p>Si plusieurs sections <directive |
| type="section">Directory</directive> (sans expression rationnelle) |
| correspondent au répertoire (ou à un de ses parents) qui contient le |
| document, les directives de la section <directive |
| type="section">Directory</directive> dont le chemin est le plus |
| court sont appliquées en premier, en s'intercalant avec les |
| directives des fichiers <a href="#accessfilename">.htaccess</a>. Par |
| exemple, avec</p> |
| |
| <example> |
| <Directory /><br /> |
| <indent> |
| AllowOverride None<br /> |
| </indent> |
| </Directory><br /> |
| <br /> |
| <Directory /home><br /> |
| <indent> |
| AllowOverride FileInfo<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p>l'accès au document <code>/home/web/dir/doc.html</code> emprunte |
| le chemin suivant :</p> |
| |
| <ul> |
| <li>Aplication de la directive <code>AllowOverride None</code> |
| (qui désactive les fichiers <code>.htaccess</code>).</li> |
| |
| <li>Application de la directive <code>AllowOverride |
| FileInfo</code> (pour le répertoire <code>/home</code>).</li> |
| |
| <li>Application de toute directive <code>FileInfo</code> qui se |
| trouverait dans d'éventuels fichiers <code>/home/.htaccess</code>, |
| <code>/home/web/.htaccess</code> ou |
| <code>/home/web/dir/.htaccess</code>, dans cet ordre.</li> |
| </ul> |
| |
| <p>Les directives associées aux répertoires sous forme d'expressions |
| rationnelles ne sont prises en compte qu'une fois toutes les |
| directives des sections sans expressions rationnelles appliquées. |
| Alors, tous les répertoires avec expressions rationnelles sont |
| testés selon l'ordre dans lequel ils apparaissent dans le fichier de |
| configuration. Par exemple, avec</p> |
| |
| <example> |
| <Directory ~ "public_html/.*"><br /> |
| <indent> |
| # ... directives here ...<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p>la section avec expression rationnelle ne sera prise en compte |
| qu'après les sections <directive |
| type="section">Directory</directive> sans expressions rationnelles |
| et les fichiers <code>.htaccess</code>. Alors, l'expression |
| rationnelle conviendra pour <code>/home/abc/public_html/abc</code> |
| et la section <directive type="section">Directory</directive> |
| correspondante s'appliquera.</p> |
| |
| <p><strong>Notez que pour Apache, la politique d'accès par défaut |
| dans les sections <code><Directory /></code> est <code>Allow |
| from All</code>. Ceci signifie qu'Apache va servir tout fichier |
| correspondant à une URL. Il est recommandé de modifier cette |
| situation à l'aide d'un bloc du style</strong></p> |
| |
| <example> |
| <Directory /><br /> |
| <indent> |
| Order Deny,Allow<br /> |
| Deny from All<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p><strong>puis d'affiner la configuration pour les répertoires que vous |
| voulez rendre accessibles. Voir la page <a |
| href="../misc/security_tips.html">Conseils à propos de la sécurité</a> |
| pour plus de détails.</strong></p> |
| |
| <p>Les sections directory se situent dans le fichier |
| <code>httpd.conf</code>. Les directives <directive |
| type="section">Directory</directive> ne peuvent pas être imbriquées |
| et ne sont pas autorisées dans les sections <directive module="core" |
| type="section">Limit</directive> ou <directive module="core" |
| type="section">LimitExcept</directive>.</p> |
| </usage> |
| <seealso><a href="../sections.html">Comment fonctionnent les sections |
| <Directory>, <Location> et <Files></a> pour des |
| explications à propos de la manière dont ces différentes sections se |
| combinent entre elles à la réception d'une requête</seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>DirectoryMatch</name> |
| <description>Regroupe des directives qui s'appliquent à des répertoires |
| du système de fichiers correspondant à une expression rationnelle et à |
| leurs sous-répertoires</description> |
| <syntax><DirectoryMatch <var>regex</var>> |
| ... </DirectoryMatch></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>Les balises <directive type="section">DirectoryMatch</directive> |
| et <code></DirectoryMatch></code> permettent de regrouper un |
| ensemble de directives qui ne s'appliqueront qu'au répertoire |
| précisé (et aux fichiers qu'il contient), comme pour la section <directive |
| module="core" type="section">Directory</directive>. Cependant, le |
| répertoire est précisé sous la forme d'une <glossary |
| ref="regex">expression rationnelle</glossary>. Par exemple :</p> |
| |
| <example> |
| <DirectoryMatch "^/www/(.+/)?[0-9]{3}"> |
| </example> |
| |
| <p>conviendrait pour les sous-répertoires de <code>/www/</code> dont |
| le nom se compose de trois chiffres.</p> |
| |
| <note><title>Caractère de fin de ligne</title> |
| <p>Cette directive ne tient pas compte du caractère de fin de |
| ligne ($).</p> |
| </note> |
| |
| </usage> |
| <seealso><directive type="section" module="core">Directory</directive> |
| pour une description de la manière dont les expressions rationnelles |
| sont traitées en présence d'autres sections <directive |
| type="section">Directory</directive> sans expressions rationnelles</seealso> |
| <seealso><a |
| href="../sections.html">Comment fonctionnent les sections |
| <Directory>, <Location> et <Files></a> pour une |
| explication à propos de la manière dont ces différentes sections se |
| combinent entre elles à la réception d'une requête</seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>DocumentRoot</name> |
| <description>Racine de l'arborescence des documents principale visible |
| depuis Internet</description> |
| <syntax>DocumentRoot <var>chemin répertoire</var></syntax> |
| <default>DocumentRoot /usr/local/apache/htdocs</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>Cette directive permet de définir le répertoire à partir duquel |
| <program>httpd</program> va servir les fichiers. S'il ne correspond |
| pas à un <directive module="mod_alias">Alias</directive>, le chemin |
| de l'URL sera ajouté par le serveur à la racine des documents afin |
| de construire le chemin du document recherché. Exemple :</p> |
| |
| <example> |
| DocumentRoot /usr/web |
| </example> |
| |
| <p>un accès à <code>http://www.my.host.com/index.html</code> se |
| réfère alors à <code>/usr/web/index.html</code>. Si <var>chemin |
| répertoire</var> n'est pas un chemin absolu, il est considéré comme |
| relatif au chemin défini par la directive <directive |
| module="core">ServerRoot</directive>.</p> |
| |
| <p>Le répertoire défini par la directive |
| <directive>DocumentRoot</directive> ne doit pas comporter de slash |
| terminal.</p> |
| </usage> |
| <seealso><a href="../urlmapping.html#documentroot">Mise en |
| correspondance des URLs avec le système de fichiers</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>EnableMMAP</name> |
| <description>Utilise la projection en mémoire (Memory-Mapping) pour |
| lire les fichiers pendant qu'ils sont servis</description> |
| <syntax>EnableMMAP On|Off</syntax> |
| <default>EnableMMAP On</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| |
| <usage> |
| <p>Cette directive définit si <program>httpd</program> peut utiliser |
| la projection en mémoire (Memory-Mapping) s'il doit lire le contenu |
| d'un fichier pendant qu'il est servi. Par défaut, lorsque le |
| traitement d'une requête requiert l'accès aux données contenues dans |
| un fichier -- par exemple, pour servir un fichier interprété par le |
| serveur à l'aide de <module>mod_include</module> -- Apache projette |
| le fichier en mémoire si le système d'exploitation le permet.</p> |
| |
| <p>Cette projection en mémoire induit parfois une amélioration des |
| performances. Cependant, sur certains systèmes, il est préférable de |
| désactiver la projection en mémoire afin d'éviter certains problèmes |
| opérationnels :</p> |
| |
| <ul> |
| <li>Sur certains systèmes multi-processeurs, la projection en |
| mémoire peut dégrader les performances du programme |
| <program>httpd</program>.</li> |
| <li>La suppression ou la troncature d'un fichier faisant l'objet |
| d'une image en mémoire peut provoquer un crash de |
| <program>httpd</program> avec une erreur de segmentation. |
| </li> |
| </ul> |
| |
| <p>Pour les configurations de serveur sujettes à ce genre de |
| problème, il est préférable de désactiver la projection en mémoire |
| des fichiers servis en spécifiant :</p> |
| |
| <example> |
| EnableMMAP Off |
| </example> |
| |
| <p>Pour les montages NFS, cette fonctionnalité peut être |
| explicitement désactivée pour les fichiers concernés en spécifiant |
| :</p> |
| |
| <example> |
| <Directory "/chemin vers montage NFS"> |
| <indent> |
| EnableMMAP Off |
| </indent> |
| </Directory> |
| </example> |
| |
| |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>EnableSendfile</name> |
| <description>Utilise le support sendfile du noyau pour servir les |
| fichiers aux clients</description> |
| <syntax>EnableSendfile On|Off</syntax> |
| <default>EnableSendfile On</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| <compatibility>Disponible dans les versions 2.0.44 et |
| supérieures</compatibility> |
| |
| <usage> |
| <p>Cette directive définit si le programme <program>httpd</program> |
| peut utiliser le support sendfile du noyau pour transmettre le |
| contenu des fichiers aux clients. Par défaut, lorsque le traitement |
| d'une requête ne requiert pas l'accès aux données contenues dans un |
| fichier -- par exemple, pour la transmission d'un fichier statique |
| -- Apache utilise sendfile pour transmettre le contenu du fichier |
| sans même lire ce dernier, si le système d'exploitation le |
| permet.</p> |
| |
| <p>Ce mécanisme sendfile évite la séparation des opérations de |
| lecture et d'envoi, ainsi que les réservations de tampons. sur |
| certains systèmes cependant, ou sous certains systèmes de fichiers, |
| il est préférable de désactiver cette fonctionnalité afin d'éviter |
| certains problèmes opérationnels :</p> |
| |
| <ul> |
| <li>Certains systèmes peuvent présenter un support sendfile |
| défectueux que le système de compilation n'a pas détecté, en |
| particulier si les exécutables ont été compilés sur une autre |
| machine, puis copiés sur la première avec un support sendfile |
| défectueux.</li> |
| <li>Sous Linux, l'utilisation de sendfile induit des bogues lors de |
| la récupération des paquets de vérification TCP (TCP-checksum) avec |
| certaines cartes réseau lorsqu'on utilise IPv6.</li> |
| <li>Sous Linux sur plateforme Itanium, sendfile peut s'avérer |
| r.{1,2}pertoireincapable de traiter les fichiers de plus de 2 Go.</li> |
| <li>Avec un montage réseau de <directive |
| module="core">DocumentRoot</directive> (par exemple NFS ou SMB), le |
| noyau peut s'avérer incapable de servir un fichier de ce montage |
| réseau en passant par son propre cache.</li> |
| </ul> |
| |
| <p>Pour les configurations de serveur sujettes à ce genre de |
| problème, il est recommandé de désactiver cette fonctionnalité en |
| spécifiant :</p> |
| |
| <example> |
| EnableSendfile Off |
| </example> |
| |
| <p>Pour les montages NFS ou SMB, cette fonctionnalité peut être |
| explicitement désactivée pour les fichiers concernés en spécifiant |
| :</p> |
| |
| <example> |
| <Directory "/chemin vers montage réseau"> |
| <indent> |
| EnableSendfile Off |
| </indent> |
| </Directory> |
| </example> |
| <p>Veuillez noter que la configuration de la directive |
| <directive>EnableSendfile</directive> dans un contexte de répertoire |
| ou de fichier .htaccess n'est pas supportée par |
| <module>mod_disk_cache</module>. Le module ne prend en compte la |
| définition de <directive>EnableSendfile</directive> que dans un |
| contexte global. |
| </p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ErrorDocument</name> |
| <description>Document que le serveur renvoie au client en cas |
| d'erreur</description> |
| <syntax>ErrorDocument <var>code erreur</var> <var>document</var></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| <compatibility>La syntaxe des guillemets pour les messages textes est |
| différente dans Apache 2.0</compatibility> |
| |
| <usage> |
| <p>Apache peut traiter les problèmes et les erreurs de quatre |
| manières,</p> |
| |
| <ol> |
| <li>afficher un simple message d'erreur au contenu fixe</li> |
| |
| <li>afficher un message personnalisé</li> |
| |
| <li>rediriger en interne vers un <var>chemin d'URL</var> local pour traiter |
| le problème ou l'erreur</li> |
| |
| <li>rediriger vers une <var>URL</var> externe pour traiter |
| le problème ou l'erreur</li> |
| </ol> |
| |
| <p>La première option constitue le comportement par défaut; pour |
| choisir une des trois autres options, il faut configurer Apache à |
| l'aide de la directive <directive>ErrorDocument</directive>, suivie |
| du code de la réponse HTTP et d'une URL ou d'un message. Apache |
| fournit parfois des informations supplémentaires à propos du |
| problème ou de l'erreur.</p> |
| |
| <p>Les URLs peuvent commencer par un slash (/) pour les chemins web |
| locaux (relatifs au répertoire défini par la directive <directive |
| module="core">DocumentRoot</directive>), ou se présenter sous la |
| forme d'une URL complète que le client pourra résoudre. |
| Alternativement, un message à afficher par le navigateur pourra être |
| fourni. Exemples :</p> |
| |
| <example> |
| ErrorDocument 500 http://foo.example.com/cgi-bin/tester<br /> |
| ErrorDocument 404 /cgi-bin/bad_urls.pl<br /> |
| ErrorDocument 401 /subscription_info.html<br /> |
| ErrorDocument 403 "Désolé, vous n'avez pas l'autorisation d'accès |
| aujourd'hui" |
| </example> |
| |
| <p>De plus, on peut spécifier la valeur spéciale <code>default</code> |
| pour indiquer l'utilisation d'un simple message d'Apache codé en |
| dur. Bien que non nécessaire dans des circonstances normales, la |
| spécification de la valeur <code>default</code> va permettre de |
| rétablir l'utilisation du simple message d'Apache codé en dur pour |
| les configurations qui sans cela, hériteraient d'une directive |
| <directive>ErrorDocument</directive> existante.</p> |
| |
| <example> |
| ErrorDocument 404 /cgi-bin/bad_urls.pl<br /><br /> |
| <Directory /web/docs><br /> |
| <indent> |
| ErrorDocument 404 default<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p>Notez que lorsque vous spécifiez une directive |
| <directive>ErrorDocument</directive> pointant vers une URL distante |
| (c'est à dire tout ce qui commence par le préfixe http), Apache va |
| envoyer une redirection au client afin de lui indiquer où trouver le |
| document, même dans le cas où ce document se trouve sur le serveur |
| local. Ceci a de nombreuses conséquences dont la plus importante |
| réside dans le fait que le client ne recevra pas le code d'erreur |
| original, mais au contraire un code de statut de redirection. Ceci |
| peut en retour semer la confusion chez les robots web et divers |
| clients qui tentent de déterminer la validité d'une URL en examinant |
| le code de statut. De plus, si vous utilisez une URL distante avec |
| <code>ErrorDocument 401</code>, le client ne saura pas qu'il doit |
| demander un mot de passe à l'utilisateur car il ne recevra pas le |
| code de statut 401. C'est pourquoi, <strong>si vous utilisez une |
| directive <code>ErrorDocument 401</code>, elle devra faire référence |
| à un document par le biais d'un chemin local.</strong></p> |
| |
| <p>Microsoft Internet Explorer (MSIE) ignore par défaut les messages |
| d'erreur générés par le serveur lorsqu'ils sont trop courts et |
| remplacent ces propres messages d'erreur "amicaux". Le seuil de |
| taille varie en fonction du type d'erreur, mais en général, si la |
| taille de votre message d'erreur est supérieure à 512 octets, il y a |
| peu de chances pour que MSIE l'occulte, et il sera affiché par ce |
| dernier. Vous trouverez d'avantage d'informations dans l'article de |
| la base de connaissances Microsoft <a |
| href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807" |
| >Q294807</a>.</p> |
| |
| <p>Bien que la plupart des messages d'erreur internes originaux |
| puissent être remplacés, ceux-ci sont cependant conservés dans |
| certaines circonstances sans tenir compte de la définition de la |
| directive <directive module="core">ErrorDocument</directive>. En |
| particulier, en cas de détection d'une requête mal formée, le |
| processus de traitement normal des requêtes est immédiatement |
| interrompu, et un message d'erreur interne est renvoyé, ceci afin de |
| se prémunir contre les problèmes de sécurité liés aux requêtes mal |
| formées.</p> |
| |
| <p>Si vous utilisez mod_proxy, il est en général préférable |
| d'activer <directive |
| module="mod_proxy">ProxyErrorOverride</directive> afin d'être en |
| mesure de produire des messages d'erreur personnalisés pour le |
| compte de votre serveur d'origine. Si vous n'activez pas |
| ProxyErrorOverride, Apache ne générera pas de messages d'erreur |
| personnalisés pour le contenu mandaté.</p> |
| |
| <p>Avant la version 2.0, les messages étaient indiqués en les |
| préfixant par un seul caractère guillemet isolé.</p> |
| </usage> |
| |
| <seealso><a href="../custom-error.html">documentation sur la |
| personnalisation des réponses</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ErrorLog</name> |
| <description>Définition du chemin du journal des erreurs</description> |
| <syntax> ErrorLog <var>chemin fichier</var>|syslog[:<var>facility</var>]</syntax> |
| <default>ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows |
| et OS/2)</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>La directive <directive>ErrorLog</directive> permet de définir le |
| nom du fichier dans lequel le serveur va journaliser toutes les |
| erreurs qu'il rencontre. Si le <var>chemin fichier</var> n'est pas |
| absolu, il est considére comme relatif au chemin défini par la |
| directive <directive module="core">ServerRoot</directive>.</p> |
| |
| <example><title>Exemple</title> |
| ErrorLog /var/log/httpd/error_log |
| </example> |
| |
| <p>Si le <var>chemin fichier</var> commence par une barre verticale |
| "<code>|</code>", il est considéré comme une commande à lancer pour traiter la |
| journalisation de l'erreur.</p> |
| |
| <example><title>Exemple</title> |
| ErrorLog "|/usr/local/bin/erreurs_httpd" |
| </example> |
| |
| <p>Voir les notes à propos des <a href="../logs.html#piped">journaux |
| redirigés</a> pour plus de détails.</p> |
| |
| <p>L'utilisation de <code>syslog</code> à la place d'un nom de |
| fichier active la journalisation via syslogd(8) si le système le |
| supporte. Le dispositif syslog par défaut est <code>local7</code>, |
| mais vous pouvez le modifier à l'aide de la syntaxe |
| <code>syslog:<var>facility</var></code>, où <var>facility</var> peut |
| être remplacé par un des noms habituellement documentés dans la page |
| de man syslog(1).</p> |
| |
| <example><title>Exemple</title> |
| ErrorLog syslog:user |
| </example> |
| |
| <p>SECURITE : Voir le document <a |
| href="../misc/security_tips.html#serverroot">conseils à propos de |
| sécurité</a> pour des détails sur les raisons pour lesquelles votre |
| sécurité peut être compromise si le répertoire contenant les |
| fichiers journaux présente des droits en écriture pour tout autre |
| utilisateur que celui sous lequel le serveur est démarré.</p> |
| <note type="warning"><title>Note</title> |
| <p>Lors de la spécification d'un chemin de fichier sur les |
| plates-formes non-Unix, on doit veiller à n'utiliser que des |
| slashes (/), même si la plate-forme autorise l'utilisation des |
| anti-slashes (\). Et d'une manière générale, il est recommandé de |
| n'utiliser que des slashes (/) dans les fichiers de |
| configuration.</p> |
| </note> |
| </usage> |
| <seealso><directive module="core">LogLevel</directive></seealso> |
| <seealso><a href="../logs.html">Fichiers journaux d'Apache</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>FileETag</name> |
| <description>Caractéristiques de fichier utilisés lors de la génération |
| de l'en-tête de réponse HTTP ETag pour les fichiers statiques</description> |
| <syntax>FileETag <var>composant</var> ...</syntax> |
| <default>FileETag INode MTime Size</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| |
| <usage> |
| <p> |
| La directive <directive>FileETag</directive> définit les |
| caractéristiques de fichier utilisées lors de la génération de |
| l'en-tête de réponse HTTP <code>ETag</code> (entity tag) quand le |
| document est contenu dans un fichier statique (la valeur de |
| <code>ETag</code> |
| est utilisée dans le cadre de la gestion du cache pour préserver la |
| bande passante réseau). Dans les versions 1.3.22 et antérieures |
| d'Apache, la valeur de l'en-tête <code>ETag</code> se composait |
| <em>toujours</em> de l'inode du fichier, de sa taille et de sa date |
| de dernière modification (mtime). La directive |
| <directive>FileETag</directive> vous permet désormais de choisir |
| quelles caractéristiques du fichier vont être éventuellement |
| utilisées. Les mots-clés reconnus sont : |
| </p> |
| |
| <dl> |
| <dt><strong>INode</strong></dt> |
| <dd>Le numéro d'i-node du fichier sera inclus dans le processus de |
| génération</dd> |
| <dt><strong>MTime</strong></dt> |
| <dd>La date et l'heure auxquelles le fichier a été modifié la |
| dernière fois seront incluses</dd> |
| <dt><strong>Size</strong></dt> |
| <dd>La taille du fichier en octets sera incluse</dd> |
| <dt><strong>All</strong></dt> |
| <dd>Tous les champs disponibles seront utilisés. Cette définition |
| est équivalente à : <example>FileETag INode MTime |
| Size</example></dd> |
| <dt><strong>None</strong></dt> |
| <dd>Si le document se compose d'un fichier, aucun champ |
| <code>ETag</code> ne sera inclus dans la réponse</dd> |
| </dl> |
| |
| <p>Les mots-clés <code>INode</code>, <code>MTime</code>, et |
| <code>Size</code> peuvent être préfixés par <code>+</code> ou |
| <code>-</code>, ce qui permet de modifier les valeurs par défaut |
| héritées d'un niveau de configuration plus général. Tout mot-clé |
| apparaissant sans aucun préfixe annule entièrement et immédiatement |
| les configurations héritées.</p> |
| |
| <p>Si la configuration d'un répertoire contient |
| <code>FileETag INode MTime Size</code>, et si un de |
| ses sous-répertoires contient <code>FileETag -INode</code>, la |
| configuration de ce sous-répertoire (qui sera propagée vers tout |
| sous-répertoire qui ne la supplante pas), sera équivalente à |
| <code>FileETag MTime Size</code>.</p> |
| <note type="warning"><title>Avertissement</title> |
| Ne modifiez pas les valeurs par défaut pour les répertoires ou |
| localisations où WebDAV est activé et qui utilisent |
| <module>mod_dav_fs</module> comme fournisseur de stockage. |
| <module>mod_dav_fs</module> utilise |
| <code>INode MTime Size</code> comme format fixe pour les |
| comparaisons de champs <code>ETag</code> dans les requêtes |
| conditionnelles. Ces requêtes conditionnelles échoueront si le |
| format <code>ETag</code> est modifié via la directive |
| <directive>FileETag</directive>. |
| </note> |
| <note><title>Inclusions côté serveur</title> |
| Aucun champ ETag n'est généré pour les réponses interprétées par |
| <module>mod_include</module>, car l'entité de la réponse peut |
| changer sans modification de l'INode, du MTime, ou de la taille du |
| fichier statique contenant les directives SSI. |
| </note> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>Files</name> |
| <description>Contient des directives qui s'appliquent aux fichiers |
| précisés</description> |
| <syntax><Files <var>nom fichier</var>> ... </Files></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>La directive <directive type="section">Files</directive> limite |
| la portée des directives qu'elle contient aux fichiers précisés. |
| Elle est comparable aux directives <directive module="core" |
| type="section">Directory</directive> et <directive module="core" |
| type="section">Location</directive>. Elle doit se terminer par une |
| balise <code></Files></code>. Les directives contenues dans |
| cette section s'appliqueront à tout objet dont le nom de base (la |
| dernière partie du nom de fichier) correspond au fichier spécifié. |
| Les sections <directive type="section">Files</directive> sont |
| traitées selon l'ordre dans lequel elles apparaissent dans le |
| fichier de configuration, après les sections <directive module="core" |
| type="section">Directory</directive> et la lecture des fichiers |
| <code>.htaccess</code>, mais avant les sections <directive |
| type="section" module="core">Location</directive>. Notez que les |
| sections <directive type="section">Files</directive> peuvent être |
| imbriquées dans les sections <directive type="section" |
| module="core">Directory</directive> afin de restreindre la portion |
| du système de fichiers à laquelle ces dernières vont |
| s'appliquer.</p> |
| |
| <p>L'argument <var>filename</var> peut contenir un nom de fichier |
| ou une chaîne de caractères avec caractères génériques, où |
| <code>?</code> remplace un caractère, et <code>*</code> toute chaîne |
| de caractères :</p> |
| <example><pre><Files "cat.html"> |
| # Insérer ici les directives s'appliquant au fichier cat.html |
| </Files> |
| |
| <Files "?at.*"> |
| # Les directives insérées ici s'appliqueront aux fichiers cat.html, |
| # bat.html, hat.php et ainsi de suite. |
| </Files></pre></example> |
| |
| <p> |
| On peut aussi utiliser les <glossary |
| ref="regex">Expressions rationnelles</glossary> en ajoutant la |
| caractère <code>~</code>. Par exemple :</p> |
| |
| <example> |
| <Files ~ "\.(gif|jpe?g|png)$"> |
| </example> |
| |
| <p>correspondrait à la plupart des formats graphiques de l'Internet. |
| Il est cependant préférable d'utiliser la directive <directive |
| module="core" type="section">FilesMatch</directive>.</p> |
| |
| <p>Notez qu'à la différence des sections <directive type="section" |
| module="core">Directory</directive> et <directive type="section" |
| module="core">Location</directive>, les sections <directive |
| type="section">Files</directive> peuvent être utilisées dans les |
| fichiers <code>.htaccess</code>. Ceci permet aux utilisateurs de |
| contrôler l'accès à leurs propres ressources, fichier par |
| fichier.</p> |
| |
| </usage> |
| <seealso><a href="../sections.html">Comment fonctionnent les sections |
| <Directory>, <Location> et <Files></a> pour une |
| explication de la manière dont ces différentes sections se combinent |
| entre elles à la réception d'une requête</seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>FilesMatch</name> |
| <description>Contient des directives qui s'appliquent à des fichiers |
| spécifiés sous la forme d'expressions rationnelles</description> |
| <syntax><FilesMatch <var>expression rationnelle</var>> ... |
| </FilesMatch></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>La section <directive type="section">FilesMatch</directive> |
| limite la portée des directives qu'elle contient aux fichiers |
| spécifiés, tout comme le ferait une section <directive module="core" |
| type="section">Files</directive>. Mais elle accepte aussi les |
| <glossary ref="regex">expressions rationnelles</glossary>. Par |
| exemple :</p> |
| |
| <example> |
| <FilesMatch "\.(gif|jpe?g|png)$"> |
| </example> |
| |
| <p>correspondrait à la plupart des formats graphiques de |
| l'Internet.</p> |
| </usage> |
| |
| <seealso><a href="../sections.html">Comment fonctionnent les sections |
| <Directory>, <Location> et <Files></a> pour une |
| explication de la manière dont ces différentes sections se combinent |
| entre elles à la réception d'une requête</seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ForceType</name> |
| <description>Force un type de contenu MIME pour les fichiers |
| spécifiés</description> |
| <syntax>ForceType <var>type MIME</var>|None</syntax> |
| <contextlist><context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| <compatibility>Intégré dans le coeur d'Apache depuis la version |
| 2.0</compatibility> |
| |
| <usage> |
| <p>Lorsqu'elle est placée dans un fichier <code>.htaccess</code> ou |
| une section <directive type="section" |
| module="core">Directory</directive>, <directive type="section" |
| module="core">Location</directive>, ou <directive type="section" |
| module="core">Files</directive>, cette directive force |
| l'identification du type MIME des fichiers spécifiés à la valeur de |
| l'argument <var>type MIME</var>. Par exemple, si vous possédez un |
| répertoire ne contenant que des fichiers GIF, et si vous ne voulez |
| pas leur ajouter l'extension <code>.gif</code>, vous pouvez utiliser |
| :</p> |
| |
| <example> |
| ForceType image/gif |
| </example> |
| |
| <p>Notez qu'à la différence de <directive |
| module="core">DefaultType</directive>, cette directive l'emporte sur |
| toute méthode d'attribution du type MIME, y compris les extensions |
| de nom de fichier, qui parviendrait à identifier le type de |
| médium.</p> |
| |
| <p>Vous pouvez annuler toute autre définition |
| <directive>ForceType</directive> en affectant la valeur |
| <code>None</code> à l'argument <var>type MIME</var> :</p> |
| |
| <example> |
| # force le type MIME de tous les fichiers à image/gif:<br /> |
| <Location /images><br /> |
| <indent> |
| ForceType image/gif<br /> |
| </indent> |
| </Location><br /> |
| <br /> |
| # mais utilise les méthodes classiques d'attribution du type MIME |
| # dans le sous-répertoire suivant :<br /> |
| <Location /images/mixed><br /> |
| <indent> |
| ForceType None<br /> |
| </indent> |
| </Location> |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>GprofDir</name> |
| <description>Répertoire dans lequel écrire les données de profiling |
| gmon.out.</description> |
| <syntax>GprofDir <var>/tmp/gprof/</var>|<var>/tmp/gprof/</var>%</syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>Lorsque le serveur a été compilé avec le support du profiling |
| gprof, la directive <directive>GprofDir</directive> permet de |
| spécifier dans quel répertoire les fichiers <code>gmon.out</code> |
| doivent être écrits lorsque le processus s'arrête. Si l'argument se |
| termine par un caractère pourcentage ('%'), des sous-répertoires |
| sont créés pour chaque identifiant de processus.</p> |
| |
| <p>Cette directive ne fonctionne actuellement qu'avec le MPM |
| <module>prefork</module>.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>HostnameLookups</name> |
| <description>Active la recherche DNS sur les adresses IP des |
| clients</description> |
| <syntax>HostnameLookups On|Off|Double</syntax> |
| <default>HostnameLookups Off</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context></contextlist> |
| |
| <usage> |
| <p>Cette directive active la recherche DNS afin de pouvoir |
| journaliser les noms d'hôtes (et les passer aux programmes CGI et aux |
| inclusions SSI via la variable <code>REMOTE_HOST</code>). La valeur |
| <code>Double</code> déclenche une double recherche DNS inverse. En |
| d'autres termes, une fois la recherche inverse effectuée, on lance |
| une recherche directe sur le résultat de cette dernière. Au moins |
| une des adresses IP fournies par la recherche directe doit |
| correspondre à l'adresse originale (ce que l'on nomme |
| <code>PARANOID</code> dans la terminologie "tcpwrappers").</p> |
| |
| <p>Quelle que soit la configuration, lorsqu'on utilise |
| <module>mod_authz_host</module> pour contrôler l'accès en fonction |
| du nom d'hôte, une double recherche DNS inverse est effectuée, |
| sécurité oblige. Notez cependant que le résultat de cette double |
| recherche n'est en général pas accessible, à moins que vous n'ayez |
| spécifié <code>HostnameLookups Double</code>. Par exemple, si vous |
| n'avez spécifié que <code>HostnameLookups On</code>, et si une |
| requête concerne un objet protégé par des restrictions en fonction |
| du nom d'hôte, quel que soit le résultat de la double recherche |
| inverse, les programmes CGI ne recevront que le résultat de la |
| recherche inverse simple dans la variable |
| <code>REMOTE_HOST</code>.</p> |
| |
| <p>La valeur par défaut est <code>Off</code> afin de préserver le |
| traffic réseau des sites pour lesquels la recherche inverse n'est |
| pas vraiment nécessaire. Cette valeur par défaut est aussi bénéfique |
| pour les utilisateurs finaux car il n'ont ainsi pas à subir de temps |
| d'attente supplémentaires dus aux recherches DNS. Les sites |
| fortement chargés devraient laisser cette directive à |
| <code>Off</code>, car les recherches DNS peuvent prendre des temps |
| très longs. Vous pouvez éventuellement utiliser hors ligne |
| l'utilitaire <program>logresolve</program>, compilé par défaut dans |
| le sous-répertoire <code>bin</code> de votre répertoire |
| d'installation, afin de déterminer les noms d'hôtes associés aux |
| adresses IP journalisées.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>HttpProtocolOptions</name> |
| <description>Modifie les contraintes sur les messages des requêtes HTTP</description> |
| <syntax>HttpProtocolOptions [Strict|Unsafe] [RegisteredMethods|LenientMethods] |
| [Allow0.9|Require1.0]</syntax> |
| <default>HttpProtocolOptions Strict LenientMethods Allow0.9</default> |
| <contextlist><context>server config</context> |
| <context>virtual host</context></contextlist> |
| <compatibility>Disponible à partir des versions 2.2.32 et 2.4.24 du serveur HTTP |
| Apache</compatibility> |
| |
| <usage> |
| <p>Cette directive permet de modifier les règles qui s'appliquent à la ligne |
| de requête HTTP (<a |
| href="https://tools.ietf.org/html/rfc7230#section-3.1.1">RFC 7230 |
| §3.1.1</a>) et aux champs des en-têtes des requêtes HTTP (<a |
| href="https://tools.ietf.org/html/rfc7230#section-3.2">RFC 7230 |
| §3.2</a>), qui s'appliquent maintenant par défaut ou en utilisant |
| l'option <code>Strict</code>. L'option <code>Unsafe</code> |
| a été ajoutée pour pouvoir restaurer les anciens |
| comportements nécessaires aux anciens modules et applications et aux agents |
| utilisateurs personnalisés considérés comme obsolètes. Ces règles |
| s'appliquant avant le traitement de la requête, elles doivent, pour être prises en |
| compte, être définies |
| au niveau global ou dans la première section par défaut du serveur virtuel |
| qui correspond à la requête considérée, par interface IP/port et non par |
| nom.</p> |
| |
| <p>Avant l'introduction de cette directive, les interpréteurs de requêtes du |
| serveur HTTP Apache toléraient un grand nombre de formats en entrée qui |
| n'étaient pas forcément conformes au protocole. <a |
| href="https://tools.ietf.org/html/rfc7230#section-9.4">RFC 7230 §9.4 |
| Request Splitting</a> et <a |
| href="https://tools.ietf.org/html/rfc7230#section-9.5">§9.5 Response |
| Smuggling</a> ne rappellent que deux des risques potentiels induits par des |
| requêtes non conformes, alors que <a |
| href="https://tools.ietf.org/html/rfc7230#section-3.5">RFC 7230 |
| §3.5</a> signale les risques encourus par l'acceptation de blancs non |
| conformes dans les lignes de requête. Avec l'introduction de cette |
| directive, toutes les règles de grammaire de la spécification doivent être |
| respectées dans le mode d'opérations par défaut <code>Strict</code>.</p> |
| |
| <p>Il est fortement déconseillé aux utilisateurs d'utiliser le mode |
| d'opération <code>Unsafe</code>, ou |
| <code>UnsafeWhitespace</code>, en particulier pour les déploiements de |
| serveurs ouverts sur l'extérieur et/ou accessibles au public. Si un moniteur |
| défectueux ou autre logiciel spécialisé ne s'exécutant que sur un intranet |
| nécessite une interface, les utilisateurs ne doivent utiliser les options de |
| type UnSafe qu'en cas de nécessité et uniquement au sein d'un serveur |
| virtuel bien spécifique et sur un réseau privé.</p> |
| |
| <p>La consultation des messages enregistrés dans le journal |
| <directive>ErrorLog</directive>, configuré via la directive |
| <directive>LogLevel</directive> avec un niveau <code>info</code>, pourra |
| vous aider à identifier de telles requêtes non conformes ainsi que leur |
| provenance. Les utilisateurs devront accorder une attention particulière aux |
| messages d'erreur de type 400 dans le journal access pour détecter les |
| requêtes apparemment valides mais rejetées.</p> |
| |
| <p>La section de la <a |
| href="https://tools.ietf.org/html/rfc7231#section-4.1">RFC 7231 |
| §4.1</a> "Request Methods" "Overview" indique que les serveurs doivent |
| renvoyer un message d'erreur lorsque la ligne de requête comporte une |
| méthode non supportée. C'est déjà le cas lorsque l'option |
| <code>LenientMethods</code> est utilisée, mais les administrateurs ont la |
| possibilité de limiter les méthodes utilisées via l'option |
| <code>RegisteredMethods</code> en enregistrant toute méthode non standard |
| via la directive <directive>RegisterHttpMethod</directive>, en particulier |
| si l'option <code>Unsafe</code> est utilisée. L'option |
| <code>RegisteredMethods</code> <strong>ne doit pas</strong> être utilisée |
| pour les serveurs mandataires car ces derniers ne connaissent pas les |
| méthodes supportées par les serveurs originaux.</p> |
| |
| <p>La section de la <a |
| href="https://tools.ietf.org/html/rfc2616#section-19.6">RFC 2616 |
| §19.6</a> "Compatibility With Previous Versions" encouragait les |
| serveurs HTTP à supporter les anciennes requêtes HTTP/0.9. La RFC 7230 va |
| cependant à son encontre via sa préconisation "Le souhait de supporter les |
| requêtes HTTP/0.9 a été supprimé" et y adjoint des commentaires dans <a |
| href="https://tools.ietf.org/html/rfc7230#appendix-A">RFC 7230 Appendix |
| A</a>. A ce titre, l'option <code>Require1.0</code> permet à l'utilisateur |
| d'inhiber le comportement induit par l'option par défaut |
| <code>Allow0.9</code>.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>IfDefine</name> |
| <description>Contient des directives qui ne s'appliqueront que si un |
| test retourne "vrai" au démarrage du serveur</description> |
| <syntax><IfDefine [!]<var>paramètre</var>> ... |
| </IfDefine></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>La section <code><IfDefine |
| <var>test</var>>...</IfDefine></code> permet de |
| conférer un caractère conditionnel à un ensemble de directives. Les |
| directives situées à l'intérieur d'une section <directive |
| type="section">IfDefine</directive> ne s'appliquent que si |
| <var>test</var> est vrai. Si <var>test</var> est faux, tout ce qui |
| se trouve entre les balises de début et de fin est ignoré.</p> |
| |
| <p><var>test</var> peut se présenter sous deux formes :</p> |
| |
| <ul> |
| <li><var>nom paramètre</var></li> |
| |
| <li><code>!</code><var>nom paramètre</var></li> |
| </ul> |
| |
| <p>Dans le premier cas, les directives situées entre les balises de |
| début et de fin ne s'appliqueront que si le paramètre nommé <var>nom |
| paramètre</var> est défini. Le second format inverse le test, et |
| dans ce cas, les directives ne s'appliqueront que si <var>nom |
| paramètre</var> n'est <strong>pas</strong> défini.</p> |
| |
| <p>La définition de l'argument <var>nom paramètre</var> |
| s'effectue au niveau de la ligne de commande |
| <program>httpd</program> via le paramètre |
| <code>-D<var>paramètre</var></code> au démarrage du serveur.</p> |
| |
| <p>Les sections <directive type="section">IfDefine</directive> |
| peuvent être imbriquées, ce qui permet de mettre en oeuvre un test |
| multi-paramètres simple. Exemple :</p> |
| |
| <example> |
| httpd -DReverseProxy -DUseCache -DMemCache ...<br /> |
| <br /> |
| # httpd.conf<br /> |
| <IfDefine ReverseProxy><br /> |
| <indent> |
| LoadModule proxy_module modules/mod_proxy.so<br /> |
| LoadModule proxy_http_module modules/mod_proxy_http.so<br /> |
| <IfDefine UseCache><br /> |
| <indent> |
| LoadModule cache_module modules/mod_cache.so<br /> |
| <IfDefine MemCache><br /> |
| <indent> |
| LoadModule mem_cache_module modules/mod_mem_cache.so<br /> |
| </indent> |
| </IfDefine><br /> |
| <IfDefine !MemCache><br /> |
| <indent> |
| LoadModule disk_cache_module modules/mod_disk_cache.so<br /> |
| </indent> |
| </IfDefine> |
| </indent> |
| </IfDefine> |
| </indent> |
| </IfDefine> |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>IfModule</name> |
| <description>Contient des directives qui ne s'appliquent qu'en fonction |
| de la présence ou de l'absence d'un module spécifique</description> |
| <syntax><IfModule [!]<var>fichier module</var>|<var>identificateur |
| module</var>> ... </IfModule></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>All</override> |
| <compatibility>Les identificateurs de modules sont disponibles dans les |
| versions 2.1 et supérieures.</compatibility> |
| |
| <usage> |
| <p>La section <code><IfModule |
| <var>test</var>>...</IfModule></code> permet de conférer à |
| des directives un caractère conditionnel basé sur la présence d'un |
| module spécifique. Les directives situées dans une section |
| <directive type="section">IfModule</directive> ne s'appliquent que |
| si <var>test</var> est vrai. Si <var>test</var> est faux, tout ce |
| qui se trouve entre les balises de début et de fin est ignoré.</p> |
| |
| <p><var>test</var> peut se présenter sous deux formes :</p> |
| |
| <ul> |
| <li><var>module</var></li> |
| |
| <li>!<var>module</var></li> |
| </ul> |
| |
| <p>Dans le premier cas, les directives situées entre les balises de |
| début et de fin ne s'appliquent que si le module <var>module</var> |
| est présent -- soit compilé avec le binaire httpd, soit chargé |
| dynamiquement via la directive <directive module="mod_so" |
| >LoadModule</directive>. Le second format inverse le test, et dans |
| ce cas, les directives ne s'appliquent que si <var>module</var> |
| n'est <strong>pas</strong> présent.</p> |
| |
| <p>L'argument <var>module</var> peut contenir soit l'identificateur |
| du module, soit le nom du fichier source du module. Par exemple, |
| <code>rewrite_module</code> est un identificateur et |
| <code>mod_rewrite.c</code> le nom du fichier source |
| correspondant. Si un module comporte plusieurs fichiers sources, |
| utilisez le nom du fichier qui contient la chaîne de caractères |
| <code>STANDARD20_MODULE_STUFF</code>.</p> |
| |
| <p>Les sections <directive type="section">IfModule</directive> |
| peuvent être imbriquées, ce qui permet d'implémenter des tests |
| multi-modules simples.</p> |
| |
| <note>Cette section ne doit être utilisée que si votre fichier de |
| configuration ne fonctionne qu'en fonction de la présence ou de |
| l'absence d'un module spécifique. D'une manière générale, il n'est |
| pas nécessaire de placer les directives à l'intérieur de sections |
| <directive type="section">IfModule</directive>.</note> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>Include</name> |
| <description>Inclut d'autres fichiers de configuration dans un des |
| fichiers de configuration du serveur</description> |
| <syntax>Include <var>chemin fichier</var>|<var>chemin |
| répertoire</var></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context> |
| </contextlist> |
| <compatibility>Utilisation des caractères génériques depuis la version |
| 2.0.41, utilisation des caractères génériques pour les répertoires |
| depuis la version 2.3.6</compatibility> |
| |
| <usage> |
| <p>Cette directive permet l'inclusion d'autres fichiers de |
| configuration dans un des fichiers de configuration du serveur.</p> |
| |
| <p>On peut utiliser des caractères génériques de style Shell |
| (<code>fnmatch()</code>) dans le nom du fichier ou la partie |
| répertoire pour inclure plusieurs fichiers en une |
| seule fois, selon leur ordre alphabétique. De plus, si la directive |
| <directive>Include</directive> pointe vers un répertoire, Apache |
| inclura tous les fichiers de ce répertoire et de tous ces |
| sous-répertoires. L'inclusion de répertoires entiers est cependant |
| déconseillée, car il est fréquent d'oublier des fichiers |
| temporaires dans un répertoire, ce qui causerait une erreur |
| <program>httpd</program> en cas d'inclusion. Nous vous recommandons |
| plutôt d'utiliser la syntaxe avec caractères génériques vue ci-dessous |
| pour inclure des fichiers dont le nom correspond à un modèle |
| particulier, comme *.conf par exemple.</p> |
| |
| <p>Lorsqu'on utilise un caractère générique dans le nom de fichier |
| ou la partie répertoire du chemin, et si aucun fichier ou répertoire |
| ne correspond au modèle, la directive <directive |
| module="core">Include</directive> sera silencieusement ignorée. Si |
| un nom de fichier ou un répertoire du chemin est spécifié sans |
| caractère générique, et si ce répertoire ou fichier n'existe pas, la |
| directive <directive module="core">Include</directive> échouera et |
| renverra un message d'erreur indiquant que le répertoire ou fichier |
| n'a pas pu être trouvé. Il |
| devient ainsi inutile de créer des fichiers fictifs destinés à |
| correspondre par défaut à un chemin contenant des caractères |
| génériques.</p> |
| |
| <p>Le chemin fichier spécifié peut être soit un chemin absolu, soit |
| un chemin relatif au répertoire défini par la directive <directive |
| module="core">ServerRoot</directive>.</p> |
| |
| <p>Exemples :</p> |
| |
| <example> |
| Include /usr/local/apache2/conf/ssl.conf<br /> |
| Include /usr/local/apache2/conf/vhosts/*.conf |
| </example> |
| |
| <p>ou encore, avec des chemins relatifs au répertoire défini par la |
| directive <directive module="core">ServerRoot</directive> :</p> |
| |
| <example> |
| Include conf/ssl.conf<br /> |
| Include conf/vhosts/*.conf |
| </example> |
| </usage> |
| |
| <seealso><program>apachectl</program></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>KeepAlive</name> |
| <description>Active les connexions HTTP persistantes</description> |
| <syntax>KeepAlive On|Off</syntax> |
| <default>KeepAlive On</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>L'extension Keep-Alive de HTTP/1.0 et l'implémentation des |
| connexions persistantes dans HTTP/1.1 ont rendu possibles des |
| sessions HTTP de longue durée, ce qui permet de transmettre |
| plusieurs requêtes via la même connexion TCP. Dans certains cas, le |
| gain en rapidité pour des documents comportant de nombreuses images |
| peut atteindre 50%. Pour activer les connexions persistantes, |
| définissez <code>KeepAlive On</code>.</p> |
| |
| <p>Pour les clients HTTP/1.0, les connexions persistantes ne seront |
| mises en oeuvre que si elles ont été spécialement demandées par un |
| client. De plus, une connexion persistante avec un client HTTP/1.0 |
| ne peut être utilisée que si la taille du contenu est connue |
| d'avance. Ceci implique que les contenus dynamiques comme les |
| sorties CGI, les pages SSI, et les listings de répertoires générés |
| par le serveur n'utiliseront en général pas les connexions |
| persistantes avec les clients HTTP/1.0. Avec les clients HTTP/1.1, |
| les connexions persistantes sont utilisées par défaut, sauf |
| instructions contraires. Si le client le demande, le transfert par |
| tronçons de taille fixe (chunked encoding) sera utilisé afin de |
| transmettre un contenu de longueur inconnue via une connexion |
| persistante.</p> |
| |
| <p>Lorsqu'un client utilise une connexion persistante, elle comptera |
| pour une seule requête pour la directive MaxRequestsPerChild, quel |
| que soit le nombre de requêtes transmises via cette connexion.</p> |
| </usage> |
| |
| <seealso><directive module="core">MaxKeepAliveRequests</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>KeepAliveTimeout</name> |
| <description>Durée pendant laquelle le serveur va attendre une requête |
| avant de fermer une connexion persistante</description> |
| <syntax>KeepAliveTimeout <var>secondes</var></syntax> |
| <default>KeepAliveTimeout 5</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>Le nombre de secondes pendant lesquelles Apache va attendre une |
| requête avant de fermer la connexion. La valeur du délai spécifiée |
| par la directive <directive module="core">Timeout</directive> |
| s'applique dès qu'une requête a été reçue.</p> |
| |
| <p>Donner une valeur trop élévée à |
| <directive>KeepAliveTimeout</directive> peut induire des problèmes |
| de performances sur les serveurs fortement chargés. Plus le délai |
| est élévé, plus nombreux seront les processus serveur en attente de |
| requêtes de la part de clients inactifs.</p> |
| |
| <p>Dans un contexte de serveur virtuel à base de nom, c'est le délai |
| du premier serveur virtuel défini (le serveur par défaut) parmi un |
| ensemble de directives <directive |
| module="core">NameVirtualHost</directive> qui sera utilisé. Les |
| autres valeurs seront ignorées.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>Limit</name> |
| <description>Restreint les contrôles d'accès que la section contient à |
| certaines méthodes HTTP</description> |
| <syntax><Limit <var>méthode</var> [<var>méthode</var>] ... > ... |
| </Limit></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>Les contrôles d'accès s'appliquent normalement à |
| <strong>toutes</strong> les méthodes d'accès, et c'est en général le |
| comportement souhaité. <strong>Dans le cas général, les directives |
| de contrôle d'accès n'ont pas à être placées dans une section |
| <directive type="section">Limit</directive>.</strong></p> |
| |
| <p>La directive <directive type="section">Limit</directive> a pour |
| but de limiter les effets des contrôles d'accès aux méthodes HTTP |
| spécifiées. Pour toutes les autres méthodes, les restrictions |
| d'accès contenues dans la section <directive |
| type="section">Limit</directive> <strong>n'auront aucun |
| effet</strong>. L'exemple suivant n'applique les contrôles d'accès |
| qu'aux méthodes <code>POST</code>, <code>PUT</code>, et |
| <code>DELETE</code>, en laissant les autres méthodes sans protection |
| :</p> |
| |
| <example> |
| <Limit POST PUT DELETE><br /> |
| <indent> |
| Require valid-user<br /> |
| </indent> |
| </Limit> |
| </example> |
| |
| <p>La liste des noms de méthodes peut contenir une ou plusieurs |
| valeurs parmi les suivantes : <code>GET</code>, <code>POST</code>, |
| <code>PUT</code>, <code>DELETE</code>, <code>CONNECT</code>, |
| <code>OPTIONS</code>, <code>PATCH</code>, <code>PROPFIND</code>, |
| <code>PROPPATCH</code>, <code>MKCOL</code>, <code>COPY</code>, |
| <code>MOVE</code>, <code>LOCK</code>, et <code>UNLOCK</code>. |
| <strong>Le nom de méthode est sensible à la casse.</strong> Si la |
| valeur <code>GET</code> est présente, les requêtes <code>HEAD</code> |
| seront aussi concernées. La méthode <code>TRACE</code> ne peut pas |
| être limitée.</p> |
| |
| <note type="warning">Une section <directive type="section" |
| module="core">LimitExcept</directive> doit toujours être préférée à |
| une section <directive type="section" |
| module="core">Limit</directive> pour la restriction d'accès, car une |
| section <directive type="section" |
| module="core">LimitExcept</directive> fournit une protection contre |
| les méthodes arbitraires.</note> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>LimitExcept</name> |
| <description>Applique les contrôles d'accès à toutes les méthodes HTTP, |
| sauf celles qui sont spécifiées</description> |
| <syntax><LimitExcept <var>méthode</var> [<var>méthode</var>] ... > ... |
| </LimitExcept></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p><directive type="section">LimitExcept</directive> et |
| <code></LimitExcept></code> permettent de regrouper des |
| directives de contrôle d'accès qui s'appliqueront à toutes les |
| méthodes d'accès HTTP qui ne font <strong>pas</strong> partie de la |
| liste des arguments ; en d'autres termes, elles ont un comportement |
| opposé à celui de la section <directive type="section" |
| module="core">Limit</directive>, et on peut les utiliser pour |
| contrôler aussi bien les méthodes standards que les méthodes non |
| standards ou non reconnues. Voir la documentation de la section |
| <directive module="core" type="section">Limit</directive> pour plus |
| de détails.</p> |
| |
| <p>Par exemple :</p> |
| |
| <example> |
| <LimitExcept POST GET><br /> |
| <indent> |
| Require valid-user<br /> |
| </indent> |
| </LimitExcept> |
| </example> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>LimitInternalRecursion</name> |
| <description>Détermine le nombre maximal de redirections internes et de |
| sous-requêtes imbriquées</description> |
| <syntax>LimitInternalRecursion <var>nombre</var> [<var>nombre</var>]</syntax> |
| <default>LimitInternalRecursion 10</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| <compatibility>Disponible à partir de la version 2.0.47 d'Apache</compatibility> |
| |
| <usage> |
| <p>Une redirection interne survient, par exemple, quand on utilise |
| la directive <directive module="mod_actions">Action</directive> qui |
| redirige en interne la requête d'origine vers un script CGI. Une |
| sous-requête est le mécanisme qu'utilise Apache pour déterminer ce |
| qui se passerait pour un URI s'il faisait l'objet d'une requête. Par |
| exemple, <module>mod_dir</module> utilise les sous-requêtes pour |
| rechercher les fichiers listés dans la directive <directive |
| module="mod_dir">DirectoryIndex</directive>.</p> |
| |
| <p>La directive <directive>LimitInternalRecursion</directive> permet |
| d'éviter un crash du serveur dû à un bouclage infini de redirections |
| internes ou de sous-requêtes. De tels bouclages sont dus en général |
| à des erreurs de configuration.</p> |
| |
| <p>La directive accepte, comme arguments, deux limites qui sont |
| évaluées à chaque requête. Le premier <var>nombre</var> est le |
| nombre maximum de redirections internes qui peuvent se succéder. Le |
| second <var>nombre</var> détermine la profondeur d'imbrication |
| maximum des sous-requêtes. Si vous ne spécifiez qu'un seul |
| <var>nombre</var>, il sera affecté aux deux limites.</p> |
| |
| <example><title>Exemple</title> |
| LimitInternalRecursion 5 |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>LimitRequestBody</name> |
| <description>limite la taille maximale du corps de la requête HTTP |
| envoyée par le client</description> |
| <syntax>LimitRequestBody <var>octets</var></syntax> |
| <default>LimitRequestBody 0</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>Cette directive spécifie la taille maximale autorisée pour le |
| corps d'une requête ; la valeur de l'argument <var>octets</var> va |
| de 0 (pour une taille illimitée), à 2147483647 (2Go).</p> |
| |
| <p>La directive <directive>LimitRequestBody</directive> permet de |
| définir une limite pour la taille maximale autorisée du corps d'une |
| requête HTTP en tenant compte du contexte dans lequel la directive |
| a été placée (c'est à dire au niveau du serveur, d'un répertoire, |
| d'un fichier ou d'un chemin d'url). Si la requête du client dépasse |
| cette limite, le serveur répondra par un message d'erreur et ne |
| traitera pas la requête. La taille du corps d'une requête normale va |
| varier de manière importante en fonction de la nature de la |
| ressource et des méthodes autorisées pour cette dernière. Les |
| scripts CGI utilisent souvent le corps du message pour extraire les |
| informations d'un formulaire. Les implémentations de la méthode |
| <code>PUT</code> nécessitent une valeur au moins aussi élevée que la |
| taille maximale des représentations que le serveur désire accepter |
| pour cette ressource.</p> |
| |
| <p>L'administrateur du serveur peut utiliser cette directive pour |
| contrôler plus efficacement les comportements anormaux des requêtes |
| des clients, ce qui lui permettra de prévenir certaines formes |
| d'attaques par déni de service.</p> |
| |
| <p>Si par exemple, vous autorisez le chargement de fichiers vers une |
| localisation particulière, et souhaitez limiter la taille des |
| fichiers chargés à 100Ko, vous pouvez utiliser la directive suivante |
| :</p> |
| |
| <example> |
| LimitRequestBody 102400 |
| </example> |
| |
| <note>Note : ne s'applique pas aux requêtes mandatées.</note> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>LimitRequestFields</name> |
| <description>Limite le nombre de champs d'en-tête autorisés dans une |
| requête HTTP</description> |
| <syntax>LimitRequestFields <var>nombre</var></syntax> |
| <default>LimitRequestFields 100</default> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p><var>nombre</var> est un entier de 0 (nombre de champs illimité) |
| à 32767. La valeur par défaut est définie à la compilation par la |
| constante <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> (100 selon la |
| distribution).</p> |
| |
| <p>La directive <directive>LimitRequestFields</directive> permet à |
| l'administrateur du serveur de modifier le nombre maximum de champs |
| d'en-tête autorisés dans une requête HTTP. Pour un serveur, cette |
| valeur doit être supérieure au nombre de champs qu'une requête |
| client normale peut contenir. Le nombre de champs d'en-tête d'une |
| requête qu'un client utilise dépasse rarement 20, mais ce nombre |
| peut varier selon les implémentations des clients, et souvent en |
| fonction des extensions que les utilisateurs configurent dans leurs |
| navigateurs pour supporter la négociation de contenu détaillée. Les |
| extensions HTTP optionnelles fonctionnent utilisent souvent les |
| champs d'en-tête des requêtes.</p> |
| |
| <p>L'administrateur du serveur peut utiliser cette directive pour |
| contrôler plus efficacement les comportements anormaux des requêtes |
| des clients, ce qui lui permettra de prévenir certaines formes |
| d'attaques par déni de service. La valeur spécifiée doit être |
| augmentée si les clients standards reçoivent une erreur du serveur |
| indiquant que la requête comportait un nombre d'en-têtes trop |
| important.</p> |
| |
| <p>Par exemple :</p> |
| |
| <example> |
| LimitRequestFields 50 |
| </example> |
| |
| <note type="warning"><title>Avertissement</title> |
| <p>Dans le cas des serveurs virtuels par noms, la valeur de |
| cette directive est extraite du serveur virtuel par défaut (le |
| premier de la liste) pour lequel la connexion correspondait à la |
| directive <directive>NameVirtualHost</directive>.</p> |
| </note> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>LimitRequestFieldSize</name> |
| <description>Dédinit la taille maximale autorisée d'un en-tête de |
| requête HTTP</description> |
| <syntax>LimitRequestFieldSize <var>octets</var></syntax> |
| <default>LimitRequestFieldSize 8190</default> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>Cette directive permet de définir le nombre maximum |
| d'<var>octets</var> autorisés dans un en-tête de requête HTTP.</p> |
| |
| <p>La directive <directive>LimitRequestFieldSize</directive> permet |
| à l'administrateur du serveur de définir la taille |
| maximale autorisée d'un en-tête de requête HTTP. Pour un serveur, |
| cette valeur doit être suffisamment grande pour contenir tout |
| en-tête d'une requête client normale. La taille d'un champ d'en-tête |
| de requête normal va varier selon les implémentations des clients, |
| et en fonction des extensions que les utilisateurs |
| configurent dans leurs navigateurs pour supporter la négociation de |
| contenu détaillée. Les en-têtes d'authentification SPNEGO peuvent |
| atteindre une taille de 12392 octets.</p> |
| |
| <p>>L'administrateur du serveur peut utiliser cette directive pour |
| contrôler plus efficacement les comportements anormaux des requêtes |
| des clients, ce qui lui permettra de prévenir certaines formes |
| d'attaques par déni de service.</p> |
| |
| <p>Par exemple ::</p> |
| |
| <example> |
| LimitRequestFieldSize 4094 |
| </example> |
| |
| <note>Dans des conditions normales, la valeur par défaut de cette |
| directive ne doit pas être modifiée.</note> |
| |
| <note type="warning"><title>Avertissement</title> |
| <p>Dans le cas des serveurs virtuels par noms, la valeur de |
| cette directive est extraite du serveur virtuel par défaut (le |
| premier de la liste) pour lequel la connexion correspondait à la |
| directive <directive>NameVirtualHost</directive>.</p> |
| </note> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>LimitRequestLine</name> |
| <description>Définit la taille maximale d'une ligne de requête |
| HTTP</description> |
| <syntax>LimitRequestLine <var>octets</var></syntax> |
| <default>LimitRequestLine 8190</default> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>Cette directive permet de définir la taille maximale autorisée |
| pour une ligne de requête HTTP en <var>octets</var>.</p> |
| |
| <p>La directive <directive>LimitRequestLine</directive> permet à |
| l'administrateur du serveur de définir la taille |
| maximale autorisée d'une ligne de requête HTTP client. Comme une |
| requête comporte une méthode HTTP, un URI, et une version de |
| protocole, la directive <directive>LimitRequestLine</directive> |
| impose une restriction sur la longueur maximale autorisée pour un |
| URI dans une requête au niveau du serveur. Pour un serveur, cette |
| valeur doit être suffisamment grande pour référencer les noms de |
| toutes ses ressources, y compris toutes informations pouvant être |
| ajoutées dans la partie requête d'une méthode <code>GET</code>.</p> |
| |
| <p>L'administrateur du serveur peut utiliser cette directive pour |
| contrôler plus efficacement les comportements anormaux des requêtes |
| des clients, ce qui lui permettra de prévenir certaines formes |
| d'attaques par déni de service.</p> |
| |
| <p>Par exemple :</p> |
| |
| <example> |
| LimitRequestLine 4094 |
| </example> |
| |
| <note>Dans des conditions normales, cette directive doit conserver |
| sa valeur par défaut.</note> |
| |
| <note type="warning"><title>Avertissement</title> |
| <p>Dans le cas des serveurs virtuels par noms, la valeur de |
| cette directive est extraite du serveur virtuel par défaut (le |
| premier de la liste) pour lequel la connexion correspondait à la |
| directive <directive>NameVirtualHost</directive>.</p> |
| </note> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>LimitXMLRequestBody</name> |
| <description>Définit la taille maximale du corps d'une requête au format |
| XML</description> |
| <syntax>LimitXMLRequestBody <var>octets</var></syntax> |
| <default>LimitXMLRequestBody 1000000</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context></contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>Taille maximale (en octets) du corps d'une requête au format XML. |
| Une valeur de <code>0</code> signifie qu'aucune limite n'est |
| imposée.</p> |
| |
| <p>Exemple :</p> |
| |
| <example> |
| LimitXMLRequestBody 0 |
| </example> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>Location</name> |
| <description>N'applique les directives contenues qu'aux URLs |
| spécifiées</description> |
| <syntax><Location |
| <var>chemin URL</var>|<var>URL</var>> ... </Location></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>La directive <directive type="section">Location</directive> |
| limite la portée des directives contenues aux URLs définies par |
| l'argument URL. Elle est similaire à la directive <directive |
| type="section" module="core">Directory</directive>, et marque le |
| début d'une section qui se termine par une directive |
| <code></Location></code>. Les sections <directive |
| type="section">Location</directive> sont traitées selon l'ordre dans |
| lequel elles apparaissent dans le fichier de configuration, mais |
| après les sections <directive |
| type="section" module="core">Directory</directive> et la lecture des |
| fichiers <code>.htaccess</code>, et après les sections <directive |
| type="section" module="core">Files</directive>.</p> |
| |
| <p>Les sections <directive type="section">Location</directive> |
| agissent complètement en dehors du système de fichiers. Ceci a de |
| nombreuses conséquences. Parmi les plus importantes, on ne doit pas |
| utiliser les sections <directive type="section">Location</directive> |
| pour contrôler l'accès aux répertoires du système de fichiers. Comme |
| plusieurs URLs peuvent correspondre au même répertoire du système de |
| fichiers, un tel contrôle d'accès pourrait être contourné.</p> |
| |
| <p>Les directives que contient cette section seront appliquées aux |
| requêtes si la partie chemin de l'URL satisfait à l'un au moins de |
| ces critères :</p> |
| <ul> |
| <li>Le chemin spécifié correspond exactement à la partie chemin de |
| l'URL. |
| </li> |
| <li>Le chemin spécifié, qui se termine par un slash, est un |
| préfixe de la partie chemin de l'URL (traité comme une racine du |
| contexte). |
| </li> |
| <li>Le chemin spécifié, si on lui ajoute un slash de fin, est un |
| préfixe de la partie chemin de l'URL (aussi traité comme une racine du |
| contexte). |
| </li> |
| </ul> |
| <p>Dans l'exemple ci-dessous, où aucun slash de fin n'est utilisé, les |
| directives contenues dans la section s'appliqueront à /private1, |
| /private1/ et /private1/file.txt, mais pas à /private1other.</p> |
| <example> |
| <Location /private1> |
| ... |
| </example> |
| <p>De même, dans l'exemple ci-dessous, où l'on utilise un slash de fin, les |
| directives contenues dans la section s'appliqueront à /private2/ et |
| à /private2/file.txt, mais pas à /private2other.</p> |
| <example> |
| <Location /private2<em>/</em>> |
| ... |
| </example> |
| |
| <note><title>Quand utiliser la section <directive |
| type="section">Location</directive></title> |
| |
| <p>Vous pouvez utiliser une section <directive |
| type="section">Location</directive> pour appliquer des directives à |
| des contenus situés en dehors du système de fichiers. Pour les |
| contenus situés à l'intérieur du système de fichiers, utilisez |
| plutôt les sections <directive |
| type="section" module="core">Directory</directive> et <directive |
| type="section" module="core">Files</directive>. <code><Location |
| /></code> constitue une exception à cette règle et permet d'appliquer |
| aisément une configuration à l'ensemble du serveur.</p> |
| </note> |
| |
| <p>Pour toutes les requêtes originales (non mandatées), l'argument |
| URL est un chemin d'URL de la forme |
| <code>/chemin/</code>. <em>Aucun protocole, nom d'hôte, port, ou chaîne |
| de requête ne doivent apparaître.</em> Pour les requêtes mandatées, l'URL |
| spécifiée doit être de la forme |
| <code>protocole://nom_serveur/chemin</code>, et vous devez inclure |
| le préfixe.</p> |
| |
| <p>L'URL peut contenir des caractères génériques. Dans une chaîne |
| avec caractères génériques, <code>?</code> correspond à un caractère |
| quelconque, et <code>*</code> à toute chaîne de caractères. Les |
| caractères génériques ne peuvent pas remplacer un / dans le chemin |
| URL.</p> |
| |
| <p>On peut également utiliser les <glossary ref="regex">Expressions |
| rationnelles</glossary>, moyennant l'addition d'un caractère |
| <code>~</code>. Par exemple :</p> |
| |
| <example> |
| <Location ~ "/(extra|special)/data"> |
| </example> |
| |
| <p>concernerait les URLs contenant les sous-chaîne |
| <code>/extra/data</code> ou <code>/special/data</code>. La directive |
| <directive type="section" module="core">LocationMatch</directive> |
| présente un comportement identique à la version avec expressions |
| rationnelles de la directive <directive |
| type="section">Location</directive>.</p> |
| |
| <p>La directive <directive type="section">Location</directive> |
| s'utilise principalement avec la directive <directive |
| module="core">SetHandler</directive>. Par exemple, pour activer les |
| requêtes d'état, mais ne les autoriser que depuis des navigateurs |
| appartenant au domaine <code>example.com</code>, vous pouvez |
| utiliser :</p> |
| |
| <example> |
| <Location /status><br /> |
| <indent> |
| SetHandler server-status<br /> |
| Order Deny,Allow<br /> |
| Deny from all<br /> |
| Allow from .example.com<br /> |
| </indent> |
| </Location> |
| </example> |
| |
| <note><title>Note à propos du slash (/)</title> |
| <p>La signification du caractère slash dépend de l'endroit où il |
| se trouve dans l'URL. Les utilisateurs peuvent être habitués à |
| son comportement dans le système de fichiers où plusieurs slashes |
| successifs sont souvent réduits à un slash unique (en d'autres |
| termes, <code>/home///foo</code> est identique à |
| <code>/home/foo</code>). Dans l'espace de nommage des URLs, ce |
| n'est cependant pas toujours le cas. Pour la directive <directive |
| type="section" module="core">LocationMatch</directive> et la |
| version avec expressions rationnelles de la directive <directive |
| type="section">Location</directive>, vous devez spécifier |
| explicitement les slashes multiples si telle est votre |
| intention.</p> |
| |
| <p>Par exemple, <code><LocationMatch ^/abc></code> va |
| correspondre à l'URL <code>/abc</code> mais pas à l'URL <code> |
| //abc</code>. La directive <directive type="section" |
| >Location</directive> sans expression rationnelle se comporte de |
| la même manière lorsqu'elle est utilisée pour des requêtes |
| mandatées. En revanche, lorsque la directive <directive |
| type="section">Location</directive> sans expression rationnelle |
| est utilisée pour des requêtes non mandatées, elle fera |
| correspondre implicitement les slashes multiples à des slashes |
| uniques. Par exemple, si vous spécifiez <code><Location |
| /abc/def></code>, une requête de la forme |
| <code>/abc//def</code> correspondra.</p> |
| </note> |
| </usage> |
| <seealso><a href="../sections.html">Comment fonctionnent les sections |
| <Directory>, <Location> et <Files></a> pour une |
| explication de la manière dont ces différentes sections se combinent |
| entre elles à la réception d'une requête.</seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>LocationMatch</name> |
| <description>N'applique les directives contenues qu'aux URLs |
| correspondant à une expression rationnelle</description> |
| <syntax><LocationMatch |
| <var>regex</var>> ... </LocationMatch></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>La directive <directive type="section">LocationMatch</directive> |
| limite la portée des directives contenues à l'URL spécifiée, de |
| manière identique à la directive <directive module="core" |
| type="section">Location</directive>. Mais son argument permettant de |
| spécifier les URLs concernées est une <glossary |
| ref="regex">expression rationnelle</glossary> au lieu d'une simple |
| chaîne de caractères. Par exemple :</p> |
| |
| <example> |
| <LocationMatch "/(extra|special)/data"> |
| </example> |
| |
| <p>correspondrait à toute URL contenant les sous-chaînes |
| <code>/extra/data</code> ou <code>/special/data</code>.</p> |
| </usage> |
| <seealso><a href="../sections.html">Comment fonctionnent les sections |
| <Directory>, <Location> et <Files></a> pour une |
| explication de la manière dont ces différentes sections se combinent |
| entre elles à la réception d'une requête.</seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>LogLevel</name> |
| <description>Contrôle la verbosité du journal des erreurs</description> |
| <syntax>LogLevel <var>niveau</var></syntax> |
| <default>LogLevel warn</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>La directive <directive>LogLevel</directive> permet d'ajuster la |
| verbosité des messages enregistrés dans les journaux d'erreur (voir |
| la directive <directive module="core">ErrorLog</directive> |
| directive). Les <var>niveau</var>x disponibles sont présentés |
| ci-après, par ordre de criticité décroissante :</p> |
| |
| <table border="1"> |
| <columnspec><column width=".2"/><column width=".3"/><column width=".5"/> |
| </columnspec> |
| <tr> |
| <th><strong>Niveau</strong> </th> |
| |
| <th><strong>Description</strong> </th> |
| |
| <th><strong>Exemple</strong> </th> |
| </tr> |
| |
| <tr> |
| <td><code>emerg</code> </td> |
| |
| <td>Urgences - le système est inutilisable.</td> |
| |
| <td>"Child cannot open lock file. Exiting"</td> |
| </tr> |
| |
| <tr> |
| <td><code>alert</code> </td> |
| |
| <td>Des mesures doivent être prises immédiatement.</td> |
| |
| <td>"getpwuid: couldn't determine user name from uid"</td> |
| </tr> |
| |
| <tr> |
| <td><code>crit</code> </td> |
| |
| <td>Conditions critiques.</td> |
| |
| <td>"socket: Failed to get a socket, exiting child"</td> |
| </tr> |
| |
| <tr> |
| <td><code>error</code> </td> |
| |
| <td>Erreurs.</td> |
| |
| <td>"Premature end of script headers"</td> |
| </tr> |
| |
| <tr> |
| <td><code>warn</code> </td> |
| |
| <td>Avertissements.</td> |
| |
| <td>"child process 1234 did not exit, sending another |
| SIGHUP"</td> |
| </tr> |
| |
| <tr> |
| <td><code>notice</code> </td> |
| |
| <td>Evènement important mais normal.</td> |
| |
| <td>"httpd: caught SIGBUS, attempting to dump core in |
| ..."</td> |
| </tr> |
| |
| <tr> |
| <td><code>info</code> </td> |
| |
| <td>Informations.</td> |
| |
| <td>"Server seems busy, (you may need to increase |
| StartServers, or Min/MaxSpareServers)..."</td> |
| </tr> |
| |
| <tr> |
| <td><code>debug</code> </td> |
| |
| <td>Messages de débogage.</td> |
| |
| <td>"Opening config file ..."</td> |
| </tr> |
| </table> |
| |
| <p>Lorsqu'un niveau particulier est spécifié, les messages de tous |
| les autres niveaux de criticité supérieure seront aussi enregistrés. |
| <em>Par exemple</em>, si <code>LogLevel info</code> est spécifié, |
| les messages de niveaux <code>notice</code> et <code>warn</code> |
| seront aussi émis.</p> |
| |
| <p>Il est recommandé d'utiliser un niveau <code>crit</code> ou |
| inférieur.</p> |
| |
| <p>Par exemple :</p> |
| |
| <example> |
| LogLevel notice |
| </example> |
| |
| <note><title>Note</title> |
| <p>Si la journalisation s'effectue directement dans un fichier, |
| les messages de niveau <code>notice</code> ne peuvent pas être |
| supprimés et sont donc toujours journalisés. Cependant, ceci ne |
| s'applique pas lorsque la journalisation s'effectue vers |
| <code>syslog</code>.</p> |
| </note> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>MaxKeepAliveRequests</name> |
| <description>Nombre de requêtes permises pour une connexion |
| persistante</description> |
| <syntax>MaxKeepAliveRequests <var>nombre</var></syntax> |
| <default>MaxKeepAliveRequests 100</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>La directive <directive>MaxKeepAliveRequests</directive> permet |
| de limiter le nombre de requêtes autorisées par connexion lorsque |
| <directive module="core" >KeepAlive</directive> est à "on". Si sa |
| valeur est <code>0</code>, le nombre de requêtes autorisées est |
| illimité. Il est recommandé de définir une valeur assez haute pour |
| des performances du serveur maximales.</p> |
| |
| <p>Par exemple :</p> |
| |
| <example> |
| MaxKeepAliveRequests 500 |
| </example> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>MaxRanges</name> |
| <description>Nombre de segments de données autorisé avant le renvoi de |
| l'intégralité de la ressource</description> |
| <syntax>MaxRanges default | unlimited | none | <var>nombre de segments</var></syntax> |
| <default>MaxRanges 200</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context> |
| </contextlist> |
| <compatibility>Disponible depuis la version 2.2.21 du serveur HTTP |
| Apache</compatibility> |
| |
| <usage> |
| <p>La directive <directive>MaxRanges</directive> permet de limiter |
| le nombre de segments de données que le serveur va renvoyer au |
| client. Si un nombre de segments plus important est demandé, la |
| ressource sera renvoyée dans son intégralité.</p> |
| |
| <dl> |
| <dt><strong>default</strong></dt> |
| <dd>Limite le nombre de segments de données à 200 (valeur par |
| défaut définie à la compilation).</dd> |
| |
| <dt><strong>none</strong></dt> |
| <dd>Les en-têtes Range sont ignorés.</dd> |
| |
| <dt><strong>unlimited</strong></dt> |
| <dd>Le nombre de segments de données est illimité.</dd> |
| |
| <dt><var>nombre de segments</var></dt> |
| <dd>Un nombre positif représentera la nombre de segments de |
| données maximal que le serveur renverra au client.</dd> |
| </dl> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>NameVirtualHost</name> |
| <description>Définit une adresse IP pour les serveurs virtuels à base de |
| nom</description> |
| <syntax>NameVirtualHost <var>adresse</var>[:<var>port</var>]</syntax> |
| <contextlist><context>server config</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>NameVirtualHost</directive> est |
| obligatoire si vous envisagez de configurer des <a |
| href="../vhosts/">serveurs virtuels par nom</a>.</p> |
| |
| <p>Bien que <var>adresse</var> puisse être un nom d'hôte, il est |
| recommandé d'utiliser plutôt une adresse IP et un port, |
| dans le style</p> |
| |
| <example> |
| NameVirtualHost 111.22.33.44:80 |
| </example> |
| |
| <p>La directive <directive>NameVirtualHost</directive> vous permet |
| de spécifier l'adresse IP sur laquelle le serveur recevra des |
| requêtes pour des serveurs virtuels basés sur le nom. Il s'agit en |
| général de l'adresse à laquelle correspondent vos noms de serveurs |
| virtuels basés sur le nom. Dans le cas où un par-feu ou autre |
| mandataire reçoit les requêtes et les fait suivre au serveur avec |
| une adresse IP différente, vous devez spécifier l'adresse IP de |
| l'interface physique du serveur qui traite les requêtes. Si vous |
| avez plusieurs serveurs virtuels basés sur le nom avec plusieurs |
| adresses, utilisez une directive pour chaque adresse.</p> |
| |
| <note><title>Note</title> |
| <p>Notez que le "serveur principal" et tout serveur |
| <code>_default_</code> ne seront <strong>jamais</strong> |
| sollicités pour une requête vers une adresse |
| <directive>NameVirtualHost</directive> (à moins que pour une |
| raison ou pour une autre, vous spécifiiez un |
| <directive>NameVirtualHost</directive> sans définir de |
| <directive>VirtualHost</directive>s pour cette adresse).</p> |
| </note> |
| |
| <p>Vous pouvez également ajouter un numéro de port sur lequel |
| les serveurs virtuels basés sur le nom répondront, comme</p> |
| |
| <example> |
| NameVirtualHost 111.22.33.44:8080 |
| </example> |
| |
| <p>Les adresses IPv6 doivent être entourées de crochets, comme dans |
| l'exemple suivant :</p> |
| |
| <example> |
| NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8080 |
| </example> |
| |
| <p>Pour recevoir les requêtes sur toutes les interfaces, vous pouvez |
| utiliser comme argument <code>*:80</code>, ou <code>*</code> dans le |
| cas où vous écoutez sur plusieurs ports et souhaitez vraiment que le |
| serveur réponde sur chacun d'entre eux avec un jeu de serveurs |
| virtuels particulier.</p> |
| |
| <example> |
| NameVirtualHost *:80 |
| </example> |
| |
| <note><title>Argument de la directive <directive |
| type="section">VirtualHost</directive></title> |
| <p>Notez que l'argument de la directive <directive |
| type="section">VirtualHost</directive> doit être identique à |
| l'argument de la directive <directive |
| >NameVirtualHost</directive>.</p> |
| |
| <example> |
| NameVirtualHost 1.2.3.4:80<br /> |
| <VirtualHost 1.2.3.4:80><br /> |
| # ...<br /> |
| </VirtualHost><br /> |
| </example> |
| </note> |
| </usage> |
| |
| <seealso><a href="../vhosts/">Documentation sur les serveurs |
| virtuels</a></seealso> |
| |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>Options</name> |
| <description>Définit les fonctionnalités disponibles pour un répertoire |
| particulier</description> |
| <syntax>Options |
| [+|-]<var>option</var> [[+|-]<var>option</var>] ...</syntax> |
| <default>Options All</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>Options</override> |
| |
| <usage> |
| <p>La directive <directive>Options</directive> permet de définir |
| les fonctionnalités de serveur disponibles pour un répertoire |
| particulier.</p> |
| |
| <p><var>option</var> peut être défini à <code>None</code>, auquel |
| cas aucune fonctionnalité spécifique n'est activée, ou comprendre |
| une ou plusieurs des options suivantes :</p> |
| |
| <dl> |
| <dt><code>All</code></dt> |
| |
| <dd>Toutes les options exceptée <code>MultiViews</code>. il s'agit |
| de la configuration par défaut.</dd> |
| |
| <dt><code>ExecCGI</code></dt> |
| |
| <dd>L'exécution de scripts CGI à l'aide du module |
| <module>mod_cgi</module> est permise.</dd> |
| |
| <dt><code>FollowSymLinks</code></dt> |
| |
| <dd> |
| |
| Le serveur va suivre les liens symboliques dans le répertoire |
| concerné. |
| <note> |
| <p>Bien que le serveur suive les liens symboliques, il ne modifie |
| <em>pas</em> le nom de chemin concerné défini par la section |
| <directive type="section" |
| module="core">Directory</directive>.</p> |
| |
| <p>Les options <code>FollowSymLinks</code> et |
| <code>SymLinksIfOwnerMatch</code> ne fonctionnent que dans les |
| sections <directive type="section" |
| module="core">Directory</directive> ou les fichiers |
| <code>.htaccess</code>.</p> |
| |
| <p>Le fait d'omettre cette option ne doit pas être considéré comme |
| une mesure de sécurité efficace, car il existe toujours une |
| situation de compétition (race condition) entre l'instant où l'on |
| vérifie qu'un chemin n'est pas un lien symbolique, et l'instant où |
| l'on utilise effectivement ce chemin.</p> |
| </note></dd> |
| |
| <dt><code>Includes</code></dt> |
| |
| <dd> |
| Les inclusions côté serveur (SSI) à l'aide du module |
| <module>mod_include</module> sont autorisées.</dd> |
| |
| <dt><code>IncludesNOEXEC</code></dt> |
| |
| <dd> |
| |
| Les inclusions côté serveur (SSI) sont permises, mais <code>#exec |
| cmd</code> et <code>#exec cgi</code> sont désactivées. |
| L'utilisation de <code>#include virtual</code> pour les scripts |
| CGI est cependant toujours possible depuis des répertoires |
| définis par <directive |
| module="mod_alias">ScriptAlias</directive>.</dd> |
| |
| <dt><code>Indexes</code></dt> |
| |
| <dd> |
| Si une URL requise correspond au répertoire concerné, et si aucun |
| <directive module="mod_dir">DirectoryIndex</directive> (<em>par |
| exemple</em> <code>index.html</code>) n'est défini pour ce |
| répertoire, le module <module>mod_autoindex</module> va renvoyer |
| un listing formaté du répertoire.</dd> |
| |
| <dt><code>MultiViews</code></dt> |
| |
| <dd> |
| Les vues multiples ("multiviews") à <a |
| href="../content-negotiation.html">contenu négocié</a> à l'aide du |
| module <module>mod_negotiation</module> sont autorisées.</dd> |
| |
| <dt><code>SymLinksIfOwnerMatch</code></dt> |
| |
| <dd>Le serveur ne suivra que les liens symboliques qui renvoient |
| vers un fichier ou un répertoire dont le propriétaire est le même |
| que celui du lien. |
| |
| <note><title>Note</title> |
| <p>Les options <code>FollowSymLinks</code> et |
| <code>SymLinksIfOwnerMatch</code> ne fonctionnent que dans les |
| sections <directive type="section" |
| module="core">Directory</directive> ou les fichiers |
| <code>.htaccess</code>.</p> |
| |
| <p>Le fait d'omettre cette option ne doit pas être considéré comme |
| une mesure de sécurité efficace, car il existe toujours une |
| situation de compétition (race condition) entre l'instant où l'on |
| vérifie qu'un chemin n'est pas un lien symbolique, et l'instant où |
| l'on utilise effectivement ce chemin.</p> |
| </note> </dd> |
| </dl> |
| |
| <p>Normalement, si plusieurs directives |
| <directive>Options</directive> peuvent s'appliquer à un répertoire, |
| c'est la plus spécifique qui est utilisée et les autres sont |
| ignorées ; les options ne sont pas fusionnées (voir <a |
| href="../sections.html#mergin">comment les sections sont |
| fusionnées</a>). Elles le sont cependant si <em>toutes</em> les |
| options de la directive <directive>Options</directive> sont |
| précédées d'un symbole <code>+</code> ou <code>-</code>. Toute |
| option précédée d'un <code>+</code> est ajoutée à la liste des |
| options courantes de manière forcée et toute option précédée d'un |
| <code>-</code> est supprimée de la liste des options courantes de la |
| même manière.</p> |
| |
| <note type="warning"><title>Avertissement</title> |
| <p>Mélanger des <directive>Options</directive> avec <code>+</code> |
| ou <code>-</code> avec des <directive>Options</directive> sans |
| <code>+</code> ou <code>-</code> constitue une erreur de syntaxe, et |
| peut résulter en des comportements inattendus.</p> |
| </note> |
| |
| <p>Par exemple, sans aucun symbole <code>+</code> et <code>-</code> |
| :</p> |
| |
| <example> |
| <Directory /web/docs><br /> |
| <indent> |
| Options Indexes FollowSymLinks<br /> |
| </indent> |
| </Directory><br /> |
| <br /> |
| <Directory /web/docs/spec><br /> |
| <indent> |
| Options Includes<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p>ici, seule l'option <code>Includes</code> sera prise en compte |
| pour le répertoire <code>/web/docs/spec</code>. Par contre, si la |
| seconde directive <directive>Options</directive> utilise les |
| symboles <code>+</code> et <code>-</code> :</p> |
| |
| <example> |
| <Directory /web/docs><br /> |
| <indent> |
| Options Indexes FollowSymLinks<br /> |
| </indent> |
| </Directory><br /> |
| <br /> |
| <Directory /web/docs/spec><br /> |
| <indent> |
| Options +Includes -Indexes<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p>alors, les options <code>FollowSymLinks</code> et |
| <code>Includes</code> seront prises en compte pour le répertoire |
| <code>/web/docs/spec</code>.</p> |
| |
| <note><title>Note</title> |
| <p>L'utilisation de <code>-IncludesNOEXEC</code> ou |
| <code>-Includes</code> désactive complètement les inclusions côté |
| serveur sans tenir compte des définitions précédentes.</p> |
| </note> |
| |
| <p>En l'absence de toute définition d'options, la valeur par défaut |
| est <code>All</code>.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>Require</name> |
| <description>Détermine les utilisateurs authentifiés autorisés à accéder |
| à une ressource</description> |
| <syntax>Require <var>nom entité</var> [<var>nom entité</var>] ...</syntax> |
| <contextlist><context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>AuthConfig</override> |
| |
| <usage> |
| <p>Cette directive permet de déterminer les utilisateurs |
| authentifiés autorisés à accéder à une ressource. De multiples |
| instances de cette directive se combinent entre elles avec un "OU" |
| logique, si bien qu'un utilisateur qui convient à une ligne |
| <directive>Require </directive> reçoit l'autorisation d'accès. |
| Les restrictions |
| sont traitées par les modules d'autorisation. Voici quelques |
| exemples de syntaxes autorisées par <module>mod_authz_user</module> |
| et <module>mod_authz_groupfile</module> :</p> |
| |
| <dl> |
| <dt><code>Require user <var>identifiant_utilisateur</var> |
| [<var>identifiant_utilisateur</var>] |
| ...</code></dt> |
| <dd>Seuls les utilisateurs spécifiés peuvent accéder à la |
| ressource.</dd> |
| |
| <dt><code>Require group <var>nom_groupe</var> [<var>nom_groupe</var>] |
| ...</code></dt> |
| <dd>Seuls les utilisateurs appartenant aux groupes spécifiés |
| peuvent accéder à la ressource.</dd> |
| |
| <dt><code>Require valid-user</code></dt> |
| <dd>Tout utilisateur valide peut accéder à la ressource.</dd> |
| </dl> |
| |
| <p>D'autres modules d'autorisation comme |
| <module>mod_authnz_ldap</module>, <module>mod_authz_dbm</module>, et |
| <module>mod_authz_owner</module> implémentent les options de la |
| directive Require.</p> |
| |
| <p>La directive <directive>Require</directive> doit être associée |
| aux directives <directive module="core">AuthName</directive> et |
| <directive module="core">AuthType</directive>, ainsi qu'à des |
| directives telles que <directive |
| module="mod_authn_file">AuthUserFile</directive> et <directive |
| module="mod_authz_groupfile">AuthGroupFile</directive> (pour la |
| définition des utilisateurs et des groupes) afin de pouvoir |
| fonctionner correctement. Exemple :</p> |
| |
| <example> |
| AuthType Basic<br /> |
| AuthName "Ressource à accès restreint"<br /> |
| AuthUserFile /web/users<br /> |
| AuthGroupFile /web/groups<br /> |
| Require group admin |
| </example> |
| |
| <p>Les contrôles d'accès appliqués de cette manière sont effectifs |
| pour <strong>toutes</strong> les méthodes HTTP. <strong>C'est en général |
| ce que l'on souhaite.</strong> Si vous désirez n'appliquer les |
| contrôles d'accès que pour certaines méthodes, tout en laissant les |
| autres méthodes sans protection, vous devez placer la directive |
| <directive>Require</directive> à l'intérieur d'une section |
| <directive module="core" type="section">Limit</directive>.</p> |
| |
| <p>Si la directive <directive>Require</directive> est utilisée |
| conjointement avec les directives <directive |
| module="mod_authz_host">Allow</directive> ou <directive |
| module="mod_authz_host">Deny</directive>, l'interaction entre les |
| différentes restrictions imposées est contrôlée par la directive |
| <directive module="core">Satisfy</directive>.</p> |
| |
| <p>Plusieurs directives <directive>Require</directive> se combinent |
| entre elles via un "OU" logique, mais certains modules |
| d'authentification sous-jacents peuvent nécessiter une configuration |
| explicite afin que l'authentification puisse être chaînée avec |
| d'autres. <module>mod_authnz_ldap</module> qui exporte la directive |
| <directive>AuthzLDAPAuthoritative</directive> à cet effet en est un cas |
| typique.</p> |
| |
| <note><title>Désactivation des contrôles d'accès pour certains |
| sous-répertoires</title> |
| <p>L'exemple suivant montre comment utiliser la directive <directive |
| module="core">Satisfy</directive> pour désactiver les contrôles |
| d'accès dans un sous-répertoire d'un répertoire protégé. Cette |
| technique doit être utilisée avec précautions, car elle va aussi |
| désactiver tout contrôle d'accès imposé par |
| <module>mod_authz_host</module>.</p> |
| <example> |
| <Directory /chemin/vers/protégé/><br /> |
| <indent> |
| Require user david<br /> |
| </indent> |
| </Directory><br /> |
| <Directory /chemin/vers/protégé/non-protégé><br /> |
| <indent> |
| # Tous les contrôle d'accès et authentifications sont |
| # désactivés pour ce répertoire<br /> |
| Satisfy Any<br /> |
| Allow from all<br /> |
| </indent> |
| </Directory><br /> |
| </example> |
| </note> |
| |
| </usage> |
| |
| <seealso><a href="../howto/auth.html">Authentification et autorisation</a></seealso> |
| <seealso><a href="../howto/access.html">Tutoriel du contrôle d'accès</a></seealso> |
| <seealso><directive module="core">Satisfy</directive></seealso> |
| <seealso><module>mod_authz_host</module></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>Protocol</name> |
| <description>Protocole pour une socket d'écoute</description> |
| <syntax>Protocol <var>protocole</var></syntax> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| <compatibility>Disponible depuis la version 2.1.5 d'Apache, mais |
| uniquement depuis la version 2.3.3 sous Windows.</compatibility> |
| |
| <usage> |
| <p>Cette directive permet de spécifier le protocole utilisé pour une |
| socket d'écoute particulière. Le protocole sert à déterminer quel |
| module doit traiter une requête, et d'appliquer les optimisations |
| spécifiques au protocole via la directive |
| <directive>AcceptFilter</directive>.</p> |
| |
| <p>Vous ne devez définir le protocole que si vous travaillez avec |
| des ports non standards ; dans le cas général, le protocole |
| <code>http</code> est associé au port 80 et le protocole |
| <code>https</code> au port 443.</p> |
| |
| <p>Par exemple, si vous travaillez avec le protocole |
| <code>https</code> sur un port non standard, spécifiez le protocole |
| de manière explicite :</p> |
| |
| <example> |
| Protocol https |
| </example> |
| |
| <p>Vous pouvez aussi spécifier le protocole via la directive |
| <directive module="mpm_common">Listen</directive>.</p> |
| </usage> |
| <seealso><directive>AcceptFilter</directive></seealso> |
| <seealso><directive module="mpm_common">Listen</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>RLimitCPU</name> |
| <description>Limite le temps CPU alloué aux processus initiés par les |
| processus enfants d'Apache</description> |
| <syntax>RLimitCPU <var>secondes</var>|max [<var>secondes</var>|max]</syntax> |
| <default>Non défini ; utilise les valeurs par défaut du système |
| d'exploitation</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context></contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>Prend 1 ou 2 paramètres. Le premier definit la limite de |
| consommation de ressources pour tous les processus, et le second la |
| consommation de ressources maximale. Les deux paramètres peuvent |
| contenir soit un nombre, soit <code>max</code> pour indiquer au |
| serveur que la limite de consommation correspond à la valeur |
| maximale autorisée par la configuration du système d'exploitation. |
| Pour augmenter la consommation maximale de ressources, le serveur |
| doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa |
| phase de démarrage.</p> |
| |
| <p>Cette directive s'applique aux processus initiés par les |
| processus enfants d'Apache qui traitent les requêtes, et non aux |
| processus enfants eux-mêmes. Sont concernés les scripts CGI et les |
| commandes exec des SSI, mais en aucun cas les processus initiés par |
| le processus parent d'Apache comme les journalisations redirigées |
| vers un programme.</p> |
| |
| <p>Les limites de ressources CPU sont exprimées en secondes par |
| processus.</p> |
| </usage> |
| <seealso><directive module="core">RLimitMEM</directive></seealso> |
| <seealso><directive module="core">RLimitNPROC</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>RLimitMEM</name> |
| <description>Limite la mémoire allouée aux processus initiés par les |
| processus enfants d'Apache</description> |
| <syntax>RLimitMEM <var>octets</var>|max [<var>octets</var>|max]</syntax> |
| <default>Non défini ; utilise les valeurs par défaut du système |
| d'exploitation</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context></contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>Prend 1 ou 2 paramètres. Le premier definit la limite de |
| consommation de ressources pour tous les processus, et le second la |
| consommation de ressources maximale. Les deux paramètres peuvent |
| contenir soit un nombre, soit <code>max</code> pour indiquer au |
| serveur que la limite de consommation correspond à la valeur |
| maximale autorisée par la configuration du système d'exploitation. |
| Pour augmenter la consommation maximale de ressources, le serveur |
| doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa |
| phase de démarrage.</p> |
| |
| <p>Cette directive s'applique aux processus initiés par les |
| processus enfants d'Apache qui traitent les requêtes, et non aux |
| processus enfants eux-mêmes. Sont concernés les scripts CGI et les |
| commandes exec des SSI, mais en aucun cas les processus initiés par |
| le processus parent d'Apache comme les journalisations redirigées |
| vers un programme.</p> |
| |
| <p>Les limites de ressources mémoire sont exprimées en octets par |
| processus.</p> |
| </usage> |
| <seealso><directive module="core">RLimitCPU</directive></seealso> |
| <seealso><directive module="core">RLimitNPROC</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>RLimitNPROC</name> |
| <description>Limite le nombre de processus qui peuvent être initiés par |
| les processus initiés par les processus enfants d'Apache</description> |
| <syntax>RLimitNPROC <var>nombre</var>|max [<var>nombre</var>|max]</syntax> |
| <default>Unset; uses operating system defaults</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context></contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>Prend 1 ou 2 paramètres. Le premier definit la limite de |
| consommation de ressources pour tous les processus, et le second la |
| consommation de ressources maximale. Les deux paramètres peuvent |
| contenir soit un nombre, soit <code>max</code> pour indiquer au |
| serveur que la limite de consommation correspond à la valeur |
| maximale autorisée par la configuration du système d'exploitation. |
| Pour augmenter la consommation maximale de ressources, le serveur |
| doit s'exécuter en tant que <code>root</code>, ou se trouver dans sa |
| phase de démarrage.</p> |
| |
| <p>Cette directive s'applique aux processus initiés par les |
| processus enfants d'Apache qui traitent les requêtes, et non aux |
| processus enfants eux-mêmes. Sont concernés les scripts CGI et les |
| commandes exec des SSI, mais en aucun cas les processus initiés par |
| le processus parent d'Apache comme les journalisations redirigées |
| vers un programme.</p> |
| |
| <p>Les limites des processus contrôlent le nombre de processus par |
| utilisateur.</p> |
| |
| <note><title>Note</title> |
| <p>Si les processus CGI s'exécutent sous le même |
| utilisateur que celui du serveur web, cette |
| directive va limiter le nombre de processus que le serveur |
| pourra lui-même créer. La présence de messages |
| <strong><code>cannot fork</code></strong> dans le journal des |
| erreurs indiquera que la limite est atteinte.</p> |
| </note> |
| </usage> |
| <seealso><directive module="core">RLimitMEM</directive></seealso> |
| <seealso><directive module="core">RLimitCPU</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>Satisfy</name> |
| <description>Interaction entre les contrôles d'accès par hôte |
| et l'authentification des utilisateurs</description> |
| <syntax>Satisfy Any|All</syntax> |
| <default>Satisfy All</default> |
| <contextlist><context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>AuthConfig</override> |
| <compatibility>Influencé par les sections <directive module="core" |
| type="section">Limit</directive> et <directive module="core" |
| type="section">LimitExcept</directive> dans les versions 2.0.51 et |
| supérieures</compatibility> |
| |
| <usage> |
| <p>Cette directive permet de définir la politique d'accès lorsque |
| les directives <directive |
| module="mod_authz_host">Allow</directive> et <directive |
| module="core">Require</directive> sont utilisées conjointement. |
| L'argument prend pour valeur <code>All</code> ou <code>Any</code>. |
| Cette directive ne s'avère utile que dans le cas où l'accès à une |
| zone particulière est contrôlé à la fois par une authentification |
| utilisateur/mot de passe <em>et</em> par l'adresse IP du client. |
| Avec la valeur par défaut de l'argument (<code>All</code>), le |
| client doit d'abord satisfaire à la condition d'accès en fonction de |
| son adresse IP, <em>puis</em> fournir un couple utilisateur/mot de |
| passe valide. Si l'argument est <code>Any</code>, le client se verra |
| accorder l'accès s'il satisfait à au moins une des conditions d'accès |
| : adresse IP et/ou un couple utilisateur/mot de passe valides. On |
| peut utiliser cette valeur pour restreindre l'accès à une zone à |
| l'aide d'un mot de passe, mais laisser cette zone en accès libre |
| pour les clients possédant certaines adresses IP.</p> |
| |
| <p>Par exemple, si vous souhaitez accorder un accès sans restriction |
| à une portion de votre site web aux clients de votre réseau, mais |
| n'accorder cet accès aux clients à l'extérieur de votre réseau qu'en |
| échange d'un mot de passe, vous pouvez utiliser une configuration de |
| ce style :</p> |
| |
| <example> |
| Require valid-user<br /> |
| Order allow,deny<br /> |
| Allow from 192.168.1<br /> |
| Satisfy Any |
| </example> |
| |
| <p>Depuis la version 2.0.51, les directives |
| <directive>Satisfy</directive> peuvent être limitées à certaines |
| méthodes particulières à l'aide des sections <directive |
| module="core" type="section">Limit</directive> et <directive |
| module="core" type="section">LimitExcept</directive>.</p> |
| </usage> |
| <seealso><directive module="mod_authz_host">Allow</directive></seealso> |
| <seealso><directive module="core">Require</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ScriptInterpreterSource</name> |
| <description>Permet de localiser l'interpréteur des scripts |
| CGI</description> |
| <syntax>ScriptInterpreterSource Registry|Registry-Strict|Script</syntax> |
| <default>ScriptInterpreterSource Script</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context></contextlist> |
| <override>FileInfo</override> |
| <compatibility>Win32 seulement ; |
| l'option <code>Registry-Strict</code> est disponible dans les versions |
| 2.0 et supérieures d'Apache</compatibility> |
| |
| <usage> |
| <p>Cette directive permet de contrôler la méthode qu'utilise Apache |
| pour trouver l'interpréteur destiné à exécuter les scripts CGI. La |
| définition par défaut est <code>Script</code> : ceci indique à |
| Apache qu'il doit utiliser l'interpréteur précisé dans la ligne |
| shebang du script (la première ligne, commençant par |
| <code>#!</code>). Sur les systèmes Win32, cette ligne ressemble |
| souvent à ceci :</p> |
| |
| <example> |
| #!C:/Perl/bin/perl.exe |
| </example> |
| |
| <p>ou simplement, dans le cas où <code>perl</code> est dans le |
| <code>PATH</code> :</p> |
| |
| <example> |
| #!perl |
| </example> |
| |
| <p>Avec <code>ScriptInterpreterSource Registry</code>, Windows va |
| effectuer une recherche dans l'arborescence |
| <code>HKEY_CLASSES_ROOT</code> de la base de registre avec comme |
| mot-clé l'extension du fichier contenant le script (par exemple |
| <code>.pl</code>). C'est la commande définie par la sous-clé de |
| registre <code>Shell\ExecCGI\Command</code> ou, si elle n'existe |
| pas, la sous-clé <code>Shell\Open\Command</code> qui est utilisée |
| pour ouvrir le fichier du script. Si ces clés de registre ne sont |
| pas trouvées, Apache utilise la méthode de l'option |
| <code>Script</code>.</p> |
| |
| <p>Par exemple, pour que les scripts possédant l'extension .pl |
| soient traités par perl, la ligne du registre doit être :</p> |
| |
| <example><code>HKEY_CLASSES_ROOT\.pl\Shell\ExecCGI\Command\(Default) |
| => C:\Perl\bin\perl.exe -wT</code></example> |
| |
| <note type="warning"><title>Sécurité</title> |
| <p>Soyez prudent si vous utilisez <code>ScriptInterpreterSource |
| Registry</code> avec des répertoires faisant l'objet d'un <directive |
| module="mod_alias">ScriptAlias</directive>, car Apache va essayer |
| d'exécuter <strong>tous</strong> les fichiers contenus dans |
| celui-ci. L'option <code>Registry</code> peut causer des appels de |
| programmes non voulus sur des fichiers non destinés à être exécutés. |
| Par exemple, la commande par défaut open sur les fichiers |
| <code>.htm</code> sur la plupart des systèmes Windows va lancer |
| Microsoft Internet Explorer ; ainsi, toute requête HTTP pour un |
| fichier <code>.htm</code> situé dans le répertoire des scripts |
| va lancer le navigateur en arrière-plan sur le serveur, ce qui a |
| toutes les chances de crasher votre système dans les minutes qui |
| suivent.</p> |
| </note> |
| |
| <p>L'option <code>Registry-Strict</code>, apparue avec Apache 2.0, |
| agit de manière identique à <code>Registry</code>, mais n'utilise |
| que la sous-clé <code>Shell\ExecCGI\Command</code>. La présence de |
| la clé <code>ExecCGI</code> n'étant pas systématique, Elle doit être |
| définie manuellement dans le registre Windows et évite ainsi tout |
| appel de programme accidentel sur votre système.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ServerAdmin</name> |
| <description>L'adresse électronique que le serveur inclut dans les |
| messages d'erreur envoyés au client</description> |
| <syntax>ServerAdmin <var>adresse électronique</var>|<var>URL</var></syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| |
| <usage> |
| <p>La directive <directive>ServerAdmin</directive> permet de définir |
| l'adresse de contact que le serveur va inclure dans tout message |
| d'erreur qu'il envoie au client. Si le programme <code>httpd</code> |
| ne reconnait pas l'argument fourni comme une URL, il suppose que |
| c'est une <var>adresse électronique</var>, et lui ajoute le préfixe |
| <code>mailto:</code> dans les cibles des hyperliens. Il est |
| cependant recommandé d'utiliser exclusivement une adresse |
| électronique, car de nombreux scripts CGI considèrent ceci comme |
| implicite. Si vous utilisez une URL, elle doit pointer vers un autre |
| serveur que vous contrôlez. Dans le cas contraire, les utilisateurs |
| seraient dans l'impossibilité de vous contacter en cas de problème.</p> |
| |
| <p>Il peut s'avérer utile de définir une adresse dédiée à |
| l'administration du serveur, par exemple :</p> |
| |
| <example> |
| ServerAdmin www-admin@foo.example.com |
| </example> |
| <p>car les utilisateurs ne mentionnent pas systématiquement le |
| serveur dont ils parlent !</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ServerAlias</name> |
| <description>Autres noms d'un serveur utilisables pour atteindre des |
| serveurs virtuels à base de nom</description> |
| <syntax>ServerAlias <var>nom serveur</var> [<var>nom serveur</var>] |
| ...</syntax> |
| <contextlist><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>ServerAlias</directive> permet de définir |
| les noms alternatifs d'un serveur utilisables pour atteindre des <a |
| href="../vhosts/name-based.html">serveurs virtuels à base de |
| nom</a>. La directive <directive>ServerAlias</directive> peut |
| contenir des caractères génériques, si nécessaire.</p> |
| |
| <example> |
| <VirtualHost *:80><br /> |
| ServerName serveur.domaine.com<br /> |
| ServerAlias serveur serveur2.domaine.com serveur2<br /> |
| ServerAlias *.example.com<br /> |
| UseCanonicalName Off<br /> |
| # ...<br /> |
| </VirtualHost> |
| </example> |
| |
| <p>La recherche du serveur virtuel à base de nom qui correspond le |
| mieux s'effectue selon l'ordre d'apparition des sections <directive |
| type="section" module="core">virtualhost</directive> dans le fichier |
| de configuration. Le premier serveur virtuel dont le <directive |
| module="core">ServerName</directive> ou le <directive |
| module="core">ServerAlias</directive> correspond est choisi, sans |
| préférence si le nom contient des caractères génériques ou pas.</p> |
| |
| <p>Tous les noms spécifiés au sein d'une section |
| <directive>VirtualHost</directive> sont traités comme un |
| <directive>ServerAlias</directive> (sans caractères génériques).</p> |
| |
| </usage> |
| <seealso><directive module="core">UseCanonicalName</directive></seealso> |
| <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels |
| d'Apache</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ServerName</name> |
| <description>Nom d'hôte et port que le serveur utilise pour |
| s'authentifier lui-même</description> |
| <syntax>ServerName [<var>protocole</var>://]<var>nom de domaine |
| entièrement qualifié</var>[:<var>port</var>]</syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| </contextlist> |
| <compatibility>Dans la version 2.0, cette directive remplace la |
| fonctionnalité de la directive <directive>Port</directive> de la version |
| 1.3.</compatibility> |
| |
| <usage> |
| <p>La directive <directive>ServerName</directive> permet de définir |
| les protocole, nom d'hôte et port d'une requête que le serveur |
| utilise pour s'authentifier lui-même. Ceci est utile lors de la |
| création de redirections d'URLs.</p> |
| |
| <p>La directive <directive>ServerName</directive> permet aussi |
| (éventuellement en conjonction avec la directive |
| <directive>ServerAlias</directive>) d'identifier de manière unique |
| un serveur virtuel, lorsqu'elle est utilisée dans un contexte de <a |
| href="../vhosts/name-based.html">serveurs virtuels par |
| noms</a>.</p> |
| |
| <p>Par exemple, si le nom de la |
| machine hébergeant le serveur web est |
| <code>simple.example.com</code>, la machine possède l'alias |
| DNS <code>www.example.com</code>, et si vous voulez que le serveur |
| web s'identifie avec cet alias, vous devez utilisez la définition |
| suivante :</p> |
| |
| <example> |
| ServerName www.example.com |
| </example> |
| |
| <p>Si la directive <directive>ServerName</directive> n'est pas |
| définie, le serveur tente de déterminer le nom d'hôte en effectuant |
| une recherche DNS inverse sur son adresse IP. Si la directive |
| <directive>ServerName</directive> ne précise pas de port, le serveur |
| utilisera celui de la requête entrante. Il est recommandé de |
| spécifier un nom d'hôte et un port spécifiques à l'aide de la |
| directive <directive>ServerName</directive> pour une fiabilité |
| optimale et à titre préventif.</p> |
| |
| <p>Si vous définissez des <a |
| href="../vhosts/name-based.html">serveurs virtuels à base de |
| nom</a>, une directive <directive>ServerName</directive> située à |
| l'intérieur d'une section <directive type="section" |
| module="core">VirtualHost</directive> spécifiera quel nom d'hôte |
| doit apparaître dans l'en-tête de requête <code>Host:</code> pour |
| pouvoir atteindre ce serveur virtuel.</p> |
| |
| |
| <p>Parfois, le serveur s'exécute en amont d'un dispositif qui |
| implémente SSL, comme un mandataire inverse, un répartiteur de |
| charge ou un boîtier dédié SSL. Dans ce cas, spécifiez le protocole |
| <code>https://</code> et le port auquel les clients se connectent |
| dans la directive <directive>ServerName</directive>, afin de |
| s'assurer que le serveur génère correctement ses URLs |
| d'auto-identification. |
| </p> |
| |
| <p>Voir la description des directives <directive |
| module="core">UseCanonicalName</directive> et <directive |
| module="core">UseCanonicalPhysicalPort</directive> pour les |
| définitions qui permettent de déterminer si les URLs |
| auto-identifiantes (par exemple via le module |
| <module>mod_dir</module>) vont faire référence au port spécifié, ou |
| au port indiqué dans la requête du client. |
| </p> |
| |
| </usage> |
| |
| <seealso><a href="../dns-caveats.html">Problèmes concernant le DNS et |
| Apache</a></seealso> |
| <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels |
| d'Apache</a></seealso> |
| <seealso><directive module="core">UseCanonicalName</directive></seealso> |
| <seealso><directive module="core">UseCanonicalPhysicalPort</directive></seealso> |
| <seealso><directive module="core">NameVirtualHost</directive></seealso> |
| <seealso><directive module="core">ServerAlias</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ServerPath</name> |
| <description>Nom de chemin d'URL hérité pour un serveur virtuel à base |
| de nom accédé par un navigateur incompatible</description> |
| <syntax>ServerPath <var>chemin d'URL</var></syntax> |
| <contextlist><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>ServerPath</directive> permet de définir |
| le nom de chemin d'URL hérité d'un hôte, à utiliser avec les <a |
| href="../vhosts/">serveurs virtuels à base de nom</a>.</p> |
| </usage> |
| <seealso><a href="../vhosts/">Documentation sur les serveurs virtuels |
| d'Apache</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ServerRoot</name> |
| <description>Racine du répertoire d'installation du |
| serveur</description> |
| <syntax>ServerRoot <var>chemin de répertoire</var></syntax> |
| <default>ServerRoot /usr/local/apache</default> |
| <contextlist><context>server config</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>ServerRoot</directive> permet de définir |
| le répertoire dans lequel le serveur est installé. En particulier, |
| il contiendra les sous-répertoires <code>conf/</code> et |
| <code>logs/</code>. Les chemins relatifs indiqués dans les autres |
| directives (comme <directive |
| module="core">Include</directive> ou <directive |
| module="mod_so">LoadModule</directive>) seront définis par |
| rapport à ce répertoire.</p> |
| |
| <example><title>Example</title> |
| ServerRoot /home/httpd |
| </example> |
| |
| </usage> |
| <seealso><a href="../invoking.html">the <code>-d</code> |
| options de <code>httpd</code></a></seealso> |
| <seealso><a href="../misc/security_tips.html#serverroot">les conseils à |
| propos de la sécurité</a> pour des informations sur la manière de définir |
| correctement les permissions sur le répertoire indiqué par la directive |
| <directive>ServerRoot</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ServerSignature</name> |
| <description>Définit un pied de page pour les documents générés par le |
| serveur</description> |
| <syntax>ServerSignature On|Off|EMail</syntax> |
| <default>ServerSignature Off</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>All</override> |
| |
| <usage> |
| <p>La directive <directive>ServerSignature</directive> permet de |
| définir une ligne de pied de page fixe pour les documents générés |
| par le serveur (messages d'erreur, listings de répertoires ftp de |
| <module>mod_proxy</module>, sorties de <module>mod_info</module>, |
| etc...). Dans le cas d'une chaîne de mandataires, l'utilisateur n'a |
| souvent aucun moyen de déterminer lequel des mandataires chaînés a |
| généré un message d'erreur, et c'est une des raisons pour lesquelles |
| on peut être amené à ajouter un tel pied de page.</p> |
| |
| <p>La valeur par défaut <code>Off</code> supprime la ligne de pied |
| de page (et est ainsi compatible avec le comportement des |
| versions 1.2 et antérieures d'Apache). la valeur <code>On</code> |
| ajoute simplement une ligne contenant le numéro de version du |
| serveur ainsi que le nom du serveur virtuel issu de la directive |
| <directive module="core">ServerName</directive>, alors que la valeur |
| <code>EMail</code> ajoute en plus une référence "mailto:" à |
| l'administrateur du document référencé issu la directive |
| <directive module="core">ServerAdmin</directive>.</p> |
| |
| <p>Depuis la version 2.0.44, les détails à propos du numéro de |
| version du serveur sont contrôlés à l'aide de la directive |
| <directive module="core">ServerTokens</directive>.</p> |
| </usage> |
| <seealso><directive module="core">ServerTokens</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>ServerTokens</name> |
| <description>Configure l'en-tête <code>Server</code> de la réponse |
| HTTP</description> |
| <syntax>ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full</syntax> |
| <default>ServerTokens Full</default> |
| <contextlist><context>server config</context></contextlist> |
| |
| <usage> |
| <p>Cette directive permet de contrôler le contenu de l'en-tête |
| <code>Server</code> inclus dans la réponse envoyée au client : cet |
| en-tête peut contenir le type de système d'exploitation du serveur, |
| ainsi que des informations à propos des modules compilés avec le |
| serveur.</p> |
| |
| <dl> |
| <dt><code>ServerTokens Prod[uctOnly]</code></dt> |
| |
| <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server: |
| Apache</code></dd> |
| |
| <dt><code>ServerTokens Major</code></dt> |
| |
| <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server: |
| Apache/2</code></dd> |
| |
| <dt><code>ServerTokens Minor</code></dt> |
| |
| <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server: |
| Apache/2.0</code></dd> |
| |
| <dt><code>ServerTokens Min[imal]</code></dt> |
| |
| <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server: |
| Apache/2.0.41</code></dd> |
| |
| <dt><code>ServerTokens OS</code></dt> |
| |
| <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server: |
| Apache/2.0.41 (Unix)</code></dd> |
| |
| <dt><code>ServerTokens Full</code> (valeur par défaut)</dt> |
| |
| <dd>Le serveur renvoie (<em>par exemple</em>): <code>Server: |
| Apache/2.0.41 (Unix) PHP/4.2.2 MyMod/1.2</code></dd> |
| </dl> |
| |
| <p>Cette définition s'applique à l'ensemble du serveur et ne peut |
| être activée ou désactivée pour tel ou tel serveur virtuel.</p> |
| |
| <p>Dans les versions postérieures à 2.0.44, cette directive contrôle |
| également les informations fournies par la directive <directive |
| module="core">ServerSignature</directive>.</p> |
| </usage> |
| <seealso><directive module="core">ServerSignature</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>SetHandler</name> |
| <description>Force le traitement des fichiers spécifiés par un |
| gestionnaire particulier</description> |
| <syntax>SetHandler <var>nom gestionnaire</var>|None</syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| <compatibility>Intégré dans le noyau d'Apache depuis la version |
| 2.0</compatibility> |
| |
| <usage> |
| <p>Lorsqu'elle se situe à l'intérieur d'un fichier |
| <code>.htaccess</code>, ou d'une section <directive type="section" |
| module="core">Directory</directive> ou <directive type="section" |
| module="core">Location</directive>, cette directive force le |
| traitement de tous les fichiers spécifiés par le <a |
| href="../handler.html">gestionnaire</a> défini par l'argument |
| <var>nom gestionnaire</var>. Par exemple, dans le cas d'un |
| répertoire dont vous voulez interpréter le contenu comme des |
| fichiers de règles d'images cliquables, sans tenir compte des |
| extensions, vous pouvez ajouter la ligne suivante dans un fichier |
| <code>.htaccess</code> de ce répertoire :</p> |
| |
| <example> |
| SetHandler imap-file |
| </example> |
| |
| <p>Autre exemple : si vous voulez que le serveur affiche un |
| compte-rendu d'état chaque fois qu'une URL du type <code>http://nom |
| serveur/status</code> est appelée, vous pouvez ajouter ceci dans |
| <code>httpd.conf</code> :</p> |
| |
| <example> |
| <Location /status><br /> |
| <indent> |
| SetHandler server-status<br /> |
| </indent> |
| </Location> |
| </example> |
| |
| <p>Vous pouvez écraser la définition antérieure d'une directive |
| <directive>SetHandler</directive> en utilisant la valeur |
| <code>None</code>.</p> |
| </usage> |
| |
| <seealso><directive module="mod_mime">AddHandler</directive></seealso> |
| |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>SetInputFilter</name> |
| <description>Définit les filtres par lesquels vont passer les requêtes |
| client et les données POST</description> |
| <syntax>SetInputFilter <var>filtre</var>[;<var>filtre</var>...]</syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| |
| <usage> |
| <p>La directive <directive>SetInputFilter</directive> permet de |
| définir le ou les filtres par lesquels vont passer les requêtes |
| client et les données POST au moment où le serveur les reçoit. Cette |
| définition vient en ajout à tout autre filtre défini en |
| quelqu'endroit que ce soit, y compris via la directive <directive |
| module="mod_mime">AddInputFilter</directive>.</p> |
| |
| <p>Si la directive comporte plusieurs filtres, ils doivent être |
| séparés par des points-virgules, et spécifiés selon l'ordre dans |
| lequel vous souhaitez les voir agir sur les contenus.</p> |
| </usage> |
| <seealso>documentation des <a |
| href="../filter.html">Filtres</a></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>SetOutputFilter</name> |
| <description>Définit les filtres par lesquels vont passer les réponses |
| du serveur</description> |
| <syntax>SetOutputFilter <var>filtre</var>[;<var>filtre</var>...]</syntax> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context> |
| </contextlist> |
| <override>FileInfo</override> |
| |
| <usage> |
| <p>La directive <directive>SetOutputFilter</directive> permet de |
| définir les filtres par lesquels vont passer les réponses du serveur |
| avant d'être envoyées au client. Cette définition vient en ajout à |
| tout autre filtre défini en quelqu'endroit que ce soit, y compris |
| via la directive <directive |
| module="mod_mime">AddOutputFilter</directive>.</p> |
| |
| <p>Par exemple, la configuration suivante va traiter tous les |
| fichiers du répertoire <code>/www/data/</code> comme des inclusions |
| côté serveur (SSI) :</p> |
| |
| <example> |
| <Directory /www/data/><br /> |
| <indent> |
| SetOutputFilter INCLUDES<br /> |
| </indent> |
| </Directory> |
| </example> |
| |
| <p>Si la directive comporte plusieurs filtres, ils doivent être |
| séparés par des points-virgules, et spécifiés selon l'ordre dans |
| lequel vous souhaitez les voir agir sur les contenus.</p> |
| </usage> |
| <seealso><a href="../filter.html">Filters</a> documentation</seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>Suexec</name> |
| <description>Active ou désactive la fonctionnalité suEXEC</description> |
| <syntax>Suexec On|Off</syntax> |
| <default>On si le binaire suexec existe avec un mode et un propriétaire |
| appropriés, Off dans le cas contraire</default> |
| <contextlist><context>server config</context></contextlist> |
| <compatibility>Disponible depuis la version 2.2.18 d'Apache httpd</compatibility> |
| |
| <usage> |
| <p>Lorsque cette directive est définie à On, le démarrage du serveur |
| échouera si le binaire suexec n'existe pas, ou possède un mode de |
| fichier ou un propriétaire invalides.</p> |
| <p>Lorsque cette directive est définie à Off, la fonctionnalité |
| suEXEC est désactivée, même si le binaire suexec existe et possède |
| un mode de fichier et un propriétaire valides.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>TimeOut</name> |
| <description>Temps pendant lequel le serveur va attendre certains |
| évènements avant de considérer qu'une requête a échoué</description> |
| <syntax>TimeOut <var>secondes</var></syntax> |
| <default>TimeOut 300</default> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| |
| <usage> |
| <p>La directive <directive>TimeOut</directive> permet |
| de définir le temps maximum pendant lequel Apache va attendre des |
| entrées/sorties dans diverses circonstances :</p> |
| |
| <ol> |
| <li>Lors de la lecture de données en provenance du client, le |
| temps maximum d'attente avant l'arrivée d'un paquet TCP si le |
| tampon de lecture est vide.</li> |
| |
| <li>Lors de l'envoi de données vers le client, le temps maximum |
| d'attente avant l'arrivée de l'accusé-réception d'un paquet si le |
| tampon d'envoi est plein.</li> |
| |
| <li>Avec <module>mod_cgi</module>, le temps maximum |
| d'attente avant la sortie des données d'un script CGI.</li> |
| |
| <li>Avec <module>mod_ext_filter</module>, le temps maximum |
| d'attente avant la sortie des données d'un processus de |
| filtrage.</li> |
| |
| <li>Avec <module>mod_proxy</module>, la valeur du délai par défaut |
| si la directive <directive |
| module="mod_proxy">ProxyTimeout</directive> n'a pas été |
| définie.</li> |
| </ol> |
| |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>TraceEnable</name> |
| <description>Détermine le comportement des requêtes |
| <code>TRACE</code></description> |
| <syntax>TraceEnable <var>[on|off|extended]</var></syntax> |
| <default>TraceEnable on</default> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| <compatibility>Disponible dans les versions 1.3.34, 2.0.55 et |
| supérieures d'Apache</compatibility> |
| |
| <usage> |
| <p>Cette directive l'emporte sur le comportement de |
| <code>TRACE</code> pour le noyau du serveur et |
| <module>mod_proxy</module>. La définition par défaut |
| <code>TraceEnable on</code> permet des requêtes <code>TRACE</code> |
| selon la RFC 2616, qui interdit d'ajouter tout corps à la requête. |
| La définition <code>TraceEnable off</code> indique au noyau du |
| serveur et à <module>mod_proxy</module> de retourner un code |
| d'erreur <code>405</code> (Méthode non autorisée) au client.</p> |
| |
| <p>En fait, et à des fins de test et de diagnostic seulement, on |
| peut autoriser l'ajout d'un corps de requête à l'aide de la |
| définition non standard <code>TraceEnable extended</code>. Le noyau |
| du serveur (dans le cas d'un serveur d'origine) va limiter la taille |
| du corps de requête à 64k (plus 8k pour les en-têtes de |
| fractionnement si <code>Transfer-Encoding: chunked</code> est |
| utilisé). Le noyau du serveur va reproduire l'ensemble des en-têtes, |
| y compris les en-têtes de fractionnement avec le corps de la |
| réponse. Dans le cas d'un serveur mandataire, la taille du corps de |
| requête n'est pas limitée à 64k.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>UseCanonicalName</name> |
| <description>Définit la manière dont le serveur détermine son propre nom |
| et son port</description> |
| <syntax>UseCanonicalName On|Off|DNS</syntax> |
| <default>UseCanonicalName Off</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context></contextlist> |
| |
| <usage> |
| <p>Dans de nombreuses situations, Apache doit construire une URL |
| <em>auto-identifiante</em> -- c'est à dire une URL qui fait |
| référence au serveur lui-même. Avec <code>UseCanonicalName |
| On</code>, Apache va utiliser le nom d'hôte et le port spécifiés par |
| la directive <directive module="core">ServerName</directive> pour |
| construire le nom canonique du serveur. Ce nom est utilisé dans |
| toutes les URLs auto-identifiantes, et affecté aux variables |
| <code>SERVER_NAME</code> et <code>SERVER_PORT</code> dans les |
| programmes CGI.</p> |
| |
| <p>Avec <code>UseCanonicalName Off</code>, Apache va construire ses |
| URLs auto-identifiantes à l'aide du nom d'hôte et du port fournis |
| par le client, si ce dernier en a fourni un (dans la négative, |
| Apache utilisera le nom canonique, de la même manière que |
| ci-dessus). Ces valeurs sont les mêmes que celles qui sont utilisées |
| pour implémenter les <a |
| href="../vhosts/name-based.html">serveurs virtuels par |
| nom</a>, et sont disponibles avec les mêmes clients. De même, les |
| variables CGI <code>SERVER_NAME</code> et <code>SERVER_PORT</code> |
| seront affectées des valeurs fournies par le client.</p> |
| |
| <p>Cette directive peut s'avérer utile, par exemple, sur un serveur |
| intranet auquel les utilisateurs se connectent en utilisant des noms |
| courts tels que <code>www</code>. Si les utilisateurs tapent un nom |
| court suivi d'une URL qui fait référence à un répertoire, comme |
| <code>http://www/splat</code>, <em>sans le slash terminal</em>, vous |
| remarquerez qu'Apache va les rediriger vers |
| <code>http://www.domain.com/splat/</code>. Si vous avez activé |
| l'authentification, ceci va obliger l'utilisateur à s'authentifier |
| deux fois (une première fois pour <code>www</code> et une seconde |
| fois pour <code>www.domain.com</code> -- voir <a |
| href="http://wiki.apache.org/httpd/FAQ#Why_does_Apache_ask_for_my_password_twice_before_serving_a_file.3F">la |
| foire aux questions sur ce sujet pour plus d'informations</a>). Par |
| contre, si <directive>UseCanonicalName</directive> est définie à |
| <code>Off</code>, Apache redirigera l'utilisateur vers |
| <code>http://www/splat/</code>.</p> |
| |
| <p>Pour l'hébergement virtuel en masse par adresse IP, on |
| utilise une troisième option, <code>UseCanonicalName |
| DNS</code>, pour supporter les clients anciens qui ne |
| fournissent pas d'en-tête <code>Host:</code>. Apache effectue alors |
| une recherche DNS inverse sur l'adresse IP du serveur auquel le |
| client s'est connecté afin de construire ses URLs |
| auto-identifiantes.</p> |
| |
| <note type="warning"><title>Avertissement</title> |
| <p>Les programmes CGI risquent d'être perturbés par cette option |
| s'ils tiennent compte de la variable <code>SERVER_NAME</code>. Le |
| client est pratiquement libre de fournir la valeur qu'il veut comme |
| nom d'hôte. Mais si le programme CGI n'utilise |
| <code>SERVER_NAME</code> que pour construire des URLs |
| auto-identifiantes, il ne devrait pas y avoir de problème.</p> |
| </note> |
| </usage> |
| <seealso><directive module="core">UseCanonicalPhysicalPort</directive></seealso> |
| <seealso><directive module="core">ServerName</directive></seealso> |
| <seealso><directive module="mpm_common">Listen</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>UseCanonicalPhysicalPort</name> |
| <description>Définit la manière dont le serveur détermine son propre nom |
| et son port</description> |
| <syntax>UseCanonicalPhysicalPort On|Off</syntax> |
| <default>UseCanonicalPhysicalPort Off</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context></contextlist> |
| |
| <usage> |
| <p>Dans de nombreuses situations, Apache doit construire une URL |
| <em>auto-identifiante</em> -- c'est à dire une URL qui fait |
| référence au serveur lui-même. Avec <code>UseCanonicalPhysicalPort |
| On</code>, Apache va fournir le numéro de port physique réel utilisé |
| par la requête en tant que port potentiel, pour construire le port |
| canonique afin que le serveur puisse alimenter la directive |
| <directive module="core">UseCanonicalName</directive>. Avec |
| <code>UseCanonicalPhysicalPort Off</code>, Apache n'utilisera pas le |
| numéro de port physique réel, mais au contraire se référera aux |
| informations de configuration pour construire un numéro de port |
| valide.</p> |
| |
| <note><title>Note</title> |
| <p>L'ordre dans lequel s'effectue la recherche du port est le |
| suivant :<br /><br /> |
| <code>UseCanonicalName On</code></p> |
| <ul> |
| <li>Port spécifié par <code>Servername</code></li> |
| <li>Port physique</li> |
| <li>Port par défaut</li> |
| </ul> |
| <code>UseCanonicalName Off | DNS</code> |
| <ul> |
| <li>Port spécifié dans l'en-tête <code>Host:</code></li> |
| <li>Port physique</li> |
| <li>Port spécifié par <code>Servername</code></li> |
| <li>Port par défaut</li> |
| </ul> |
| |
| <p>Avec <code>UseCanonicalPhysicalPort Off</code>, on reprend |
| l'ordre ci-dessus en supprimant "Port physique".</p> |
| </note> |
| |
| </usage> |
| <seealso><directive module="core">UseCanonicalName</directive></seealso> |
| <seealso><directive module="core">ServerName</directive></seealso> |
| <seealso><directive module="mpm_common">Listen</directive></seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis type="section"> |
| <name>VirtualHost</name> |
| <description>Contient des directives qui ne s'appliquent qu'à un nom |
| d'hôte spécifique ou à une adresse IP</description> |
| <syntax><VirtualHost |
| <var>adresse IP</var>[:<var>port</var>] [<var>adresse |
| IP</var>[:<var>port</var>]] ...> ... |
| </VirtualHost></syntax> |
| <contextlist><context>server config</context></contextlist> |
| |
| <usage> |
| <p>Les balises <directive type="section">VirtualHost</directive> et |
| <code></VirtualHost></code> permettent de rassembler un groupe |
| de directives qui ne s'appliquent qu'à un serveur virtuel |
| particulier. Toute directive autorisée dans un contexte de serveur |
| virtuel peut être utilisée. Lorsque le serveur reçoit un requête |
| pour un document hébergé par un serveur virtuel particulier, il |
| applique les directives de configuration rassemblées dans la section |
| <directive type="section">VirtualHost</directive>. <var>adresse |
| IP</var> peut être :</p> |
| |
| <ul> |
| <li>L'adresse IP du serveur virtuel ;</li> |
| |
| <li>Un nom de domaine entièrement qualifié correspondant à |
| l'adresse IP du serveur virtuel (non recommandé) ;</li> |
| |
| <li>Le caractère <code>*</code>, qui n'est utilisé qu'en |
| combinaison avec <code>NameVirtualHost *</code> pour intercepter |
| toutes les adresses IP ; ou</li> |
| |
| <li>La chaîne de caractères <code>_default_</code>, qui n'est |
| utilisée qu'avec l'hébergement virtuel à base d'adresse IP pour |
| intercepter les adresses IP qui ne correspondent à aucun serveur |
| virtuel.</li> |
| </ul> |
| |
| <example><title>Exemple</title> |
| <VirtualHost 10.1.2.3:80><br /> |
| <indent> |
| ServerAdmin webmaster@host.example.com<br /> |
| DocumentRoot /www/docs/host.example.com<br /> |
| ServerName host.example.com<br /> |
| ErrorLog logs/host.example.com-error_log<br /> |
| TransferLog logs/host.example.com-access_log<br /> |
| </indent> |
| </VirtualHost> |
| </example> |
| |
| |
| <p>Les adresses IPv6 doivent être entourées de crochets car dans le |
| cas contraire, un éventuel port optionnel ne pourrait pas être |
| déterminé. Voici un exemple de serveur virtuel avec adresse IPv6 |
| :</p> |
| |
| <example> |
| <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80><br /> |
| <indent> |
| ServerAdmin webmaster@host.example.com<br /> |
| DocumentRoot /www/docs/host.example.com<br /> |
| ServerName host.example.com<br /> |
| ErrorLog logs/host.example.com-error_log<br /> |
| TransferLog logs/host.example.com-access_log<br /> |
| </indent> |
| </VirtualHost> |
| </example> |
| |
| <p>Chaque serveur virtuel doit correspondre à une adresse IP, un |
| port ou un nom d'hôte spécifique ; dans le premier cas, le serveur |
| doit être configuré pour recevoir les paquets IP de plusieurs |
| adresses (si le serveur n'a qu'une interface réseau, on peut |
| utiliser à cet effet la commande <code>ifconfig alias</code> -- si |
| votre système d'exploitation le permet).</p> |
| |
| <note><title>Note</title> |
| <p>L'utilisation de la directive <directive |
| type="section">VirtualHost</directive> n'affecte en rien les |
| adresses IP sur lesquelles Apache est en écoute. Vous devez vous |
| assurer que les adresses des serveurs virtuels sont bien incluses |
| dans la liste des adresses précisées par la directive <directive |
| module="mpm_common">Listen</directive>.</p> |
| </note> |
| |
| <p>Avec l'hébergement virtuel à base d'adresse IP, on peut utiliser |
| le nom spécial <code>_default_</code>, auquel cas le serveur virtuel |
| considéré interceptera toute adresse IP qui n'est pas explicitement |
| associée à un autre serveur virtuel. En l'absence de serveur virtuel |
| associé à <code>_default_</code>, et si l'adresse IP demandée ne |
| correspond à aucun serveur virtuel, c'est la configuration du |
| serveur "principal" qui sera utilisée, c'est à dire l'ensemble des |
| définitions situées en dehors de toute section VirtualHost (Notez |
| cependant que toute adresse IP correspondant à une directive |
| <directive module="core">NameVirtualHost</directive> n'utilisera ni |
| la configuration du serveur "principal", ni le serveur virtuel |
| <code>_default_</code>. Voir la documentation de l'<a |
| href="../vhosts/name-based.html">hébergement virtuel par |
| nom</a> pour plus de détails).</p> |
| |
| <p>Vous pouvez spécifier <code>:port</code> pour modifier le port du |
| serveur virtuel. S'il n'est pas spécifié, sa valeur par défaut |
| correspond à celle qui est définie par la dernière directive |
| <directive module="mpm_common">Listen</directive> du serveur |
| principal. Vous pouvez aussi spécifier <code>:*</code> pour accepter |
| tous les ports associés à l'adresse du serveur virtuel (c'est une |
| configuration recommandée lorsqu'on utilise |
| <code>_default_</code>).</p> |
| |
| <p>Tout bloc <directive |
| type="section">VirtualHost</directive> doit comporter une directive |
| <directive module="core">ServerName</directive>. Dans le cas |
| contraire, le serveur virtuel héritera de la valeur de la directive |
| <directive module="core">ServerName</directive> issue de la |
| configuration du serveur principal.</p> |
| |
| <note type="warning"><title>Sécurité</title> |
| <p>Voir le document sur les <a |
| href="../misc/security_tips.html">conseils à propos de la sécurité</a> |
| pour une description détaillée des raisons pour lesquelles la |
| sécurité de votre serveur pourrait être compromise, si le répertoire |
| contenant les fichiers journaux est inscriptible par tout autre |
| utilisateur que celui qui démarre le serveur.</p> |
| </note> |
| </usage> |
| <seealso><a href="../vhosts/">Documentation des serveurs virtuels |
| d'Apache</a></seealso> |
| <seealso><a href="../dns-caveats.html">Problèmes concernant DNS et |
| Apache</a></seealso> |
| <seealso><a href="../bind.html">Définition des adresses et ports |
| qu'utilise Apache</a></seealso> |
| <seealso><a href="../sections.html">Comment fonctionnent les sections |
| <Directory>, <Location> et <Files></a> pour une |
| explication de la manière dont ces différentes sections se combinent |
| entre elles à la réception d'une requête</seealso> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>MergeTrailers</name> |
| <description>Détermine si les données supplémentaires (trailers) sont |
| fusionnées avec les en-têtes</description> |
| <syntax>MergeTrailers [on|off]</syntax> |
| <default>MergeTrailers off</default> |
| <contextlist><context>server config</context><context>virtual host</context></contextlist> |
| <compatibility>Disponible à partir de la version 2.2.28 du serveur HTTP |
| Apache</compatibility> |
| |
| <usage> |
| <p>Cette directive permet de contrôler la fusion des données HTTP |
| supplémentaires (trailers) avec la représentation interne des |
| en-têtes. Cette fusion intervient lorsque le corps de la requête a |
| été entièrement reçu, bien longtemps après que la majeure partie du |
| traitement des en-têtes ait une chance de pouvoir examiner ou |
| modifier les en-têtes de la requête.</p> |
| <p>Cette option a été introduite dans un souci de compatibilité avec |
| les versions antérieures à 2.2.28, où les données supplémentaires |
| étaient systématiquement fusionnées avec les en-têtes de la requête.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>RegisterHttpMethod</name> |
| <description>Enregistrement de méthodes HTTP non standards</description> |
| <syntax>RegisterHttpMethod <var>méthode</var> [<var>méthode</var> [...]]</syntax> |
| <contextlist><context>server config</context></contextlist> |
| |
| <usage> |
| <p>Normalement, les méthodes HTTP non conformes aux RFCs correspondantes |
| sont rejetées au cours du traitement de la requête par HTTPD. Pour |
| éviter ceci, les modules peuvent enregistrer les méthodes HTTP non |
| standards qu'ils supportent. La directive |
| <directive>RegisterHttpMethod</directive> permet d'enregistrer de telles |
| méthodes manuellement. Ceci peut s'avérer utile si de telle méthodes |
| doivent être utilisées dans un traitement externe, comme un script CGI.</p> |
| </usage> |
| </directivesynopsis> |
| |
| </modulesynopsis> |