]> granicus.if.org Git - apache/commitdiff
Seems folks have forgotten to set eol-style, perhaps some modifications
authorWilliam A. Rowe Jr <wrowe@apache.org>
Thu, 23 Apr 2009 04:58:00 +0000 (04:58 +0000)
committerWilliam A. Rowe Jr <wrowe@apache.org>
Thu, 23 Apr 2009 04:58:00 +0000 (04:58 +0000)
to local subversion.conf files would be a good idea?  *.xml* or *.html*
anyone?

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@767794 13f79535-47bb-0310-9956-ffa450edef68

13 files changed:
docs/manual/env.html.fr
docs/manual/faq/index.html.fr
docs/manual/howto/auth.html.fr
docs/manual/howto/cgi.html.fr
docs/manual/howto/htaccess.html.fr
docs/manual/howto/public_html.html.fr
docs/manual/howto/ssi.html.fr
docs/manual/misc/index.html.fr
docs/manual/misc/perf-tuning.html.fr
docs/manual/misc/security_tips.html.fr
docs/manual/mod/mod_plainmem.html.en
docs/manual/mod/mod_proxy_fdpass.html.en
docs/manual/sitemap.html.fr

index b03b071850a0b816cf0390f7c0981000e26d8753..f0346d0efecf56f77e266f891267f67ce1233924 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Apache et les variables d'environnement - Serveur Apache HTTP</title>\r
-<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="./images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="./images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.3</a></div><div id="page-content"><div id="preamble"><h1>Apache et les variables d'environnement</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="./en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="./fr/env.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="./ja/env.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="./ko/env.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="./tr/env.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div>\r
-\r
-    <p>Le serveur HTTP Apache propose un mécanisme de stockage d'informations\r
-    dans des variables appelées <em>variables d'environnement</em>. Ces\r
-    informations peuvent servir à contrôler diverses opérations comme\r
-    l'enregistrement des traces ou le contrôle d'accès. On utilise aussi ces\r
-    variables dans le mécanisme de communication avec les programmes externes\r
-    comme les scripts CGI. Ce document présente différentes méthodes pour\r
-    manipuler et utiliser ces variables.</p>\r
-\r
-    <p>Bien que ces variables soient référencées comme <em>variables\r
-    d'environnement</em>, il ne faut pas les confondre avec les variables\r
-    d'environnement contrôlées par le système d'exploitation sous-jacent.\r
-    En fait, ces variables sont stockées et manipulées dans une structure\r
-    interne à Apache. Elles ne deviennent de véritables variables\r
-    d'environnement du système d'exploitation que lorsqu'elles sont mises à la\r
-    disposition de scripts CGI et de scripts inclus côté serveur (SSI). Si vous\r
-    souhaitez manipuler l'environnement du système d'exploitation sous lequel\r
-    le serveur s'exécute, vous devez utiliser les mécanismes standards de\r
-    manipulation de l'environnement fournis par l'interpréteur de commandes\r
-    (shell) de votre système d'exploitation.</p>\r
-  </div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#setting">Définition des variables d'environnement</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#using">Utilisation des variables d'environnement</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#special">Variables d'environnement à usage spécial</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#examples">Exemples</a></li>\r
-</ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="setting" id="setting">Définition des variables d'environnement</a></h2>\r
-    \r
-    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_env.html">mod_env</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li><li><code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code></li><li><code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#unsetenv">UnsetEnv</a></code></li></ul></td></tr></table>\r
-\r
-    <h3><a name="basic-manipulation" id="basic-manipulation">Manipulations de base de l'environnement</a></h3>\r
-        \r
-\r
-        <p>La méthode la plus élémentaire pour définir une variable\r
-       d'environnement au niveau d'Apache consiste à utiliser la directive\r
-       inconditionnelle <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code>. Les variables peuvent aussi être transmises depuis\r
-       l'environnement du shell à partir duquel le serveur a été démarré en\r
-       utilisant la directive\r
-        <code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code>.</p>\r
-\r
-    \r
-    <h3><a name="conditional" id="conditional">Définitions conditionnelles en fonction des requêtes</a></h3>\r
-        \r
-\r
-        <p>Pour plus de souplesse, les directives fournies par le module\r
-        <code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code> permettent de définir les\r
-       variables d'environnement en tenant compte des caractéristiques\r
-       de chaque requête. Par exemple, une\r
-       variable pourrait n'être définie que lorsqu'un navigateur spécifique\r
-       (User-Agent) a généré la requête, ou seulement quand un en-tête\r
-       Referer particulier est présent. La directive\r
-       <code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> du module\r
-       <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> qui utilise l'option\r
-       <code>[E=...]</code> pour définir\r
-       les variables d'environnement apporte encore plus de souplesse.</p>\r
-\r
-    \r
-    <h3><a name="unique-identifiers" id="unique-identifiers">Identifiants uniques</a></h3>\r
-        \r
-\r
-        <p>Finalement, le module <code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code> définit la variable\r
-       d'environnement <code>UNIQUE_ID</code> pour chaque requête à une valeur\r
-       qui est garantie unique parmi "toutes" les requêtes sous des\r
-       conditions très spécifiques.</p>\r
-\r
-    \r
-    <h3><a name="standard-cgi" id="standard-cgi">Variables CGI standards</a></h3>\r
-        \r
-\r
-        <p>En plus de l'ensemble des variables d'environnement internes à la\r
-       configuration d'Apache et de celles transmises depuis le shell,\r
-       les scripts CGI et les pages SSI\r
-       se voient affectés un ensemble de variables\r
-       d'environnement contenant des méta-informations à propos de la requête\r
-       comme préconisé dans la\r
-       <a href="http://cgi-spec.golux.com/">spécification\r
-       sur les CGIs</a>.</p>\r
-\r
-    \r
-    <h3><a name="caveats" id="caveats">Quelques mises en garde</a></h3>\r
-        \r
-\r
-        <ul>\r
-          <li>Les directives de manipulation de l'environnement ne permettent\r
-         pas de supplanter ou modifier les variables CGI standards.</li>\r
-\r
-          <li>Lorsqu'on utilise <code class="program"><a href="./programs/suexec.html">suexec</a></code> pour exécuter des\r
-         scripts CGI, l'environnement est nettoyé et réduit à un ensemble de\r
-         variables <em>sûres</em> avant l'exécution du script. La liste des\r
-         variables <em>sûres</em> est définie à la compilation dans\r
-          <code>suexec.c</code>.</li>\r
-\r
-          <li>Pour des raisons de portabilité, les noms des variables\r
-         d'environnement ne peuvent contenir que des lettres, des chiffres, et\r
-         le caractère "sousligné". En outre, le premier caractère ne doit pas\r
-         être un chiffre. Les caractères qui ne satisfont pas à ces conditions\r
-         seront remplacés par un caractère "sousligné" quand ils seront\r
-         transmis aux scripts CGI et aux pages SSI.</li>\r
-\r
-          <li>La directive <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> s'exécute assez tard au\r
-         cours du traitement de la requête, ce qui signifie que des\r
-         directives telles que <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> et <code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> ne verront pas\r
-         les variables qu'elle aura définies.</li>\r
-        </ul>\r
-    \r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="using" id="using">Utilisation des variables d'environnement</a></h2>\r
-    \r
-\r
-    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_authz_host.html">mod_authz_host</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code></li><li><code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code></li><li><code class="module"><a href="./mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_authz_host.html#allow">Allow</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="./mod/mod_authz_host.html#deny">Deny</a></code></li><li><code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code></li><li><code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li></ul></td></tr></table>\r
-\r
-    <h3><a name="cgi-scripts" id="cgi-scripts">Scripts CGI</a></h3>\r
-        \r
-\r
-        <p>La communication d'informations aux scripts CGI constitue une des\r
-       principales utilisations des variables d'environnement. Comme indiqué\r
-       plus haut, l'environnement transmis aux scripts CGI comprend des\r
-       méta-informations standards à propos de la requête, en plus des\r
-       variables définies dans la configuration d'Apache. Pour plus de\r
-       détails, se référer au\r
-        <a href="howto/cgi.html">tutoriel CGI</a>.</p>\r
-\r
-    \r
-    <h3><a name="ssi-pages" id="ssi-pages">Pages SSI</a></h3>\r
-        \r
-\r
-        <p>Les documents inclus côté serveur (SSI) traités par le filtre\r
-        <code>INCLUDES</code> du module <code class="module"><a href="./mod/mod_include.html">mod_include</a></code>,\r
-       peuvent afficher les\r
-       variables d'environnement à l'aide de l'élément <code>echo</code>,\r
-       et peuvent utiliser des variables d'environnement dans les éléments\r
-       de contrôle de flux pour rendre certaines parties d'une page\r
-        conditionnelles en fonction des caractéristiques de la requête.\r
-       Apache fournit aussi les variables d'environnement CGI standards\r
-       aux pages SSI\r
-       comme indiqué plus haut. Pour plus de détails, se référer au\r
-       <a href="howto/ssi.html">tutoriel SSI</a>.</p>\r
-\r
-    \r
-    <h3><a name="access-control" id="access-control">Contrôle d'accès</a></h3>\r
-        \r
-\r
-        <p>L'accès au serveur peut être contrôlé en fonction de la valeur de\r
-       variables d'environnement à l'aide des directives\r
-       <code>allow from env=</code> et <code>deny from env=</code>.\r
-       En association avec la directive\r
-        <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>, ceci confère une\r
-       grande souplesse au contrôle d'accès au serveur en fonction des\r
-       caractéristiques du client. Par exemple, vous pouvez utiliser ces\r
-        directives pour interdire l'accès depuis un navigateur particulier\r
-       (User-Agent).\r
-        </p>\r
-\r
-    \r
-    <h3><a name="logging" id="logging">Enregistrement conditionnel des traces</a></h3>\r
-        \r
-\r
-        <p>Les variables d'environnement peuvent être enregistrées dans le\r
-       fichier de log des accès à l'aide de l'option <code>%e</code> de la\r
-       directive <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code>.\r
-       En outre, la décision de tracer ou non les requêtes peut être prise\r
-       en fonction de l'état de variables d'environnement en utilisant la\r
-       forme conditionnelle de la directive\r
-        <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>. En\r
-       association avec la directive <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>, ceci confère une grande souplesse au contrôle\r
-       du traçage des requêtes. Par exemple, vous pouvez choisir de ne pas\r
-       tracer les requêtes pour des noms de fichiers se terminant par\r
-       <code>gif</code>, ou encore de ne tracer que les requêtes des clients\r
-       n'appartenant pas à votre sous-réseau.</p>\r
-\r
-    \r
-    <h3><a name="response-headers" id="response-headers">En-têtes de réponse conditionnels</a></h3>\r
-        \r
-\r
-        <p>La directive <code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code>\r
-        peut se baser sur la présence ou l'absence d'une variable\r
-       d'environnement pour décider si un certain en-tête HTTP sera placé\r
-       dans la réponse au client. Ceci permet, par exemple, de n'envoyer un\r
-       certain en-tête de réponse que si un en-tête correspondant est présent\r
-       dans la requête du client.</p>\r
-\r
-    \r
-\r
-    <h3><a name="external-filter" id="external-filter">Activation de filtres externes</a></h3>\r
-        \r
-\r
-        <p>Les filtres externes configurés par le module\r
-       <code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code> à l'aide de la directive <code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code> peuvent être\r
-       activés de manière conditionnelle en fonction d'une variable\r
-       d'environnement à l'aide des options\r
-        <code>disableenv=</code> et <code>enableenv=</code>.</p>\r
-    \r
-\r
-    <h3><a name="url-rewriting" id="url-rewriting">Réécriture d'URL</a></h3>\r
-        \r
-\r
-        <p>La forme <code>%{ENV:<em>variable</em>}</code> de\r
-       <em>TestString</em> dans la\r
-       directive <code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>\r
-        permet au moteur de réécriture du module\r
-       <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> de prendre des\r
-       décisions conditionnées par des variables d'environnement.\r
-        Notez que les variables accessibles dans\r
-       <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> sans le préfixe\r
-        <code>ENV:</code> ne sont pas de véritables variables\r
-       d'environnement. Ce sont plutôt des variables spécifiques à\r
-       <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code>\r
-        qui ne sont pas accessibles pour les autres modules.</p>\r
-    \r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="special" id="special">Variables d'environnement à usage spécial</a></h2>\r
-    \r
-\r
-        <p>Des problèmes d'interopérabilité ont conduit à l'introduction de\r
-       mécanismes permettant de modifier le comportement d'Apache lorsqu'il\r
-       dialogue avec certains clients. Afin de rendre ces mécanismes aussi\r
-       souples que possible, ils sont invoqués en définissant des variables\r
-       d'environnement, en général à l'aide de la directive\r
-       <code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>, bien que les\r
-       directives <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> et\r
-       <code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code> puissent aussi être\r
-       utilisées, par exemple.</p>\r
-\r
-    <h3><a name="downgrade" id="downgrade">downgrade-1.0</a></h3>\r
-        \r
-\r
-        <p>Ceci force le traitement d'une requête comme une requête HTTP/1.0\r
-        même si elle a été rédigée dans un langage plus récent.</p>\r
-\r
-    \r
-    <h3><a name="force-gzip" id="force-gzip">force-gzip</a></h3>\r
-        \r
-          <p>Si le filtre <code>DEFLATE</code> est activé, cette variable\r
-         d'environnement ignorera les réglages accept-encoding de votre\r
-         navigateur et enverra une sortie compressée inconditionnellement.</p>\r
-    \r
-    <h3><a name="force-no-vary" id="force-no-vary">force-no-vary</a></h3>\r
-        \r
-\r
-        <p>Cette variable entraîne la suppression de tout champ\r
-       <code>Vary</code> des en-têtes de la réponse avant que cette dernière\r
-       soit renvoyée au client. Certains clients n'interprètent pas ce champ\r
-       correctement, et la définition de cette variable permet de contourner\r
-       ce problème, mais implique aussi la définition de\r
-       <strong>force-response-1.0</strong>.</p>\r
-\r
-    \r
-    <h3><a name="force-response" id="force-response">force-response-1.0</a></h3>\r
-        \r
-\r
-      <p>Cette variable force une réponse en langage HTTP/1.0 aux clients\r
-      qui envoient des requêtes dans le même langage. Elle fut implémentée à\r
-      l'origine suite à des problèmes avec les mandataires d'AOL. Certains\r
-      clients en langage HTTP/1.0 ne réagissent pas correctement face à une\r
-      réponse en langage HTTP/1.1, et cette variable peut être utilisée pour\r
-      assurer l'interopérabilité avec eux.</p>\r
-\r
-    \r
-\r
-    <h3><a name="gzip-only-text-html" id="gzip-only-text-html">gzip-only-text/html</a></h3>\r
-        \r
-\r
-        <p>Positionnée à "1", cette variable désactive le filtre en sortie\r
-       <code>DEFLATE</code> fourni par le module <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code> pour les\r
-       types de contenu autres que <code>text/html</code>. Si vous préférez\r
-       utiliser des fichiers compressés statiquement,\r
-       <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> évalue aussi la variable (non\r
-       seulement pour gzip, mais aussi pour tous les encodages autres que\r
-       "identity").</p>\r
-    \r
-\r
-    <h3><a name="no-gzip" id="no-gzip">no-gzip</a></h3>\r
-\r
-        <p>Quand cette variable est définie, le filtre <code>DEFLATE</code> du\r
-       module <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code> est désactivé, et\r
-        <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> refusera de délivrer des ressources\r
-       encodées.</p>\r
-\r
-    \r
-\r
-    <h3><a name="no-cache" id="no-cache">no-cache</a></h3>\r
-\r
-        <p>Lorsque cette variable est définie,\r
-       <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> ne sauvegardera pas de réponse\r
-       susceptible d'être mise en cache. Cette variable d'environnement\r
-       n'a aucune incidence sur le fait qu'une réponse déjà enregistrée\r
-       dans la cache soit utilisée ou non pour la requête courante.</p>\r
-\r
-    \r
-\r
-    <h3><a name="nokeepalive" id="nokeepalive">nokeepalive</a></h3>\r
-        \r
-\r
-        <p>Quand cette variable est définie, la directive\r
-       <code class="directive"><a href="./mod/core.html#keepalive">KeepAlive</a></code> est désactivée.</p>\r
-\r
-    \r
-\r
-    <h3><a name="prefer-language" id="prefer-language">prefer-language</a></h3>\r
-\r
-        <p>Cette variable modifie le comportement du module\r
-       <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>. Si elle contient un symbole de\r
-       langage (tel que <code>en</code>, <code>ja</code>\r
-        ou <code>x-klingon</code>), <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> essaie de\r
-       délivrer une variante dans ce langage. S'il n'existe pas de telle\r
-       variante, le processus normal de\r
-       <a href="content-negotiation.html">négociation</a> s'applique.</p>\r
-\r
-    \r
-\r
-    <h3><a name="redirect-carefully" id="redirect-carefully">redirect-carefully</a></h3>\r
-        \r
-\r
-        <p>Cette variable force le serveur à être plus prudent lors de l'envoi\r
-       d'une redirection au client. Elle est en général utilisée quand un\r
-       client présente un problème connu avec les redirections. Elle fut\r
-       implémentée à l'origine suite a un problème rencontré avec le logiciel\r
-       WebFolders de Microsoft qui ne gère pas correctement les redirections\r
-       vers des ressources de type répertoire via des méthodes DAV.</p>\r
-\r
-    \r
-\r
-   <h3><a name="suppress-error-charset" id="suppress-error-charset">suppress-error-charset</a></h3>\r
-       \r
-\r
-    <p><em>Disponible dans les versions postérieures à 2.0.54</em></p>\r
-\r
-    <p>Quand Apache génère une redirection en réponse à une requête client,\r
-    la réponse inclut un texte destiné à être affiché au cas où le client ne\r
-    suivrait pas, ou ne pourrait pas suivre automatiquement la redirection.\r
-    Habituellement, Apache marque ce texte en accord avec le jeu de caractères\r
-    qu'il utilise, à savoir ISO-8859-1.</p>\r
-    <p> Cependant, si la redirection fait référence à une page qui utilise un\r
-    jeu de caractères différent, certaines versions de navigateurs obsolètes\r
-    essaieront d'utiliser le jeu de caractères du texte de la redirection\r
-    plutôt que celui de la page réelle.\r
-    Ceci peut entraîner, par exemple, un rendu incorrect du Grec.</p>\r
-    <p>Si cette variable d'environnement est définie, Apache omettra le jeu de\r
-    caractères pour le texte de la redirection, et les navigateurs obsolètes\r
-    précités utiliseront correctement celui de la page de destination.</p>\r
-\r
-    <div class="warning">\r
-      <h3>Note concernant la sécurité</h3>\r
-\r
-      <p>L'envoi de pages d'erreur sans spécifier un jeu de caractères peut\r
-      conduire à des attaques de type "cross-site-scripting" pour les\r
-      navigateurs qui ne respectent pas la spécification HTTP/1.1 (MSIE) et\r
-      tentent de déduire le jeu de caractères à partir du contenu. De tels\r
-      navigateurs peuvent être facilement trompés et utiliser le jeu de\r
-      caractères UTF-7 ; les contenus des données en entrée de type UTF-7\r
-      (comme les URI de requête) ne seront alors plus protégés par les\r
-      mécanismes d'échappement usuels conçus pour prévenir les attaques\r
-      de type "cross-site-scripting".</p>\r
-    </div>\r
-\r
-   \r
-\r
-   <h3><a name="proxy" id="proxy">force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked,\r
-   proxy-sendcl, proxy-chain-auth, proxy-interim-response, proxy-initial-not-pooled</a></h3>\r
-\r
-   <p>Ces directives modifient le comportement protocolaire du module\r
-   <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>.  Voir la documentation sur\r
-   <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> et <code class="module"><a href="./mod/mod_proxy_http.html">mod_proxy_http</a></code> pour plus de détails.</p>\r
-   \r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="examples" id="examples">Exemples</a></h2>\r
-    \r
-\r
-    <h3><a name="misbehaving" id="misbehaving">Modification du comportement protocolaire face à des clients\r
-       réagissant de manière non conforme</a></h3>\r
-        \r
-\r
-        <p>Les versions antérieures recommandaient l'ajout de ces lignes dans\r
-        httpd.conf pour tenir compte de problèmes connus avec certains clients.\r
-       Comme les clients concernés sont maintenant très peu utilisés, cet\r
-       ajout n'est pratiquement plus nécessaire.</p>\r
-<div class="example"><pre>\r
-#\r
-# The following directives modify normal HTTP response behavior.\r
-# The first directive disables keepalive for Netscape 2.x and browsers that\r
-# spoof it. There are known problems with these browser implementations.\r
-# The second directive is for Microsoft Internet Explorer 4.0b2\r
-# which has a broken HTTP/1.1 implementation and does not properly\r
-# support keepalive when it is used on 301 or 302 (redirect) responses.\r
-#\r
-BrowserMatch "Mozilla/2" nokeepalive\r
-BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0\r
-\r
-#\r
-# The following directive disables HTTP/1.1 responses to browsers which\r
-# are in violation of the HTTP/1.0 spec by not being able to grok a\r
-# basic 1.1 response.\r
-#\r
-BrowserMatch "RealPlayer 4\.0" force-response-1.0\r
-BrowserMatch "Java/1\.0" force-response-1.0\r
-BrowserMatch "JDK/1\.0" force-response-1.0</pre></div>\r
-\r
-    \r
-    <h3><a name="no-img-log" id="no-img-log">Ne pas tracer les requêtes pour des images dans le fichier de\r
-       trace des accès</a></h3>\r
-        \r
-\r
-        <p>Dans cet exemple, les requêtes pour des images n'apparaissent pas\r
-       dans le fichier de trace des accès. Il peut être facilement adapté pour\r
-       empêcher le traçage de répertoires particuliers, ou de requêtes\r
-        en provenance de certains hôtes.</p>\r
-         <div class="example"><p><code>\r
-          SetEnvIf Request_URI \.gif image-request<br />\r
-           SetEnvIf Request_URI \.jpg image-request<br />\r
-           SetEnvIf Request_URI \.png image-request<br />\r
-           CustomLog logs/access_log common env=!image-request\r
-        </code></p></div>\r
-\r
-    \r
-    <h3><a name="image-theft" id="image-theft">Prévention du "Vol d'image"</a></h3>\r
-        \r
-\r
-        <p>Cet exemple montre comment empêcher les utilisateurs ne faisant pas\r
-       partie de votre serveur d'utiliser des images de votre serveur comme\r
-       images en ligne dans leurs pages. Cette configuration n'est pas\r
-       recommandée, mais elle peut fonctionner dans des circonstances bien\r
-       définies. Nous supposons que toutes vos images sont enregistrées dans\r
-       un répertoire nommé <code>/web/images</code>.</p>\r
-    <div class="example"><p><code>\r
-          SetEnvIf Referer "^http://www\.example\.com/" local_referal\r
-          # Allow browsers that do not send Referer info\r
-          SetEnvIf Referer "^$" local_referal\r
-          &lt;Directory /web/images&gt;\r
-          <span class="indent">\r
-            Order Deny,Allow<br />\r
-            Deny from all<br />\r
-            Allow from env=local_referal\r
-          </span>\r
-          &lt;/Directory&gt;\r
-        </code></p></div>\r
-\r
-        <p>Pour plus d'informations sur cette technique, voir le tutoriel sur\r
-       ServerWatch\r
-       "<a href="http://www.serverwatch.com/tutorials/article.php/1132731">Keeping Your Images from Adorning Other Sites</a>".</p>\r
-    \r
-  </div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="./en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="./fr/env.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="./ja/env.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="./ko/env.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="./tr/env.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Apache et les variables d'environnement - Serveur Apache HTTP</title>
+<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="./images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="./images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.3</a></div><div id="page-content"><div id="preamble"><h1>Apache et les variables d'environnement</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="./en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="./fr/env.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="./ja/env.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="./ko/env.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="./tr/env.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div>
+
+    <p>Le serveur HTTP Apache propose un mécanisme de stockage d'informations
+    dans des variables appelées <em>variables d'environnement</em>. Ces
+    informations peuvent servir à contrôler diverses opérations comme
+    l'enregistrement des traces ou le contrôle d'accès. On utilise aussi ces
+    variables dans le mécanisme de communication avec les programmes externes
+    comme les scripts CGI. Ce document présente différentes méthodes pour
+    manipuler et utiliser ces variables.</p>
+
+    <p>Bien que ces variables soient référencées comme <em>variables
+    d'environnement</em>, il ne faut pas les confondre avec les variables
+    d'environnement contrôlées par le système d'exploitation sous-jacent.
+    En fait, ces variables sont stockées et manipulées dans une structure
+    interne à Apache. Elles ne deviennent de véritables variables
+    d'environnement du système d'exploitation que lorsqu'elles sont mises à la
+    disposition de scripts CGI et de scripts inclus côté serveur (SSI). Si vous
+    souhaitez manipuler l'environnement du système d'exploitation sous lequel
+    le serveur s'exécute, vous devez utiliser les mécanismes standards de
+    manipulation de l'environnement fournis par l'interpréteur de commandes
+    (shell) de votre système d'exploitation.</p>
+  </div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#setting">Définition des variables d'environnement</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#using">Utilisation des variables d'environnement</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#special">Variables d'environnement à usage spécial</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#examples">Exemples</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="setting" id="setting">Définition des variables d'environnement</a></h2>
+    
+    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_env.html">mod_env</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li><li><code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code></li><li><code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code></li><li><code class="directive"><a href="./mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code></li><li><code class="directive"><a href="./mod/mod_env.html#unsetenv">UnsetEnv</a></code></li></ul></td></tr></table>
+
+    <h3><a name="basic-manipulation" id="basic-manipulation">Manipulations de base de l'environnement</a></h3>
+        
+
+        <p>La méthode la plus élémentaire pour définir une variable
+       d'environnement au niveau d'Apache consiste à utiliser la directive
+       inconditionnelle <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code>. Les variables peuvent aussi être transmises depuis
+       l'environnement du shell à partir duquel le serveur a été démarré en
+       utilisant la directive
+        <code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code>.</p>
+
+    
+    <h3><a name="conditional" id="conditional">Définitions conditionnelles en fonction des requêtes</a></h3>
+        
+
+        <p>Pour plus de souplesse, les directives fournies par le module
+        <code class="module"><a href="./mod/mod_setenvif.html">mod_setenvif</a></code> permettent de définir les
+       variables d'environnement en tenant compte des caractéristiques
+       de chaque requête. Par exemple, une
+       variable pourrait n'être définie que lorsqu'un navigateur spécifique
+       (User-Agent) a généré la requête, ou seulement quand un en-tête
+       Referer particulier est présent. La directive
+       <code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> du module
+       <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> qui utilise l'option
+       <code>[E=...]</code> pour définir
+       les variables d'environnement apporte encore plus de souplesse.</p>
+
+    
+    <h3><a name="unique-identifiers" id="unique-identifiers">Identifiants uniques</a></h3>
+        
+
+        <p>Finalement, le module <code class="module"><a href="./mod/mod_unique_id.html">mod_unique_id</a></code> définit la variable
+       d'environnement <code>UNIQUE_ID</code> pour chaque requête à une valeur
+       qui est garantie unique parmi "toutes" les requêtes sous des
+       conditions très spécifiques.</p>
+
+    
+    <h3><a name="standard-cgi" id="standard-cgi">Variables CGI standards</a></h3>
+        
+
+        <p>En plus de l'ensemble des variables d'environnement internes à la
+       configuration d'Apache et de celles transmises depuis le shell,
+       les scripts CGI et les pages SSI
+       se voient affectés un ensemble de variables
+       d'environnement contenant des méta-informations à propos de la requête
+       comme préconisé dans la
+       <a href="http://cgi-spec.golux.com/">spécification
+       sur les CGIs</a>.</p>
+
+    
+    <h3><a name="caveats" id="caveats">Quelques mises en garde</a></h3>
+        
+
+        <ul>
+          <li>Les directives de manipulation de l'environnement ne permettent
+         pas de supplanter ou modifier les variables CGI standards.</li>
+
+          <li>Lorsqu'on utilise <code class="program"><a href="./programs/suexec.html">suexec</a></code> pour exécuter des
+         scripts CGI, l'environnement est nettoyé et réduit à un ensemble de
+         variables <em>sûres</em> avant l'exécution du script. La liste des
+         variables <em>sûres</em> est définie à la compilation dans
+          <code>suexec.c</code>.</li>
+
+          <li>Pour des raisons de portabilité, les noms des variables
+         d'environnement ne peuvent contenir que des lettres, des chiffres, et
+         le caractère "sousligné". En outre, le premier caractère ne doit pas
+         être un chiffre. Les caractères qui ne satisfont pas à ces conditions
+         seront remplacés par un caractère "sousligné" quand ils seront
+         transmis aux scripts CGI et aux pages SSI.</li>
+
+          <li>La directive <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> s'exécute assez tard au
+         cours du traitement de la requête, ce qui signifie que des
+         directives telles que <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code> et <code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code> ne verront pas
+         les variables qu'elle aura définies.</li>
+        </ul>
+    
+  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="using" id="using">Utilisation des variables d'environnement</a></h2>
+    
+
+    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="./mod/mod_authz_host.html">mod_authz_host</a></code></li><li><code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code></li><li><code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code></li><li><code class="module"><a href="./mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="./mod/mod_log_config.html">mod_log_config</a></code></li><li><code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/mod_authz_host.html#allow">Allow</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code></li><li><code class="directive"><a href="./mod/mod_authz_host.html#deny">Deny</a></code></li><li><code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code></li><li><code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code></li><li><code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code></li><li><code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code></li></ul></td></tr></table>
+
+    <h3><a name="cgi-scripts" id="cgi-scripts">Scripts CGI</a></h3>
+        
+
+        <p>La communication d'informations aux scripts CGI constitue une des
+       principales utilisations des variables d'environnement. Comme indiqué
+       plus haut, l'environnement transmis aux scripts CGI comprend des
+       méta-informations standards à propos de la requête, en plus des
+       variables définies dans la configuration d'Apache. Pour plus de
+       détails, se référer au
+        <a href="howto/cgi.html">tutoriel CGI</a>.</p>
+
+    
+    <h3><a name="ssi-pages" id="ssi-pages">Pages SSI</a></h3>
+        
+
+        <p>Les documents inclus côté serveur (SSI) traités par le filtre
+        <code>INCLUDES</code> du module <code class="module"><a href="./mod/mod_include.html">mod_include</a></code>,
+       peuvent afficher les
+       variables d'environnement à l'aide de l'élément <code>echo</code>,
+       et peuvent utiliser des variables d'environnement dans les éléments
+       de contrôle de flux pour rendre certaines parties d'une page
+        conditionnelles en fonction des caractéristiques de la requête.
+       Apache fournit aussi les variables d'environnement CGI standards
+       aux pages SSI
+       comme indiqué plus haut. Pour plus de détails, se référer au
+       <a href="howto/ssi.html">tutoriel SSI</a>.</p>
+
+    
+    <h3><a name="access-control" id="access-control">Contrôle d'accès</a></h3>
+        
+
+        <p>L'accès au serveur peut être contrôlé en fonction de la valeur de
+       variables d'environnement à l'aide des directives
+       <code>allow from env=</code> et <code>deny from env=</code>.
+       En association avec la directive
+        <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>, ceci confère une
+       grande souplesse au contrôle d'accès au serveur en fonction des
+       caractéristiques du client. Par exemple, vous pouvez utiliser ces
+        directives pour interdire l'accès depuis un navigateur particulier
+       (User-Agent).
+        </p>
+
+    
+    <h3><a name="logging" id="logging">Enregistrement conditionnel des traces</a></h3>
+        
+
+        <p>Les variables d'environnement peuvent être enregistrées dans le
+       fichier de log des accès à l'aide de l'option <code>%e</code> de la
+       directive <code class="directive"><a href="./mod/mod_log_config.html#logformat">LogFormat</a></code>.
+       En outre, la décision de tracer ou non les requêtes peut être prise
+       en fonction de l'état de variables d'environnement en utilisant la
+       forme conditionnelle de la directive
+        <code class="directive"><a href="./mod/mod_log_config.html#customlog">CustomLog</a></code>. En
+       association avec la directive <code class="directive"><a href="./mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>, ceci confère une grande souplesse au contrôle
+       du traçage des requêtes. Par exemple, vous pouvez choisir de ne pas
+       tracer les requêtes pour des noms de fichiers se terminant par
+       <code>gif</code>, ou encore de ne tracer que les requêtes des clients
+       n'appartenant pas à votre sous-réseau.</p>
+
+    
+    <h3><a name="response-headers" id="response-headers">En-têtes de réponse conditionnels</a></h3>
+        
+
+        <p>La directive <code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code>
+        peut se baser sur la présence ou l'absence d'une variable
+       d'environnement pour décider si un certain en-tête HTTP sera placé
+       dans la réponse au client. Ceci permet, par exemple, de n'envoyer un
+       certain en-tête de réponse que si un en-tête correspondant est présent
+       dans la requête du client.</p>
+
+    
+
+    <h3><a name="external-filter" id="external-filter">Activation de filtres externes</a></h3>
+        
+
+        <p>Les filtres externes configurés par le module
+       <code class="module"><a href="./mod/mod_ext_filter.html">mod_ext_filter</a></code> à l'aide de la directive <code class="directive"><a href="./mod/mod_ext_filter.html#extfilterdefine">ExtFilterDefine</a></code> peuvent être
+       activés de manière conditionnelle en fonction d'une variable
+       d'environnement à l'aide des options
+        <code>disableenv=</code> et <code>enableenv=</code>.</p>
+    
+
+    <h3><a name="url-rewriting" id="url-rewriting">Réécriture d'URL</a></h3>
+        
+
+        <p>La forme <code>%{ENV:<em>variable</em>}</code> de
+       <em>TestString</em> dans la
+       directive <code class="directive"><a href="./mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>
+        permet au moteur de réécriture du module
+       <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> de prendre des
+       décisions conditionnées par des variables d'environnement.
+        Notez que les variables accessibles dans
+       <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> sans le préfixe
+        <code>ENV:</code> ne sont pas de véritables variables
+       d'environnement. Ce sont plutôt des variables spécifiques à
+       <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code>
+        qui ne sont pas accessibles pour les autres modules.</p>
+    
+  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="special" id="special">Variables d'environnement à usage spécial</a></h2>
+    
+
+        <p>Des problèmes d'interopérabilité ont conduit à l'introduction de
+       mécanismes permettant de modifier le comportement d'Apache lorsqu'il
+       dialogue avec certains clients. Afin de rendre ces mécanismes aussi
+       souples que possible, ils sont invoqués en définissant des variables
+       d'environnement, en général à l'aide de la directive
+       <code class="directive"><a href="./mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>, bien que les
+       directives <code class="directive"><a href="./mod/mod_env.html#setenv">SetEnv</a></code> et
+       <code class="directive"><a href="./mod/mod_env.html#passenv">PassEnv</a></code> puissent aussi être
+       utilisées, par exemple.</p>
+
+    <h3><a name="downgrade" id="downgrade">downgrade-1.0</a></h3>
+        
+
+        <p>Ceci force le traitement d'une requête comme une requête HTTP/1.0
+        même si elle a été rédigée dans un langage plus récent.</p>
+
+    
+    <h3><a name="force-gzip" id="force-gzip">force-gzip</a></h3>
+        
+          <p>Si le filtre <code>DEFLATE</code> est activé, cette variable
+         d'environnement ignorera les réglages accept-encoding de votre
+         navigateur et enverra une sortie compressée inconditionnellement.</p>
+    
+    <h3><a name="force-no-vary" id="force-no-vary">force-no-vary</a></h3>
+        
+
+        <p>Cette variable entraîne la suppression de tout champ
+       <code>Vary</code> des en-têtes de la réponse avant que cette dernière
+       soit renvoyée au client. Certains clients n'interprètent pas ce champ
+       correctement, et la définition de cette variable permet de contourner
+       ce problème, mais implique aussi la définition de
+       <strong>force-response-1.0</strong>.</p>
+
+    
+    <h3><a name="force-response" id="force-response">force-response-1.0</a></h3>
+        
+
+      <p>Cette variable force une réponse en langage HTTP/1.0 aux clients
+      qui envoient des requêtes dans le même langage. Elle fut implémentée à
+      l'origine suite à des problèmes avec les mandataires d'AOL. Certains
+      clients en langage HTTP/1.0 ne réagissent pas correctement face à une
+      réponse en langage HTTP/1.1, et cette variable peut être utilisée pour
+      assurer l'interopérabilité avec eux.</p>
+
+    
+
+    <h3><a name="gzip-only-text-html" id="gzip-only-text-html">gzip-only-text/html</a></h3>
+        
+
+        <p>Positionnée à "1", cette variable désactive le filtre en sortie
+       <code>DEFLATE</code> fourni par le module <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code> pour les
+       types de contenu autres que <code>text/html</code>. Si vous préférez
+       utiliser des fichiers compressés statiquement,
+       <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> évalue aussi la variable (non
+       seulement pour gzip, mais aussi pour tous les encodages autres que
+       "identity").</p>
+    
+
+    <h3><a name="no-gzip" id="no-gzip">no-gzip</a></h3>
+
+        <p>Quand cette variable est définie, le filtre <code>DEFLATE</code> du
+       module <code class="module"><a href="./mod/mod_deflate.html">mod_deflate</a></code> est désactivé, et
+        <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> refusera de délivrer des ressources
+       encodées.</p>
+
+    
+
+    <h3><a name="no-cache" id="no-cache">no-cache</a></h3>
+
+        <p>Lorsque cette variable est définie,
+       <code class="module"><a href="./mod/mod_cache.html">mod_cache</a></code> ne sauvegardera pas de réponse
+       susceptible d'être mise en cache. Cette variable d'environnement
+       n'a aucune incidence sur le fait qu'une réponse déjà enregistrée
+       dans la cache soit utilisée ou non pour la requête courante.</p>
+
+    
+
+    <h3><a name="nokeepalive" id="nokeepalive">nokeepalive</a></h3>
+        
+
+        <p>Quand cette variable est définie, la directive
+       <code class="directive"><a href="./mod/core.html#keepalive">KeepAlive</a></code> est désactivée.</p>
+
+    
+
+    <h3><a name="prefer-language" id="prefer-language">prefer-language</a></h3>
+
+        <p>Cette variable modifie le comportement du module
+       <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>. Si elle contient un symbole de
+       langage (tel que <code>en</code>, <code>ja</code>
+        ou <code>x-klingon</code>), <code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code> essaie de
+       délivrer une variante dans ce langage. S'il n'existe pas de telle
+       variante, le processus normal de
+       <a href="content-negotiation.html">négociation</a> s'applique.</p>
+
+    
+
+    <h3><a name="redirect-carefully" id="redirect-carefully">redirect-carefully</a></h3>
+        
+
+        <p>Cette variable force le serveur à être plus prudent lors de l'envoi
+       d'une redirection au client. Elle est en général utilisée quand un
+       client présente un problème connu avec les redirections. Elle fut
+       implémentée à l'origine suite a un problème rencontré avec le logiciel
+       WebFolders de Microsoft qui ne gère pas correctement les redirections
+       vers des ressources de type répertoire via des méthodes DAV.</p>
+
+    
+
+   <h3><a name="suppress-error-charset" id="suppress-error-charset">suppress-error-charset</a></h3>
+       
+
+    <p><em>Disponible dans les versions postérieures à 2.0.54</em></p>
+
+    <p>Quand Apache génère une redirection en réponse à une requête client,
+    la réponse inclut un texte destiné à être affiché au cas où le client ne
+    suivrait pas, ou ne pourrait pas suivre automatiquement la redirection.
+    Habituellement, Apache marque ce texte en accord avec le jeu de caractères
+    qu'il utilise, à savoir ISO-8859-1.</p>
+    <p> Cependant, si la redirection fait référence à une page qui utilise un
+    jeu de caractères différent, certaines versions de navigateurs obsolètes
+    essaieront d'utiliser le jeu de caractères du texte de la redirection
+    plutôt que celui de la page réelle.
+    Ceci peut entraîner, par exemple, un rendu incorrect du Grec.</p>
+    <p>Si cette variable d'environnement est définie, Apache omettra le jeu de
+    caractères pour le texte de la redirection, et les navigateurs obsolètes
+    précités utiliseront correctement celui de la page de destination.</p>
+
+    <div class="warning">
+      <h3>Note concernant la sécurité</h3>
+
+      <p>L'envoi de pages d'erreur sans spécifier un jeu de caractères peut
+      conduire à des attaques de type "cross-site-scripting" pour les
+      navigateurs qui ne respectent pas la spécification HTTP/1.1 (MSIE) et
+      tentent de déduire le jeu de caractères à partir du contenu. De tels
+      navigateurs peuvent être facilement trompés et utiliser le jeu de
+      caractères UTF-7 ; les contenus des données en entrée de type UTF-7
+      (comme les URI de requête) ne seront alors plus protégés par les
+      mécanismes d'échappement usuels conçus pour prévenir les attaques
+      de type "cross-site-scripting".</p>
+    </div>
+
+   
+
+   <h3><a name="proxy" id="proxy">force-proxy-request-1.0, proxy-nokeepalive, proxy-sendchunked,
+   proxy-sendcl, proxy-chain-auth, proxy-interim-response, proxy-initial-not-pooled</a></h3>
+
+   <p>Ces directives modifient le comportement protocolaire du module
+   <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>.  Voir la documentation sur
+   <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code> et <code class="module"><a href="./mod/mod_proxy_http.html">mod_proxy_http</a></code> pour plus de détails.</p>
+   
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="examples" id="examples">Exemples</a></h2>
+    
+
+    <h3><a name="misbehaving" id="misbehaving">Modification du comportement protocolaire face à des clients
+       réagissant de manière non conforme</a></h3>
+        
+
+        <p>Les versions antérieures recommandaient l'ajout de ces lignes dans
+        httpd.conf pour tenir compte de problèmes connus avec certains clients.
+       Comme les clients concernés sont maintenant très peu utilisés, cet
+       ajout n'est pratiquement plus nécessaire.</p>
+<div class="example"><pre>
+#
+# The following directives modify normal HTTP response behavior.
+# The first directive disables keepalive for Netscape 2.x and browsers that
+# spoof it. There are known problems with these browser implementations.
+# The second directive is for Microsoft Internet Explorer 4.0b2
+# which has a broken HTTP/1.1 implementation and does not properly
+# support keepalive when it is used on 301 or 302 (redirect) responses.
+#
+BrowserMatch "Mozilla/2" nokeepalive
+BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+
+#
+# The following directive disables HTTP/1.1 responses to browsers which
+# are in violation of the HTTP/1.0 spec by not being able to grok a
+# basic 1.1 response.
+#
+BrowserMatch "RealPlayer 4\.0" force-response-1.0
+BrowserMatch "Java/1\.0" force-response-1.0
+BrowserMatch "JDK/1\.0" force-response-1.0</pre></div>
+
+    
+    <h3><a name="no-img-log" id="no-img-log">Ne pas tracer les requêtes pour des images dans le fichier de
+       trace des accès</a></h3>
+        
+
+        <p>Dans cet exemple, les requêtes pour des images n'apparaissent pas
+       dans le fichier de trace des accès. Il peut être facilement adapté pour
+       empêcher le traçage de répertoires particuliers, ou de requêtes
+        en provenance de certains hôtes.</p>
+         <div class="example"><p><code>
+          SetEnvIf Request_URI \.gif image-request<br />
+           SetEnvIf Request_URI \.jpg image-request<br />
+           SetEnvIf Request_URI \.png image-request<br />
+           CustomLog logs/access_log common env=!image-request
+        </code></p></div>
+
+    
+    <h3><a name="image-theft" id="image-theft">Prévention du "Vol d'image"</a></h3>
+        
+
+        <p>Cet exemple montre comment empêcher les utilisateurs ne faisant pas
+       partie de votre serveur d'utiliser des images de votre serveur comme
+       images en ligne dans leurs pages. Cette configuration n'est pas
+       recommandée, mais elle peut fonctionner dans des circonstances bien
+       définies. Nous supposons que toutes vos images sont enregistrées dans
+       un répertoire nommé <code>/web/images</code>.</p>
+    <div class="example"><p><code>
+          SetEnvIf Referer "^http://www\.example\.com/" local_referal
+          # Allow browsers that do not send Referer info
+          SetEnvIf Referer "^$" local_referal
+          &lt;Directory /web/images&gt;
+          <span class="indent">
+            Order Deny,Allow<br />
+            Deny from all<br />
+            Allow from env=local_referal
+          </span>
+          &lt;/Directory&gt;
+        </code></p></div>
+
+        <p>Pour plus d'informations sur cette technique, voir le tutoriel sur
+       ServerWatch
+       "<a href="http://www.serverwatch.com/tutorials/article.php/1132731">Keeping Your Images from Adorning Other Sites</a>".</p>
+    
+  </div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="./en/env.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="./fr/env.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="./ja/env.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="./ko/env.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="./tr/env.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index d5576d23ac8de75839880d957f0d3a850b2331dc..03dc94c8b84eee4a8eaa6e987284d73119487858 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Foire aux questions - Serveur Apache HTTP</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="../"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a></div><div id="page-content"><div id="preamble"><h1>Foire aux questions</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="../en/faq/" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/faq/" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../tr/faq/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div>\r
-\r
-\r
-    <p>Ce document n'est pas une FAQ traditionnelle, mais plutôt un\r
-    guide sommaire vous indiquant ce qu'il faut faire lorsque vous\r
-    rencontrez des problèmes avec le serveur HTTP Apache.</p>\r
-\r
-    <p>La <a href="http://httpd.apache.org/docs/misc/FAQ.html">FAQ Apache 1.3</a>\r
-    constitue un document plus traditionnel, quoique légèrement\r
-    obsolète.</p>\r
-</div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#support.what2do">"Pourquoi ne puis-je pas ... ? Pourquoi ... ne fonctionne\r
-    pas ?" Que faire en cas de problème ?</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#support.support">Qui contacter pour obtenir du support\r
-    ?</a></li>\r
-</ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="support.what2do" id="support.what2do">"Pourquoi ne puis-je pas ... ? Pourquoi ... ne fonctionne\r
-    pas ?" Que faire en cas de problème ?</a></h2>\r
-    \r
-\r
-      <p>Si vous rencontrez des problèmes avec le serveur Apache, vous\r
-      devez effectuer les actions suivantes :</p>\r
-\r
-      <dl>\r
-      <dt>Consultez le journal des erreurs !</dt>\r
-      <dd><p>Apache essaie de vous aider à résoudre les problèmes\r
-      rencontrés. Dans de nombreux cas, il fournira certains détails en\r
-      enregistrant un ou plusieurs messages dans le journal des erreurs\r
-      du serveur. Cela vous suffit parfois pour diagnostiquer et\r
-      résoudre le problème vous-même (en corrigeant les permissions sur\r
-      certains fichiers par exemple). La localisation du\r
-      journal des erreurs de votre serveur est définie dans votre\r
-      fichier de configuration par la directive <code class="directive"><a href="../mod/core.html#errorlog">ErrorLog</a></code>, et sa valeur par défaut est\r
-      <code>/usr/local/apache2/logs/error_log</code>.</p>\r
-\r
-      <p>Si vous avez fini par poster un message dans un des forums de\r
-      support, c'est probablement le premier endroit dans lequel on vous\r
-      demandera de rechercher des informations. S'il vous plait,\r
-      assurez-vous de savoir où trouver votre journal des erreurs. Si\r
-      vous n'en êtes pas sûr, cette <a href="http://wiki.apache.org/httpd/DistrosDefaultLayout">page du\r
-      wiki</a> peut vous orienter dans vos recherches.</p></dd>\r
-\r
-      <dt>Consultez le wiki</dt>\r
-      <dd>Le <a href="http://wiki.apache.org/httpd/">Wiki du serveur\r
-      HTTP Apache</a> vous guidera pour résoudre de nombreux problèmes\r
-      courants.</dd>\r
-\r
-      <dt>Consultez la base de données des bogues d'Apache</dt>\r
-      <dd>La plupart des problèmes signalés au Groupe Apache sont\r
-      enregistrés dans la <a href="http://httpd.apache.org/bug_report.html">base de données des\r
-      bogues</a>. <strong>Ne soumettez pas</strong> de nouveau rapport\r
-      de bogue avant d'avoir consulté les rapports existants (ouverts\r
-      <em>et</em> fermés), et exposé votre problème dans un forum de\r
-      support des utilisateurs (voir ci-dessous). Si votre problème a\r
-      déjà été signalé, merci de <em>ne pas</em> ajouter un commentaire\r
-      du style "Je rencontre le même problème . . .".</dd>\r
-\r
-      <dt><a id="support.what2do.user-support" name="support.what2do.user-support">Exposez votre problème dans un\r
-      forum de support</a></dt>\r
-      <dd><p>Apache possède une communauté active d'utilisateurs prêts à\r
-      partager leurs connaissances. Prendre part à cette communauté est\r
-      en général le moyen le plus rapide et le plus efficace pour\r
-      obtenir des réponses à vos questions ou problèmes.</p>\r
-\r
-      <p><a href="http://httpd.apache.org/userslist.html">Liste de\r
-      diffusion des utilisateurs</a></p>\r
-\r
-      <p>Les utilisateurs peuvent aussi soumettre leurs problèmes à <a href="irc://irc.freenode.net/#apache">#apache</a> sur <a href="http://freenode.net">Freenode IRC</a>.</p>\r
-      </dd>\r
-\r
-      <dt>Merci d'utiliser la base de données des bogues pour les bogues\r
-      !</dt>\r
-      <dd><p>Si vous avez suivi toutes ces étapes sans trouver la\r
-      solution à votre problème, <em>merci</em> de le signaler aux\r
-      développeurs de httpd en <a href="http://httpd.apache.org/bug_report.html">enregistrant un\r
-      rapport de bogue</a>.</p>\r
-\r
-      <p>Si votre problème provoque un crash du serveur et génère un\r
-      vidage mémoire (core dump), merci de <a href="http://httpd.apache.org/dev/debugging.html">joindre ce\r
-      dernier</a> (dans la mesure du possible).</p>\r
-      </dd>\r
-      </dl>\r
-    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="support.support" id="support.support">Qui contacter pour obtenir du support\r
-    ?</a></h2>\r
-      <p>Avec des millions d'utilisateurs et moins de soixante\r
-      développeurs bénévoles, nous ne sommes pas en mesure de proposer\r
-      un support personnalisé pour Apache. Pour un support gratuit, nous\r
-      vous suggérons de participer à un forum utilisateur (voir plus\r
-      haut).</p>\r
-\r
-      <p>De nombreuses sociétés proposent un support Apache\r
-      professionnel et commercial.</p>\r
-    </div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="../en/faq/" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/faq/" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../tr/faq/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Foire aux questions - Serveur Apache HTTP</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="../"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a></div><div id="page-content"><div id="preamble"><h1>Foire aux questions</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="../en/faq/" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/faq/" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../tr/faq/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div>
+
+
+    <p>Ce document n'est pas une FAQ traditionnelle, mais plutôt un
+    guide sommaire vous indiquant ce qu'il faut faire lorsque vous
+    rencontrez des problèmes avec le serveur HTTP Apache.</p>
+
+    <p>La <a href="http://httpd.apache.org/docs/misc/FAQ.html">FAQ Apache 1.3</a>
+    constitue un document plus traditionnel, quoique légèrement
+    obsolète.</p>
+</div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#support.what2do">"Pourquoi ne puis-je pas ... ? Pourquoi ... ne fonctionne
+    pas ?" Que faire en cas de problème ?</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#support.support">Qui contacter pour obtenir du support
+    ?</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="support.what2do" id="support.what2do">"Pourquoi ne puis-je pas ... ? Pourquoi ... ne fonctionne
+    pas ?" Que faire en cas de problème ?</a></h2>
+    
+
+      <p>Si vous rencontrez des problèmes avec le serveur Apache, vous
+      devez effectuer les actions suivantes :</p>
+
+      <dl>
+      <dt>Consultez le journal des erreurs !</dt>
+      <dd><p>Apache essaie de vous aider à résoudre les problèmes
+      rencontrés. Dans de nombreux cas, il fournira certains détails en
+      enregistrant un ou plusieurs messages dans le journal des erreurs
+      du serveur. Cela vous suffit parfois pour diagnostiquer et
+      résoudre le problème vous-même (en corrigeant les permissions sur
+      certains fichiers par exemple). La localisation du
+      journal des erreurs de votre serveur est définie dans votre
+      fichier de configuration par la directive <code class="directive"><a href="../mod/core.html#errorlog">ErrorLog</a></code>, et sa valeur par défaut est
+      <code>/usr/local/apache2/logs/error_log</code>.</p>
+
+      <p>Si vous avez fini par poster un message dans un des forums de
+      support, c'est probablement le premier endroit dans lequel on vous
+      demandera de rechercher des informations. S'il vous plait,
+      assurez-vous de savoir où trouver votre journal des erreurs. Si
+      vous n'en êtes pas sûr, cette <a href="http://wiki.apache.org/httpd/DistrosDefaultLayout">page du
+      wiki</a> peut vous orienter dans vos recherches.</p></dd>
+
+      <dt>Consultez le wiki</dt>
+      <dd>Le <a href="http://wiki.apache.org/httpd/">Wiki du serveur
+      HTTP Apache</a> vous guidera pour résoudre de nombreux problèmes
+      courants.</dd>
+
+      <dt>Consultez la base de données des bogues d'Apache</dt>
+      <dd>La plupart des problèmes signalés au Groupe Apache sont
+      enregistrés dans la <a href="http://httpd.apache.org/bug_report.html">base de données des
+      bogues</a>. <strong>Ne soumettez pas</strong> de nouveau rapport
+      de bogue avant d'avoir consulté les rapports existants (ouverts
+      <em>et</em> fermés), et exposé votre problème dans un forum de
+      support des utilisateurs (voir ci-dessous). Si votre problème a
+      déjà été signalé, merci de <em>ne pas</em> ajouter un commentaire
+      du style "Je rencontre le même problème . . .".</dd>
+
+      <dt><a id="support.what2do.user-support" name="support.what2do.user-support">Exposez votre problème dans un
+      forum de support</a></dt>
+      <dd><p>Apache possède une communauté active d'utilisateurs prêts à
+      partager leurs connaissances. Prendre part à cette communauté est
+      en général le moyen le plus rapide et le plus efficace pour
+      obtenir des réponses à vos questions ou problèmes.</p>
+
+      <p><a href="http://httpd.apache.org/userslist.html">Liste de
+      diffusion des utilisateurs</a></p>
+
+      <p>Les utilisateurs peuvent aussi soumettre leurs problèmes à <a href="irc://irc.freenode.net/#apache">#apache</a> sur <a href="http://freenode.net">Freenode IRC</a>.</p>
+      </dd>
+
+      <dt>Merci d'utiliser la base de données des bogues pour les bogues
+      !</dt>
+      <dd><p>Si vous avez suivi toutes ces étapes sans trouver la
+      solution à votre problème, <em>merci</em> de le signaler aux
+      développeurs de httpd en <a href="http://httpd.apache.org/bug_report.html">enregistrant un
+      rapport de bogue</a>.</p>
+
+      <p>Si votre problème provoque un crash du serveur et génère un
+      vidage mémoire (core dump), merci de <a href="http://httpd.apache.org/dev/debugging.html">joindre ce
+      dernier</a> (dans la mesure du possible).</p>
+      </dd>
+      </dl>
+    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="support.support" id="support.support">Qui contacter pour obtenir du support
+    ?</a></h2>
+      <p>Avec des millions d'utilisateurs et moins de soixante
+      développeurs bénévoles, nous ne sommes pas en mesure de proposer
+      un support personnalisé pour Apache. Pour un support gratuit, nous
+      vous suggérons de participer à un forum utilisateur (voir plus
+      haut).</p>
+
+      <p>De nombreuses sociétés proposent un support Apache
+      professionnel et commercial.</p>
+    </div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="../en/faq/" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/faq/" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../tr/faq/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index c202da97b4a31d2375291545fe7d3eac1159f077..71a060689ef602e940ca76897acdb6956a81d4e3 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Authentification, autorisation et contrôle d'accès - Serveur Apache HTTP</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes / Tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Authentification, autorisation et contrôle d'accès</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/auth.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>\r
-</div>\r
-\r
-    <p>L'authentification est un processus qui vous permet de vérifier\r
-    qu'une personne est bien celle qu'elle prétend être. L'autorisation\r
-    est un processus qui permet à une personne d'aller là où elle veut\r
-    aller, ou d'obtenir les informations qu'elle désire.</p>\r
-</div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Modules et directives concernés</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introduction</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">Les prérequis</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Mise en oeuvre</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Autorisation d'accès à\r
-plusieurs personnes</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Problèmes possibles</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#dbmdbd">Autre méthode de stockage des mots de\r
-passe</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#multprovider">Utilisation de plusieurs fournisseurs\r
-d'authentification</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#beyond">Pour aller plus loin qu'une simple\r
-autorisation</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Pour aller plus loin . . .</a></li>\r
-</ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="related" id="related">Modules et directives concernés</a></h2>\r
-\r
-<p>Trois groupes de modules sont concernés par le processus\r
-d'authentification et d'autorisation. Vous devrez utiliser au moins un\r
-module de chaque groupe.</p>\r
-\r
-<ul>\r
-  <li>Type d'authentification (voir la directive <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code>)\r
-    <ul>\r
-      <li><code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code></li>\r
-    </ul>\r
-  </li>\r
-  <li>Fournisseur d'authentification (voir les directives <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> et <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>)\r
-\r
-    <ul>\r
-      <li><code class="module"><a href="../mod/mod_authn_anon.html">mod_authn_anon</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>\r
-    </ul>\r
-  </li>\r
-  <li>Autorisation (voir la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>)\r
-    <ul>\r
-      <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_authz_dbd.html">mod_authz_dbd</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code></li>\r
-     <li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code></li>\r
-      <li><code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code></li>\r
-    </ul>\r
-  </li>\r
-</ul>\r
-\r
-  <p>On peut aussi ajouter <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> et\r
-  <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>. Ces modules implémentent des\r
-  directives générales qui opèrent au dessus de tous les modules\r
-  d'authentification.</p>\r
-\r
-  <p>Le module <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> est un fournisseur\r
-  d'authentification et d'autorisation. Le module\r
-  <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> fournit une autorisation et un\r
-  contrôle d'accès basés sur le nom du serveur, l'adresse IP ou\r
-  certaines caractéristiques de la requête, mais ne fait pas partie du\r
-  système fournisseur d'authentification. Le module\r
-  <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code> a été créé à des fins de\r
-  compatibilité ascendante avec mod_access.</p>\r
-\r
-  <p>Vous devriez aussi jeter un coup d'oeil au manuel de recettes de <a href="access.html">Contrôle d'accès</a>, qui décrit les différentes\r
-  méthodes de contrôle d'accès à votre serveur.</p>\r
-\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="introduction" id="introduction">Introduction</a></h2>\r
-    <p>Si votre site web contient des informations sensibles ou\r
-    destinées seulement à un groupe de personnes restreint, les\r
-    techniques exposées dans cet article vont vous aider à vous assurer\r
-    que les personnes qui ont accès à ces pages sont bien celles\r
-    auxquelles vous avez donné l'autorisation d'accès.</p>\r
-\r
-    <p>Cet article décrit les méthodes "standards" de protection de\r
-    parties de votre site web que la plupart d'entre vous sont appelés à\r
-    utiliser.</p>\r
-\r
-    <div class="note"><h3>Note :</h3>\r
-    <p>Si vos données ont un réel besoin de sécurisation, prévoyez\r
-    l'utilisation de <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> en plus de toute méthode\r
-    d'authentification.</p>\r
-    </div>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="theprerequisites" id="theprerequisites">Les prérequis</a></h2>\r
-    <p>Les directives décrites dans cet article devront être insérées\r
-    soit au niveau de la configuration de votre serveur principal (en\r
-    général dans une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>), soit au niveau de la\r
-    configuration des répertoires (fichiers <code>.htaccess</code>)</p>\r
-\r
-    <p>Si vous envisagez l'utilisation de fichiers\r
-    <code>.htaccess</code>, la configuration de votre serveur devra\r
-    permettre l'ajout de directives d'authentification dans ces\r
-    fichiers. Pour ce faire, on utilise la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>, qui spécifie quelles\r
-    directives pourront éventuellement contenir les fichiers de\r
-    configuration de niveau répertoire.</p>\r
-\r
-    <p>Comme il est ici question d'authentification, vous aurez besoin\r
-    d'une directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>\r
-    du style :</p>\r
-\r
-    <div class="example"><p><code>\r
-      AllowOverride AuthConfig\r
-    </code></p></div>\r
-\r
-    <p>Si vous avez l'intention d'ajouter les directives directement\r
-    dans le fichier de configuration principal, vous devrez bien entendu\r
-    posséder les droits en écriture sur ce fichier.</p>\r
-\r
-    <p>Vous devrez aussi connaître un tant soit peu la structure des\r
-    répertoires de votre serveur, ne serait-ce que pour savoir où se\r
-    trouvent certains fichiers. Cela ne devrait pas présenter de grandes\r
-    difficultés, et nous essaierons de clarifier tout ça lorsque le besoin\r
-    s'en fera sentir.</p>\r
-\r
-    <p>Enfin, vous devrez vous assurer que les modules\r
-    <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> et <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>\r
-    ont été soit compilés avec le binaire httpd, soit chargés par le\r
-    fichier de configuration httpd.conf. Ces deux modules fournissent\r
-    des directives générales et des fonctionnalités qui sont critiques\r
-    quant à la configuration et l'utilisation de l'authentification et\r
-    de l'autorisation au sein du serveur web.</p>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="gettingitworking" id="gettingitworking">Mise en oeuvre</a></h2>\r
-    <p>Nous décrivons ici les bases de la protection par mot de passe\r
-    d'un répertoire de votre serveur.</p>\r
-\r
-    <p>Vous devez en premier lieu créer un fichier de mots de passe. La\r
-    méthode exacte selon laquelle vous allez créer ce fichier va varier\r
-    en fonction du fournisseur d'authentification choisi. Mais nous\r
-    entrerons dans les détails plus loin, et pour le moment, nous nous\r
-    contenterons d'un fichier de mots de passe en mode texte.</p>\r
-\r
-    <p>Ce fichier doit être enregistré à un endroit non accessible\r
-    depuis le web, de façon à ce que les clients ne puissent pas le\r
-    télécharger. Par exemple, si vos documents sont servis à partir de\r
-    <code>/usr/local/apache/htdocs</code>, vous pouvez enregistrer le\r
-    fichier des mots de passe dans\r
-    <code>/usr/local/apache/passwd</code>.</p>\r
-\r
-    <p>L'utilitaire <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> fourni avec Apache\r
-    permet de créer ce fichier. Vous le trouverez dans le répertoire\r
-    <code>bin</code> de votre installation d'Apache. Si vous avez\r
-    installé Apache à partir d'un paquetage tiers, il sera probablement\r
-    dans le chemin par défaut de vos exécutables.</p>\r
-\r
-    <p>Pour créer le fichier, tapez :</p>\r
-\r
-    <div class="example"><p><code>\r
-      htpasswd -c /usr/local/apache/passwd/passwords rbowen\r
-    </code></p></div>\r
-\r
-    <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> vous demandera d'entrer le mot de\r
-    passe, et de le retaper pour confirmation :</p>\r
-\r
-    <div class="example"><p><code>\r
-      # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />\r
-      New password: mot-de-passe<br />\r
-      Re-type new password: mot-de-passe<br />\r
-      Adding password for user rbowen\r
-    </code></p></div>\r
-\r
-    <p>Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> n'est pas dans le chemin par\r
-    défaut de vos exécutables, vous devrez bien entendu entrer le chemin\r
-    complet du fichier. Dans le cas d'une installation par défaut, il se\r
-    trouve à <code>/usr/local/apache2/bin/htpasswd</code>.</p>\r
-\r
-    <p>Ensuite, vous allez devoir configurer le serveur de façon à ce\r
-    qu'il demande un mot de passe et lui préciser quels utilisateurs ont\r
-    l'autorisation d'accès. Pour ce faire, vous pouvez soit éditer le\r
-    fichier <code>httpd.conf</code>, soit utiliser un fichier\r
-    <code>.htaccess</code>. Par exemple, si vous voulez protéger le\r
-    répertoire <code>/usr/local/apache/htdocs/secret</code>, vous pouvez\r
-    utiliser les directives suivantes, soit dans le fichier\r
-    <code>/usr/local/apache/htdocs/secret/.htaccess</code>, soit dans le\r
-    fichier <code>httpd.conf</code> à l'intérieur d'une section &lt;Directory\r
-    /usr/local/apache/htdocs/secret&gt; :</p>\r
-\r
-    <div class="example"><p><code>\r
-      AuthType Basic<br />\r
-      AuthName "Fichiers réservés"<br />\r
-      # (La ligne suivante est facultative)<br />\r
-      AuthBasicProvider file<br />\r
-      AuthUserFile /usr/local/apache/passwd/passwords<br />\r
-      Require user rbowen\r
-    </code></p></div>\r
-\r
-    <p>Examinons ces directives une à une. La directive <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> définit la méthode\r
-    utilisée pour authentifier l'utilisateur. La méthode la plus\r
-    courante est <code>Basic</code>, et elle est implémentée par\r
-    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>. Il faut cependant garder à l'esprit\r
-    que l'authentification Basic transmet le mot de passe depuis le\r
-    client vers le serveur en clair. Cette méthode ne devra donc pas\r
-    être utilisée pour la transmission de données hautement sensibles si\r
-    elle n'est pas associée au module <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>. Apache\r
-    supporte une autre méthode d'authentification : <code>AuthType\r
-    Digest</code>. Cette méthode est implémentée par le module <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> et est beaucoup plus sécurisée. La plupart\r
-    des navigateurs récents supportent l'authentification Digest.</p>\r
-\r
-    <p>La directive <code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code> définit\r
-    l'<dfn>Identificateur</dfn> (Realm) à utiliser avec\r
-    l'authentification. L'identificateur possède deux fonctions. Tout\r
-    d'abord, le client présente en général cette information à\r
-    l'utilisateur dans le cadre de la boîte de dialogue de mot de passe.\r
-    Ensuite, le client l'utilise pour déterminer quel mot de passe\r
-    envoyer pour une zone authentifiée donnée.</p>\r
-\r
-    <p>Ainsi par exemple, une fois un client authentifié dans la zone\r
-    <code>"Fichiers réservés"</code>, il soumettra à nouveau\r
-    automatiquement le même mot de passe pour toute zone du même serveur\r
-    marquée de l'identificateur <code>"Fichiers réservés"</code>. De\r
-    cette façon, vous pouvez éviter à un utilisateur d'avoir à saisir\r
-    plusieurs fois le même mot de passe en faisant partager le même\r
-    identificateur entre plusieurs zones réservées. Bien entendu et pour\r
-    des raisons de sécurité, le client devra redemander le mot\r
-    de passe chaque fois que le nom d'hôte du serveur sera modifié.</p>\r
-\r
-    <p>La directive <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> est, dans ce\r
-    cas, facultative, car <code>file</code> est la valeur par défaut\r
-    pour cette directive. Par contre, cette directive sera obligatoire\r
-    si vous utilisez une autre source d'authentification comme\r
-    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> ou\r
-    <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.</p>\r
-\r
-    <p>La directive <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code> définit le chemin\r
-    du fichier de mots de passe que nous venons de créer avec\r
-    <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. Si vous possédez un grand nombre\r
-    d'utilisateurs, la durée de la recherche dans un fichier texte pour\r
-    authentifier un utilisateur à chaque requête va augmenter\r
-    rapidement, et pour pallier cet inconvénient, Apache peut aussi\r
-    stocker les données relatives aux\r
-    utilisateurs dans des bases de données rapides. Le module\r
-    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> fournit la directive <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>. Le programme <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> permet de créer et manipuler ces fichiers. Vous\r
-    trouverez de nombreuses options d'autres types d'authentification\r
-    fournies par des modules tiers dans la <a href="http://modules.apache.org/">Base de données des modules\r
-    d'Apache</a>.</p>\r
-\r
-    <p>Enfin, la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> implémente la partie\r
-    autorisation du processus en définissant l'utilisateur autorisé à\r
-    accéder à cette zone du serveur. Dans la section suivante, nous\r
-    décrirons les différentes méthodes d'utilisation de la directive\r
-    <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>.</p>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Autorisation d'accès à\r
-plusieurs personnes</a></h2>\r
-    <p>Les directives ci-dessus n'autorisent qu'une personne (quelqu'un\r
-    possédant le nom d'utilisateur <code>rbowen</code>) à accéder au\r
-    répertoire. Dans la plupart des cas, vous devrez autoriser\r
-    l'accès à plusieurs personnes. C'est ici\r
-    qu'intervient la directive <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code>.</p>\r
-\r
-    <p>Si vous voulez autoriser l'accès à plusieurs personnes, vous\r
-    devez créer un fichier de groupes qui associe des noms de groupes\r
-    avec une liste d'utilisateurs de ce groupe. Le format de ce fichier\r
-    est très simple, et vous pouvez le créer avec votre éditeur favori.\r
-    Son contenu se présente comme suit :</p>\r
-\r
-   <div class="example"><p><code>\r
-     Nom-de-groupe: rbowen dpitts sungo rshersey\r
-   </code></p></div>\r
-\r
-    <p>Il s'agit simplement une liste des membres du groupe sous la\r
-    forme d'une ligne séparée par des espaces.</p>\r
-\r
-    <p>Pour ajouter un utilisateur à votre fichier de mots de passe\r
-    préexistant, entrez :</p>\r
-\r
-    <div class="example"><p><code>\r
-      htpasswd /usr/local/apache/passwd/passwords dpitts\r
-    </code></p></div>\r
-\r
-    <p>Vous obtiendrez le même effet qu'auparavant, mais le mot de passe\r
-    sera ajouté au fichier, plutôt que d'en créer un nouveau (C'est le\r
-    drapeau <code>-c</code> qui permet de créer un nouveau fichier de\r
-    mots de passe)..</p>\r
-\r
-    <p>Maintenant, vous devez modifier votre fichier\r
-    <code>.htaccess</code> comme suit :</p>\r
-\r
-    <div class="example"><p><code>\r
-      AuthType Basic<br />\r
-      AuthName "By Invitation Only"<br />\r
-      # Ligne facultative :<br />\r
-      AuthBasicProvider file<br />\r
-      AuthUserFile /usr/local/apache/passwd/passwords<br />\r
-      AuthGroupFile /usr/local/apache/passwd/groups<br />\r
-      Require group Nom-de-groupe\r
-    </code></p></div>\r
-\r
-    <p>Maintenant, quiconque appartient au groupe\r
-    <code>Nom-de-groupe</code>, et possède une entrée dans le fichier\r
-    <code>password</code> pourra accéder au répertoire s'il tape le bon\r
-    mot de passe.</p>\r
-\r
-    <p>Il existe une autre méthode moins contraignante pour autoriser\r
-    l'accès à plusieurs personnes. Plutôt que de créer un fichier de\r
-    groupes, il vous suffit d'ajouter la directive suivante :</p>\r
-\r
-    <div class="example"><p><code>\r
-      Require valid-user\r
-    </code></p></div>\r
-\r
-    <p>Le remplacement de la ligne <code>Require user rbowen</code> par\r
-    la ligne <code>Require valid-user</code> autorisera l'accès à\r
-    quiconque possédant une entrée dans le fichier password, et ayant\r
-    tapé le bon mot de passe. Vous pouvez même simuler le comportement\r
-    des groupes en associant un fichier de mots de passe différent pour\r
-    chaque groupe. L'avantage de cette approche réside dans le fait\r
-    qu'Apache ne doit consulter qu'un fichier au lieu de deux. Par\r
-    contre, vous devez maintenir un nombre plus ou moins important de\r
-    fichiers de mots de passe, et vous assurer de faire référence au bon\r
-    fichier dans la directive <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>.</p>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="possibleproblems" id="possibleproblems">Problèmes possibles</a></h2>\r
-    <p>L'authentification Basic est spécifiée d'une telle manière que\r
-    vos nom d'utilisateur et mot de passe doivent être vérifiés chaque\r
-    fois que vous demandez un document au serveur, et ceci même si vous\r
-    rechargez la même page, et pour chaque image contenue dans la page\r
-    (si elles sont situées dans un répertoire protégé). Comme vous\r
-    pouvez l'imaginer, ceci ralentit un peu le fonctionnement. La mesure\r
-    dans laquelle le fonctionnement est ralenti est proportionnelle à la\r
-    taille du fichier des mots de passe, car ce dernier doit être ouvert\r
-    et la liste des utilisateurs parcourue jusqu'à ce que votre nom soit\r
-    trouvé, et ceci chaque fois qu'une page est chargée.</p>\r
-\r
-    <p>En conséquence, ce ralentissement impose une limite pratique au\r
-    nombre d'utilisateurs que vous pouvez enregistrer dans un fichier de\r
-    mots de passe. Cette limite va varier en fonction des performances\r
-    de votre serveur, mais vous commencerez à remarquer un\r
-    ralentissement lorsque vous atteindrez quelques centaines\r
-    d'utilisateurs, et serez alors appelés à utiliser une méthode\r
-    d'authentification différente.</p>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="dbmdbd" id="dbmdbd">Autre méthode de stockage des mots de\r
-passe</a></h2>\r
-\r
-    <p>Suite au problème évoqué précédemment et induit par le stockage\r
-    des mots de passe dans un fichier texte, vous pouvez être appelé à\r
-    stocker vos mots de passe d'une autre manière, par exemple dans une\r
-    base de données.</p>\r
-\r
-    <p>Pour y parvenir, on peut utiliser les modules\r
-    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> ou <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.\r
-    Vous pouvez choisir comme format de stockage <code>dbm</code> ou\r
-    <code>dbd</code> à la place de <code>file</code> pour la directive\r
-    <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>.</p>\r
-\r
-    <p>Par exemple, pour sélectionner un fichier dbm à la place d'un\r
-    fichier texte :</p>\r
-\r
-    <div class="example"><p><code>\r
-    &lt;Directory /www/docs/private&gt;<br />\r
-    AuthName "Private"<br />\r
-    AuthType Basic<br />\r
-    AuthBasicProvider dbm<br />\r
-    AuthDBMUserFile /www/passwords/passwd.dbm<br />\r
-    Require valid-user<br />\r
-    &lt;/Directory&gt;\r
-    </code></p></div>\r
-\r
-    <p>D'autres options sont disponibles. Consultez la documentation de\r
-    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> pour plus de détails.</p>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="multprovider" id="multprovider">Utilisation de plusieurs fournisseurs\r
-d'authentification</a></h2>\r
-\r
-    <p>Depuis l'arrivée des nouvelles architecture d'autorisation et\r
-    d'authentification basées sur les fournisseurs, vous n'êtes plus\r
-    limité à une méthode d'authentification et d'autorisation\r
-    unique. En fait, on peut panacher autant de fournisseurs que l'on\r
-    veut, ce qui vous permet d'élaborer l'architecture qui correspond\r
-    exactement à vos besoins. Dans l'exemple suivant, on utilise\r
-    conjointement les fournisseurs d'authentification\r
-    file et LDAP :</p>\r
-\r
-    <div class="example"><p><code>\r
-    &lt;Directory /www/docs/private&gt;<br />\r
-    AuthName "Private"<br />\r
-    AuthType Basic<br />\r
-    AuthBasicProvider file ldap<br />\r
-    AuthUserFile /usr/local/apache/passwd/passwords<br />\r
-    AuthLDAPURL ldap://ldaphost/o=yourorg<br />\r
-    Require valid-user<br />\r
-    &lt;/Directory&gt;\r
-    </code></p></div>\r
-\r
-    <p>Dans cet exemple, le fournisseur file va tenter d'authentifier\r
-    l'utilisateur en premier. S'il n'y parvient pas, le fournisseur LDAP\r
-    sera sollicité. Ceci permet l'élargissement des possibilités\r
-    d'authentification si votre organisation implémente plusieurs types\r
-    de bases d'authentification. D'autres scénarios d'authentification\r
-    et d'autorisation peuvent associer un type d'authentification avec\r
-    un autre type d'autorisation. Par exemple, une authentification\r
-    basée sur un fichier de mots de passe peut permettre l'attribution\r
-    d'autorisations basée sur un annuaire LDAP.</p>\r
-\r
-    <p>Tout comme plusieurs fournisseurs d'authentification peuvent être\r
-    implémentés, on peut aussi utiliser plusieurs méthodes\r
-    d'autorisation. Dans l'exemple suivant, on utilise à la fois une\r
-    autorisation à base de fichier de groupes et une autorisation à base\r
-    de groupes LDAP.</p>\r
-\r
-    <div class="example"><p><code>\r
-    &lt;Directory /www/docs/private&gt;<br />\r
-    AuthName "Private"<br />\r
-    AuthType Basic<br />\r
-    AuthBasicProvider file<br />\r
-    AuthUserFile /usr/local/apache/passwd/passwords<br />\r
-    AuthLDAPURL ldap://ldaphost/o=yourorg\r
-    AuthGroupFile /usr/local/apache/passwd/groups<br />\r
-    Require group GroupName<br />\r
-    Require ldap-group cn=mygroup,o=yourorg<br />\r
-    &lt;/Directory&gt;\r
-    </code></p></div>\r
-\r
-    <p>Pour un scénario d'autorisation un peu plus avancé, des\r
-    directives de conteneur d'autorisation comme <code class="directive"><a href="../mod/mod_authz_core.html#requireall">&lt;RequireAll&gt;</a></code> et\r
-    <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code> permettent d'appliquer une\r
-    logique telle que l'ordre dans lequel les autorisations sont\r
-    appliquées peut être entièrement contrôlé au niveau de la\r
-    configuration. Voir <a href="../mod/mod_authz_core.html#logic">Conteneurs\r
-    d'autorisations</a> pour un exemple de ce contrôle.</p>\r
-\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="beyond" id="beyond">Pour aller plus loin qu'une simple\r
-autorisation</a></h2>\r
-\r
-    <p>La manière dont les autorisations sont accordées est désormais\r
-    beaucoup plus souple qu'une simple vérification auprès d'une seule\r
-    base de données. Il est maintenant possible de choisir l'ordre, la\r
-    logique et la manière selon lesquels une autorisation est\r
-    accordée.</p>\r
-\r
-    <h3><a name="authandororder" id="authandororder">Appliquer logique et\r
-    ordonnancement</a></h3>\r
-        <p>Le contrôle de la manière et de l'ordre selon lesquels le\r
-       processus d'autorisation était appliqué\r
-       constituait une sorte de mystère par\r
-       le passé. Dans Apache 2.2, un mécanisme d'authentification basé\r
-       sur les fournisseurs a été développé afin de séparer le\r
-       véritable processus d'authentification de l'autorisation et ses\r
-       différentes fonctionnalités. Un des avantages colatéraux\r
-       résidait dans le fait que les fournisseurs d'authentification\r
-       pouvaient être configurés et appelés selon un ordre particulier\r
-       indépendant de l'ordre de chargement du module auth proprement\r
-       dit. Ce mécanisme basé sur les fournisseurs a été étendu au\r
-       processus d'autorisation. Ceci signifie que la directive\r
-       <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> définit\r
-       non seulement quelles méthodes d'autorisation doivent être\r
-       utilisées, mais aussi l'ordre dans lequel elles sont appelées.\r
-       Les méthodes d'autorisation sont appelées selon l'ordre dans\r
-       lequel les directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> apparaissent dans la\r
-       configuration.</p>\r
-\r
-        <p>Avec l'introduction des directives de conteneur\r
-       d'autorisations <code class="directive"><a href="../mod/mod_authz_core.html#requireall">&lt;RequireAll&gt;</a></code>\r
-       et <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code>, la\r
-       configuration contrôle aussi le moment où les méthodes\r
-       d'autorisation sont appelées, et quels critères déterminent\r
-       l'autorisation d'accès. Voir <a href="../mod/mod_authz_core.html#logic">Conteneurs\r
-       d'autorisations</a> pour un exemple de la manière de les\r
-       utiliser pour exprimer des logiques d'autorisation\r
-       complexes.</p>\r
-\r
-        <p>Par défaut, toutes les directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> sont\r
-       traitées comme si elles étaient contenues dans une directive\r
-       <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code>. En d'autres termes, il\r
-       suffit\r
-       qu'une méthode d'autorisation s'applique avec succès pour que\r
-       l'autorisation soit accordée.</p>\r
-\r
-    \r
-\r
-    <h3><a name="reqaccessctrl" id="reqaccessctrl">Utilisation de fournisseurs\r
-    d'autorisation pour le contrôle d'accès</a></h3>\r
-        <p>La vérification du nom d'utilisateur et du mot de passe ne\r
-       constituent qu'un aspect des méthodes d'authentification.\r
-       Souvent, le contrôle d'accès à certaines personnes n'est pas\r
-       basé sur leur identité ; il peut dépendre, par exemple de leur\r
-       provenance.</p>\r
-\r
-        <p>Les fournisseurs d'autorisation <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        all">\r
-        all</a></code>, <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        env">\r
-        env</a></code>, <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        host">\r
-        host</a></code> et <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        ip">\r
-        ip</a></code> vous permettent d'accorder ou refuser l'accès en\r
-       fonction de critères tels que le nom d'hôte ou l'adresse\r
-       IP de la machine qui effectue la requête.</p>\r
-\r
-        <p>L'utilisation de ces fournisseurs est spécifiée à l'aide de\r
-       la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>. Cette directive\r
-       permet d'enregistrer quels fournisseurs d'autorisation\r
-       seront appelés dans le processus d'autorisation au cours du\r
-       traitement de la requête. Par exemple :</p>\r
-\r
-        <div class="example"><p><code>\r
-          Require ip <var>adresse</var>\r
-        </code></p></div>\r
-\r
-        <p>où <var>adresse</var> est une adresse IP (ou une adresse IP\r
-       partielle) ou :</p>\r
-\r
-        <div class="example"><p><code>\r
-          Require host <var>nom_domaine</var>\r
-        </code></p></div>\r
-\r
-        <p>où <var>nom_domaine</var> est un nom de domaine entièrement\r
-       qualifé (ou un nom de domaine partiel) ; vous pouvez indiquer\r
-       plusieurs adresses ou noms de domaines, si vous le désirez.</p>\r
-\r
-        <p>Par exemple, si vous voulez rejeter les spams dont une\r
-       machine vous inonde, vous pouvez utiliser ceci :</p>\r
-\r
-        <div class="example"><p><code>\r
-          &lt;RequireAll&gt;\r
-          <span class="indent">\r
-            Require all granted<br />\r
-            Require not ip 10.252.46.165\r
-          </span>\r
-          &lt;/RequireAll&gt;\r
-        </code></p></div>\r
-\r
-        <p>Ainsi, les visiteurs en provenance de cette adresse ne\r
-       pourront pas voir le contenu concerné par cette directive. Si,\r
-       par contre, vous connaissez le nom de la machine, vous pouvez\r
-       utiliser ceci :</p>\r
-\r
-        <div class="example"><p><code>\r
-           &lt;RequireAll&gt;\r
-          <span class="indent">\r
-            Require all granted<br />\r
-            Require not host <var>serveur.exemple.com</var>\r
-          </span>\r
-          &lt;/RequireAll&gt;\r
-        </code></p></div>\r
-\r
-        <p>Et si vous voulez interdire l'accès à toutes les machines\r
-       d'un domaine, vous pouvez spécifier une partie seulement de\r
-       l'adresse ou du nom de domaine :</p>\r
-\r
-        <div class="example"><p><code>\r
-         &lt;RequireAll&gt;\r
-          <span class="indent">\r
-             Require all granted<br />\r
-            &lt;RequireNone&gt;\r
-            <span class="indent">\r
-              Require ip 192.168.205<br />\r
-              Require host phishers.exemple.com autres-idiots.exemple<br />\r
-              Require host ke\r
-            </span>\r
-            &lt;/RequireNone&gt;\r
-          </span>\r
-          &lt;/RequireAll&gt;\r
-        </code></p></div>\r
-\r
-        <p>Dans l'exemple ci-dessus, on utilise la directive du\r
-       conteneur <code class="directive"><a href="../mod/mod_authz_core.html#requirenone">&lt;RequireNone&gt;</a></code> afin de s'assurer\r
-       qu'aucune des directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> qu'il contient ne\r
-       fasse correspondre ses paramètres avant d'accorder\r
-       l'autorisation.</p>\r
-\r
-    \r
-\r
-    <h3><a name="filesystem" id="filesystem">Compatibilité ascendante du contrôle\r
-    d'accès</a></h3>\r
-        <p>L'adoption d'un mécanisme à base de fournisseurs pour\r
-       l'authentification, a pour effet colatéral de rendre inutiles\r
-       les directives <code class="directive"><a href="../mod/mod_access_compat.html#order">Order</a></code>, <code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code>, <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> et <code class="directive"><a href="../mod/mod_access_compat.html#satisfy">Satisfy</a></code>. Cependant, et à\r
-       des fins de compatibilité ascendante vers les anciennes\r
-       configurations, ces directives ont été déplacées vers le module\r
-       <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.</p>\r
-\r
-    \r
-\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="moreinformation" id="moreinformation">Pour aller plus loin . . .</a></h2>\r
-    <p>Vous pouvez aussi lire la documentation de\r
-    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> et <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>\r
-    qui contient des informations supplémentaires à propos du\r
-    fonctionnement de tout ceci.\r
-    Certaines configurations d'authentification peuvent aussi être\r
-    simplifiées à l'aide de la directive <code class="directive"><a href="../mod/mod_authn_core.html#&lt;authnprovideralias&gt;">&lt;AuthnProviderAlias&gt;</a></code>.</p>\r
-\r
-    <p>Les différents algorithmes de chiffrement supportés par Apache\r
-    pour authentifier les données sont expliqués dans <a href="../misc/password_encryptions.html">PasswordEncryptions</a>.</p>\r
-\r
-    <p>Enfin vous pouvez consulter la recette <a href="access.html">Contrôle\r
-    d'accès</a>, qui décrit un certain nombre de situations en relation\r
-    avec le sujet.</p>\r
-\r
-</div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/auth.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Authentification, autorisation et contrôle d'accès - Serveur Apache HTTP</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes / Tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Authentification, autorisation et contrôle d'accès</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/auth.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
+</div>
+
+    <p>L'authentification est un processus qui vous permet de vérifier
+    qu'une personne est bien celle qu'elle prétend être. L'autorisation
+    est un processus qui permet à une personne d'aller là où elle veut
+    aller, ou d'obtenir les informations qu'elle désire.</p>
+</div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Modules et directives concernés</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introduction</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">Les prérequis</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Mise en oeuvre</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Autorisation d'accès à
+plusieurs personnes</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Problèmes possibles</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#dbmdbd">Autre méthode de stockage des mots de
+passe</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#multprovider">Utilisation de plusieurs fournisseurs
+d'authentification</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#beyond">Pour aller plus loin qu'une simple
+autorisation</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Pour aller plus loin . . .</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">Modules et directives concernés</a></h2>
+
+<p>Trois groupes de modules sont concernés par le processus
+d'authentification et d'autorisation. Vous devrez utiliser au moins un
+module de chaque groupe.</p>
+
+<ul>
+  <li>Type d'authentification (voir la directive <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code>)
+    <ul>
+      <li><code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code></li>
+      <li><code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code></li>
+    </ul>
+  </li>
+  <li>Fournisseur d'authentification (voir les directives <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> et <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>)
+
+    <ul>
+      <li><code class="module"><a href="../mod/mod_authn_anon.html">mod_authn_anon</a></code></li>
+      <li><code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code></li>
+      <li><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code></li>
+      <li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li>
+      <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
+    </ul>
+  </li>
+  <li>Autorisation (voir la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>)
+    <ul>
+      <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
+      <li><code class="module"><a href="../mod/mod_authz_dbd.html">mod_authz_dbd</a></code></li>
+      <li><code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code></li>
+     <li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li>
+      <li><code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code></li>
+      <li><code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code></li>
+      <li><code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code></li>
+    </ul>
+  </li>
+</ul>
+
+  <p>On peut aussi ajouter <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> et
+  <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>. Ces modules implémentent des
+  directives générales qui opèrent au dessus de tous les modules
+  d'authentification.</p>
+
+  <p>Le module <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> est un fournisseur
+  d'authentification et d'autorisation. Le module
+  <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> fournit une autorisation et un
+  contrôle d'accès basés sur le nom du serveur, l'adresse IP ou
+  certaines caractéristiques de la requête, mais ne fait pas partie du
+  système fournisseur d'authentification. Le module
+  <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code> a été créé à des fins de
+  compatibilité ascendante avec mod_access.</p>
+
+  <p>Vous devriez aussi jeter un coup d'oeil au manuel de recettes de <a href="access.html">Contrôle d'accès</a>, qui décrit les différentes
+  méthodes de contrôle d'accès à votre serveur.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="introduction" id="introduction">Introduction</a></h2>
+    <p>Si votre site web contient des informations sensibles ou
+    destinées seulement à un groupe de personnes restreint, les
+    techniques exposées dans cet article vont vous aider à vous assurer
+    que les personnes qui ont accès à ces pages sont bien celles
+    auxquelles vous avez donné l'autorisation d'accès.</p>
+
+    <p>Cet article décrit les méthodes "standards" de protection de
+    parties de votre site web que la plupart d'entre vous sont appelés à
+    utiliser.</p>
+
+    <div class="note"><h3>Note :</h3>
+    <p>Si vos données ont un réel besoin de sécurisation, prévoyez
+    l'utilisation de <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> en plus de toute méthode
+    d'authentification.</p>
+    </div>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="theprerequisites" id="theprerequisites">Les prérequis</a></h2>
+    <p>Les directives décrites dans cet article devront être insérées
+    soit au niveau de la configuration de votre serveur principal (en
+    général dans une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>), soit au niveau de la
+    configuration des répertoires (fichiers <code>.htaccess</code>)</p>
+
+    <p>Si vous envisagez l'utilisation de fichiers
+    <code>.htaccess</code>, la configuration de votre serveur devra
+    permettre l'ajout de directives d'authentification dans ces
+    fichiers. Pour ce faire, on utilise la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>, qui spécifie quelles
+    directives pourront éventuellement contenir les fichiers de
+    configuration de niveau répertoire.</p>
+
+    <p>Comme il est ici question d'authentification, vous aurez besoin
+    d'une directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
+    du style :</p>
+
+    <div class="example"><p><code>
+      AllowOverride AuthConfig
+    </code></p></div>
+
+    <p>Si vous avez l'intention d'ajouter les directives directement
+    dans le fichier de configuration principal, vous devrez bien entendu
+    posséder les droits en écriture sur ce fichier.</p>
+
+    <p>Vous devrez aussi connaître un tant soit peu la structure des
+    répertoires de votre serveur, ne serait-ce que pour savoir où se
+    trouvent certains fichiers. Cela ne devrait pas présenter de grandes
+    difficultés, et nous essaierons de clarifier tout ça lorsque le besoin
+    s'en fera sentir.</p>
+
+    <p>Enfin, vous devrez vous assurer que les modules
+    <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> et <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>
+    ont été soit compilés avec le binaire httpd, soit chargés par le
+    fichier de configuration httpd.conf. Ces deux modules fournissent
+    des directives générales et des fonctionnalités qui sont critiques
+    quant à la configuration et l'utilisation de l'authentification et
+    de l'autorisation au sein du serveur web.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="gettingitworking" id="gettingitworking">Mise en oeuvre</a></h2>
+    <p>Nous décrivons ici les bases de la protection par mot de passe
+    d'un répertoire de votre serveur.</p>
+
+    <p>Vous devez en premier lieu créer un fichier de mots de passe. La
+    méthode exacte selon laquelle vous allez créer ce fichier va varier
+    en fonction du fournisseur d'authentification choisi. Mais nous
+    entrerons dans les détails plus loin, et pour le moment, nous nous
+    contenterons d'un fichier de mots de passe en mode texte.</p>
+
+    <p>Ce fichier doit être enregistré à un endroit non accessible
+    depuis le web, de façon à ce que les clients ne puissent pas le
+    télécharger. Par exemple, si vos documents sont servis à partir de
+    <code>/usr/local/apache/htdocs</code>, vous pouvez enregistrer le
+    fichier des mots de passe dans
+    <code>/usr/local/apache/passwd</code>.</p>
+
+    <p>L'utilitaire <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> fourni avec Apache
+    permet de créer ce fichier. Vous le trouverez dans le répertoire
+    <code>bin</code> de votre installation d'Apache. Si vous avez
+    installé Apache à partir d'un paquetage tiers, il sera probablement
+    dans le chemin par défaut de vos exécutables.</p>
+
+    <p>Pour créer le fichier, tapez :</p>
+
+    <div class="example"><p><code>
+      htpasswd -c /usr/local/apache/passwd/passwords rbowen
+    </code></p></div>
+
+    <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> vous demandera d'entrer le mot de
+    passe, et de le retaper pour confirmation :</p>
+
+    <div class="example"><p><code>
+      # htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
+      New password: mot-de-passe<br />
+      Re-type new password: mot-de-passe<br />
+      Adding password for user rbowen
+    </code></p></div>
+
+    <p>Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> n'est pas dans le chemin par
+    défaut de vos exécutables, vous devrez bien entendu entrer le chemin
+    complet du fichier. Dans le cas d'une installation par défaut, il se
+    trouve à <code>/usr/local/apache2/bin/htpasswd</code>.</p>
+
+    <p>Ensuite, vous allez devoir configurer le serveur de façon à ce
+    qu'il demande un mot de passe et lui préciser quels utilisateurs ont
+    l'autorisation d'accès. Pour ce faire, vous pouvez soit éditer le
+    fichier <code>httpd.conf</code>, soit utiliser un fichier
+    <code>.htaccess</code>. Par exemple, si vous voulez protéger le
+    répertoire <code>/usr/local/apache/htdocs/secret</code>, vous pouvez
+    utiliser les directives suivantes, soit dans le fichier
+    <code>/usr/local/apache/htdocs/secret/.htaccess</code>, soit dans le
+    fichier <code>httpd.conf</code> à l'intérieur d'une section &lt;Directory
+    /usr/local/apache/htdocs/secret&gt; :</p>
+
+    <div class="example"><p><code>
+      AuthType Basic<br />
+      AuthName "Fichiers réservés"<br />
+      # (La ligne suivante est facultative)<br />
+      AuthBasicProvider file<br />
+      AuthUserFile /usr/local/apache/passwd/passwords<br />
+      Require user rbowen
+    </code></p></div>
+
+    <p>Examinons ces directives une à une. La directive <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> définit la méthode
+    utilisée pour authentifier l'utilisateur. La méthode la plus
+    courante est <code>Basic</code>, et elle est implémentée par
+    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>. Il faut cependant garder à l'esprit
+    que l'authentification Basic transmet le mot de passe depuis le
+    client vers le serveur en clair. Cette méthode ne devra donc pas
+    être utilisée pour la transmission de données hautement sensibles si
+    elle n'est pas associée au module <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>. Apache
+    supporte une autre méthode d'authentification : <code>AuthType
+    Digest</code>. Cette méthode est implémentée par le module <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> et est beaucoup plus sécurisée. La plupart
+    des navigateurs récents supportent l'authentification Digest.</p>
+
+    <p>La directive <code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code> définit
+    l'<dfn>Identificateur</dfn> (Realm) à utiliser avec
+    l'authentification. L'identificateur possède deux fonctions. Tout
+    d'abord, le client présente en général cette information à
+    l'utilisateur dans le cadre de la boîte de dialogue de mot de passe.
+    Ensuite, le client l'utilise pour déterminer quel mot de passe
+    envoyer pour une zone authentifiée donnée.</p>
+
+    <p>Ainsi par exemple, une fois un client authentifié dans la zone
+    <code>"Fichiers réservés"</code>, il soumettra à nouveau
+    automatiquement le même mot de passe pour toute zone du même serveur
+    marquée de l'identificateur <code>"Fichiers réservés"</code>. De
+    cette façon, vous pouvez éviter à un utilisateur d'avoir à saisir
+    plusieurs fois le même mot de passe en faisant partager le même
+    identificateur entre plusieurs zones réservées. Bien entendu et pour
+    des raisons de sécurité, le client devra redemander le mot
+    de passe chaque fois que le nom d'hôte du serveur sera modifié.</p>
+
+    <p>La directive <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> est, dans ce
+    cas, facultative, car <code>file</code> est la valeur par défaut
+    pour cette directive. Par contre, cette directive sera obligatoire
+    si vous utilisez une autre source d'authentification comme
+    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> ou
+    <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.</p>
+
+    <p>La directive <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code> définit le chemin
+    du fichier de mots de passe que nous venons de créer avec
+    <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. Si vous possédez un grand nombre
+    d'utilisateurs, la durée de la recherche dans un fichier texte pour
+    authentifier un utilisateur à chaque requête va augmenter
+    rapidement, et pour pallier cet inconvénient, Apache peut aussi
+    stocker les données relatives aux
+    utilisateurs dans des bases de données rapides. Le module
+    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> fournit la directive <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>. Le programme <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> permet de créer et manipuler ces fichiers. Vous
+    trouverez de nombreuses options d'autres types d'authentification
+    fournies par des modules tiers dans la <a href="http://modules.apache.org/">Base de données des modules
+    d'Apache</a>.</p>
+
+    <p>Enfin, la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> implémente la partie
+    autorisation du processus en définissant l'utilisateur autorisé à
+    accéder à cette zone du serveur. Dans la section suivante, nous
+    décrirons les différentes méthodes d'utilisation de la directive
+    <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Autorisation d'accès à
+plusieurs personnes</a></h2>
+    <p>Les directives ci-dessus n'autorisent qu'une personne (quelqu'un
+    possédant le nom d'utilisateur <code>rbowen</code>) à accéder au
+    répertoire. Dans la plupart des cas, vous devrez autoriser
+    l'accès à plusieurs personnes. C'est ici
+    qu'intervient la directive <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code>.</p>
+
+    <p>Si vous voulez autoriser l'accès à plusieurs personnes, vous
+    devez créer un fichier de groupes qui associe des noms de groupes
+    avec une liste d'utilisateurs de ce groupe. Le format de ce fichier
+    est très simple, et vous pouvez le créer avec votre éditeur favori.
+    Son contenu se présente comme suit :</p>
+
+   <div class="example"><p><code>
+     Nom-de-groupe: rbowen dpitts sungo rshersey
+   </code></p></div>
+
+    <p>Il s'agit simplement une liste des membres du groupe sous la
+    forme d'une ligne séparée par des espaces.</p>
+
+    <p>Pour ajouter un utilisateur à votre fichier de mots de passe
+    préexistant, entrez :</p>
+
+    <div class="example"><p><code>
+      htpasswd /usr/local/apache/passwd/passwords dpitts
+    </code></p></div>
+
+    <p>Vous obtiendrez le même effet qu'auparavant, mais le mot de passe
+    sera ajouté au fichier, plutôt que d'en créer un nouveau (C'est le
+    drapeau <code>-c</code> qui permet de créer un nouveau fichier de
+    mots de passe)..</p>
+
+    <p>Maintenant, vous devez modifier votre fichier
+    <code>.htaccess</code> comme suit :</p>
+
+    <div class="example"><p><code>
+      AuthType Basic<br />
+      AuthName "By Invitation Only"<br />
+      # Ligne facultative :<br />
+      AuthBasicProvider file<br />
+      AuthUserFile /usr/local/apache/passwd/passwords<br />
+      AuthGroupFile /usr/local/apache/passwd/groups<br />
+      Require group Nom-de-groupe
+    </code></p></div>
+
+    <p>Maintenant, quiconque appartient au groupe
+    <code>Nom-de-groupe</code>, et possède une entrée dans le fichier
+    <code>password</code> pourra accéder au répertoire s'il tape le bon
+    mot de passe.</p>
+
+    <p>Il existe une autre méthode moins contraignante pour autoriser
+    l'accès à plusieurs personnes. Plutôt que de créer un fichier de
+    groupes, il vous suffit d'ajouter la directive suivante :</p>
+
+    <div class="example"><p><code>
+      Require valid-user
+    </code></p></div>
+
+    <p>Le remplacement de la ligne <code>Require user rbowen</code> par
+    la ligne <code>Require valid-user</code> autorisera l'accès à
+    quiconque possédant une entrée dans le fichier password, et ayant
+    tapé le bon mot de passe. Vous pouvez même simuler le comportement
+    des groupes en associant un fichier de mots de passe différent pour
+    chaque groupe. L'avantage de cette approche réside dans le fait
+    qu'Apache ne doit consulter qu'un fichier au lieu de deux. Par
+    contre, vous devez maintenir un nombre plus ou moins important de
+    fichiers de mots de passe, et vous assurer de faire référence au bon
+    fichier dans la directive <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="possibleproblems" id="possibleproblems">Problèmes possibles</a></h2>
+    <p>L'authentification Basic est spécifiée d'une telle manière que
+    vos nom d'utilisateur et mot de passe doivent être vérifiés chaque
+    fois que vous demandez un document au serveur, et ceci même si vous
+    rechargez la même page, et pour chaque image contenue dans la page
+    (si elles sont situées dans un répertoire protégé). Comme vous
+    pouvez l'imaginer, ceci ralentit un peu le fonctionnement. La mesure
+    dans laquelle le fonctionnement est ralenti est proportionnelle à la
+    taille du fichier des mots de passe, car ce dernier doit être ouvert
+    et la liste des utilisateurs parcourue jusqu'à ce que votre nom soit
+    trouvé, et ceci chaque fois qu'une page est chargée.</p>
+
+    <p>En conséquence, ce ralentissement impose une limite pratique au
+    nombre d'utilisateurs que vous pouvez enregistrer dans un fichier de
+    mots de passe. Cette limite va varier en fonction des performances
+    de votre serveur, mais vous commencerez à remarquer un
+    ralentissement lorsque vous atteindrez quelques centaines
+    d'utilisateurs, et serez alors appelés à utiliser une méthode
+    d'authentification différente.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="dbmdbd" id="dbmdbd">Autre méthode de stockage des mots de
+passe</a></h2>
+
+    <p>Suite au problème évoqué précédemment et induit par le stockage
+    des mots de passe dans un fichier texte, vous pouvez être appelé à
+    stocker vos mots de passe d'une autre manière, par exemple dans une
+    base de données.</p>
+
+    <p>Pour y parvenir, on peut utiliser les modules
+    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> ou <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.
+    Vous pouvez choisir comme format de stockage <code>dbm</code> ou
+    <code>dbd</code> à la place de <code>file</code> pour la directive
+    <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>.</p>
+
+    <p>Par exemple, pour sélectionner un fichier dbm à la place d'un
+    fichier texte :</p>
+
+    <div class="example"><p><code>
+    &lt;Directory /www/docs/private&gt;<br />
+    AuthName "Private"<br />
+    AuthType Basic<br />
+    AuthBasicProvider dbm<br />
+    AuthDBMUserFile /www/passwords/passwd.dbm<br />
+    Require valid-user<br />
+    &lt;/Directory&gt;
+    </code></p></div>
+
+    <p>D'autres options sont disponibles. Consultez la documentation de
+    <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> pour plus de détails.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="multprovider" id="multprovider">Utilisation de plusieurs fournisseurs
+d'authentification</a></h2>
+
+    <p>Depuis l'arrivée des nouvelles architecture d'autorisation et
+    d'authentification basées sur les fournisseurs, vous n'êtes plus
+    limité à une méthode d'authentification et d'autorisation
+    unique. En fait, on peut panacher autant de fournisseurs que l'on
+    veut, ce qui vous permet d'élaborer l'architecture qui correspond
+    exactement à vos besoins. Dans l'exemple suivant, on utilise
+    conjointement les fournisseurs d'authentification
+    file et LDAP :</p>
+
+    <div class="example"><p><code>
+    &lt;Directory /www/docs/private&gt;<br />
+    AuthName "Private"<br />
+    AuthType Basic<br />
+    AuthBasicProvider file ldap<br />
+    AuthUserFile /usr/local/apache/passwd/passwords<br />
+    AuthLDAPURL ldap://ldaphost/o=yourorg<br />
+    Require valid-user<br />
+    &lt;/Directory&gt;
+    </code></p></div>
+
+    <p>Dans cet exemple, le fournisseur file va tenter d'authentifier
+    l'utilisateur en premier. S'il n'y parvient pas, le fournisseur LDAP
+    sera sollicité. Ceci permet l'élargissement des possibilités
+    d'authentification si votre organisation implémente plusieurs types
+    de bases d'authentification. D'autres scénarios d'authentification
+    et d'autorisation peuvent associer un type d'authentification avec
+    un autre type d'autorisation. Par exemple, une authentification
+    basée sur un fichier de mots de passe peut permettre l'attribution
+    d'autorisations basée sur un annuaire LDAP.</p>
+
+    <p>Tout comme plusieurs fournisseurs d'authentification peuvent être
+    implémentés, on peut aussi utiliser plusieurs méthodes
+    d'autorisation. Dans l'exemple suivant, on utilise à la fois une
+    autorisation à base de fichier de groupes et une autorisation à base
+    de groupes LDAP.</p>
+
+    <div class="example"><p><code>
+    &lt;Directory /www/docs/private&gt;<br />
+    AuthName "Private"<br />
+    AuthType Basic<br />
+    AuthBasicProvider file<br />
+    AuthUserFile /usr/local/apache/passwd/passwords<br />
+    AuthLDAPURL ldap://ldaphost/o=yourorg
+    AuthGroupFile /usr/local/apache/passwd/groups<br />
+    Require group GroupName<br />
+    Require ldap-group cn=mygroup,o=yourorg<br />
+    &lt;/Directory&gt;
+    </code></p></div>
+
+    <p>Pour un scénario d'autorisation un peu plus avancé, des
+    directives de conteneur d'autorisation comme <code class="directive"><a href="../mod/mod_authz_core.html#requireall">&lt;RequireAll&gt;</a></code> et
+    <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code> permettent d'appliquer une
+    logique telle que l'ordre dans lequel les autorisations sont
+    appliquées peut être entièrement contrôlé au niveau de la
+    configuration. Voir <a href="../mod/mod_authz_core.html#logic">Conteneurs
+    d'autorisations</a> pour un exemple de ce contrôle.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="beyond" id="beyond">Pour aller plus loin qu'une simple
+autorisation</a></h2>
+
+    <p>La manière dont les autorisations sont accordées est désormais
+    beaucoup plus souple qu'une simple vérification auprès d'une seule
+    base de données. Il est maintenant possible de choisir l'ordre, la
+    logique et la manière selon lesquels une autorisation est
+    accordée.</p>
+
+    <h3><a name="authandororder" id="authandororder">Appliquer logique et
+    ordonnancement</a></h3>
+        <p>Le contrôle de la manière et de l'ordre selon lesquels le
+       processus d'autorisation était appliqué
+       constituait une sorte de mystère par
+       le passé. Dans Apache 2.2, un mécanisme d'authentification basé
+       sur les fournisseurs a été développé afin de séparer le
+       véritable processus d'authentification de l'autorisation et ses
+       différentes fonctionnalités. Un des avantages colatéraux
+       résidait dans le fait que les fournisseurs d'authentification
+       pouvaient être configurés et appelés selon un ordre particulier
+       indépendant de l'ordre de chargement du module auth proprement
+       dit. Ce mécanisme basé sur les fournisseurs a été étendu au
+       processus d'autorisation. Ceci signifie que la directive
+       <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> définit
+       non seulement quelles méthodes d'autorisation doivent être
+       utilisées, mais aussi l'ordre dans lequel elles sont appelées.
+       Les méthodes d'autorisation sont appelées selon l'ordre dans
+       lequel les directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> apparaissent dans la
+       configuration.</p>
+
+        <p>Avec l'introduction des directives de conteneur
+       d'autorisations <code class="directive"><a href="../mod/mod_authz_core.html#requireall">&lt;RequireAll&gt;</a></code>
+       et <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code>, la
+       configuration contrôle aussi le moment où les méthodes
+       d'autorisation sont appelées, et quels critères déterminent
+       l'autorisation d'accès. Voir <a href="../mod/mod_authz_core.html#logic">Conteneurs
+       d'autorisations</a> pour un exemple de la manière de les
+       utiliser pour exprimer des logiques d'autorisation
+       complexes.</p>
+
+        <p>Par défaut, toutes les directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> sont
+       traitées comme si elles étaient contenues dans une directive
+       <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</a></code>. En d'autres termes, il
+       suffit
+       qu'une méthode d'autorisation s'applique avec succès pour que
+       l'autorisation soit accordée.</p>
+
+    
+
+    <h3><a name="reqaccessctrl" id="reqaccessctrl">Utilisation de fournisseurs
+    d'autorisation pour le contrôle d'accès</a></h3>
+        <p>La vérification du nom d'utilisateur et du mot de passe ne
+       constituent qu'un aspect des méthodes d'authentification.
+       Souvent, le contrôle d'accès à certaines personnes n'est pas
+       basé sur leur identité ; il peut dépendre, par exemple de leur
+       provenance.</p>
+
+        <p>Les fournisseurs d'autorisation <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        all">
+        all</a></code>, <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        env">
+        env</a></code>, <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        host">
+        host</a></code> et <code class="directive"><a href="../mod/mod_authz_host.html#&#10;        ip">
+        ip</a></code> vous permettent d'accorder ou refuser l'accès en
+       fonction de critères tels que le nom d'hôte ou l'adresse
+       IP de la machine qui effectue la requête.</p>
+
+        <p>L'utilisation de ces fournisseurs est spécifiée à l'aide de
+       la directive <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>. Cette directive
+       permet d'enregistrer quels fournisseurs d'autorisation
+       seront appelés dans le processus d'autorisation au cours du
+       traitement de la requête. Par exemple :</p>
+
+        <div class="example"><p><code>
+          Require ip <var>adresse</var>
+        </code></p></div>
+
+        <p>où <var>adresse</var> est une adresse IP (ou une adresse IP
+       partielle) ou :</p>
+
+        <div class="example"><p><code>
+          Require host <var>nom_domaine</var>
+        </code></p></div>
+
+        <p>où <var>nom_domaine</var> est un nom de domaine entièrement
+       qualifé (ou un nom de domaine partiel) ; vous pouvez indiquer
+       plusieurs adresses ou noms de domaines, si vous le désirez.</p>
+
+        <p>Par exemple, si vous voulez rejeter les spams dont une
+       machine vous inonde, vous pouvez utiliser ceci :</p>
+
+        <div class="example"><p><code>
+          &lt;RequireAll&gt;
+          <span class="indent">
+            Require all granted<br />
+            Require not ip 10.252.46.165
+          </span>
+          &lt;/RequireAll&gt;
+        </code></p></div>
+
+        <p>Ainsi, les visiteurs en provenance de cette adresse ne
+       pourront pas voir le contenu concerné par cette directive. Si,
+       par contre, vous connaissez le nom de la machine, vous pouvez
+       utiliser ceci :</p>
+
+        <div class="example"><p><code>
+           &lt;RequireAll&gt;
+          <span class="indent">
+            Require all granted<br />
+            Require not host <var>serveur.exemple.com</var>
+          </span>
+          &lt;/RequireAll&gt;
+        </code></p></div>
+
+        <p>Et si vous voulez interdire l'accès à toutes les machines
+       d'un domaine, vous pouvez spécifier une partie seulement de
+       l'adresse ou du nom de domaine :</p>
+
+        <div class="example"><p><code>
+         &lt;RequireAll&gt;
+          <span class="indent">
+             Require all granted<br />
+            &lt;RequireNone&gt;
+            <span class="indent">
+              Require ip 192.168.205<br />
+              Require host phishers.exemple.com autres-idiots.exemple<br />
+              Require host ke
+            </span>
+            &lt;/RequireNone&gt;
+          </span>
+          &lt;/RequireAll&gt;
+        </code></p></div>
+
+        <p>Dans l'exemple ci-dessus, on utilise la directive du
+       conteneur <code class="directive"><a href="../mod/mod_authz_core.html#requirenone">&lt;RequireNone&gt;</a></code> afin de s'assurer
+       qu'aucune des directives <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> qu'il contient ne
+       fasse correspondre ses paramètres avant d'accorder
+       l'autorisation.</p>
+
+    
+
+    <h3><a name="filesystem" id="filesystem">Compatibilité ascendante du contrôle
+    d'accès</a></h3>
+        <p>L'adoption d'un mécanisme à base de fournisseurs pour
+       l'authentification, a pour effet colatéral de rendre inutiles
+       les directives <code class="directive"><a href="../mod/mod_access_compat.html#order">Order</a></code>, <code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code>, <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> et <code class="directive"><a href="../mod/mod_access_compat.html#satisfy">Satisfy</a></code>. Cependant, et à
+       des fins de compatibilité ascendante vers les anciennes
+       configurations, ces directives ont été déplacées vers le module
+       <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.</p>
+
+    
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="moreinformation" id="moreinformation">Pour aller plus loin . . .</a></h2>
+    <p>Vous pouvez aussi lire la documentation de
+    <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> et <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>
+    qui contient des informations supplémentaires à propos du
+    fonctionnement de tout ceci.
+    Certaines configurations d'authentification peuvent aussi être
+    simplifiées à l'aide de la directive <code class="directive"><a href="../mod/mod_authn_core.html#&lt;authnprovideralias&gt;">&lt;AuthnProviderAlias&gt;</a></code>.</p>
+
+    <p>Les différents algorithmes de chiffrement supportés par Apache
+    pour authentifier les données sont expliqués dans <a href="../misc/password_encryptions.html">PasswordEncryptions</a>.</p>
+
+    <p>Enfin vous pouvez consulter la recette <a href="access.html">Contrôle
+    d'accès</a>, qui décrit un certain nombre de situations en relation
+    avec le sujet.</p>
+
+</div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/auth.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index 84e3a2239a355882ef92f023a2a865587e4e23d9..01816320a9929b559a619802b404482e1dbf9477 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Tutoriel Apache : Contenu dynamique basé sur CGI - Serveur Apache HTTP</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache : Contenu dynamique basé sur CGI</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/cgi.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/cgi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>\r
-</div>\r
-</div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#intro">Introduction</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configurer Apache pour autoriser CGI</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#writing">Ecrire un programme CGI</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Mais ça ne marche toujours pas !</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#behindscenes">Que se passe-t-il en coulisse</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#libraries">Bibliothèques et modules CGI</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#moreinfo">Pour plus d'informations</a></li>\r
-</ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="intro" id="intro">Introduction</a></h2>\r
-    \r
-\r
-    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code></li></ul></td></tr></table>\r
-\r
-    <p>CGI (Common Gateway Interface) définit une méthode d'interaction\r
-    entre un serveur web et des programmes générateurs de contenu\r
-    externes, plus souvent appelés programmes CGI ou scripts CGI. Il\r
-    s'agit de la méthode la plus simple, et la plus\r
-    courante, pour ajouter du contenu dynamique à votre site web. Ce\r
-    document est une introduction à la configuration de CGI sur votre\r
-    serveur web Apache, et une initiation à l'écriture de programmes\r
-    CGI.</p>\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="configuring" id="configuring">Configurer Apache pour autoriser CGI</a></h2>\r
-    \r
-\r
-    <p>Apache doit être configuré pour permettre l'exécution des\r
-    programmes CGI, pour que vos programmes CGI puissent fonctionner\r
-    correctement. Il existe plusieurs méthodes pour y parvenir.</p>\r
-\r
-    <div class="warning">Note: si Apache a été compilé avec le support\r
-    des modules partagés (DSO), vous devez vous assurer que le module CGI est\r
-    chargé ; vous devez pour cela vérifier que la directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> correspondante n'a pas été\r
-    commentée dans votre <code>httpd.conf</code>. Une directive correcte\r
-    doit ressembler à ceci :\r
-\r
-    <div class="example"><p><code>\r
-      LoadModule cgi_module modules/mod_cgi.so\r
-    </code></p></div></div>\r
-\r
-    <h3><a name="scriptalias" id="scriptalias">ScriptAlias</a></h3>\r
-      \r
-\r
-      <p>La directive <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> indique à Apache qu'un\r
-      répertoire particulier est dédié aux programmes CGI. Apache\r
-      considérera que tout fichier situé dans ce répertoire est un\r
-      programme CGI, et tentera de l'exécuter lorsque cette ressource\r
-      fera l'objet d'une requête client.</p>\r
-\r
-      <p>La directive <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> se présente comme suit\r
-      :</p>\r
-\r
-      <div class="example"><p><code>\r
-        ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/\r
-      </code></p></div>\r
-\r
-      <p>Cet exemple est tiré de votre fichier de configuration\r
-      <code>httpd.conf</code> par défaut, si vous avez installé Apache\r
-      dans son répertoire par défaut. La directive <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> est similaire à la\r
-      directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, qui\r
-      définit à quel répertoire particulier doit correspondre un préfixe\r
-      d'URL. <code class="directive">Alias</code> et\r
-      <code class="directive">ScriptAlias</code> sont généralement utilisés pour\r
-      accéder à des répertoires situés en dehors du répertoire défini\r
-      par la directive <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. La différence entre\r
-      <code class="directive">Alias</code> et <code class="directive">ScriptAlias</code>\r
-      réside dans le fait que <code class="directive">ScriptAlias</code> indique\r
-      en plus que tout ce qui se trouve sous le préfixe d'URL doit être\r
-      considéré comme un programme CGI. Ainsi, l'exemple ci-dessus\r
-      indique à Apache que toute requête pour une ressource commençant\r
-      par <code>/cgi-bin/</code> doit être servie depuis le répertoire\r
-      <code>/usr/local/apache2/cgi-bin/</code>, et doit être traitée en\r
-      tant que programme CGI.</p>\r
-\r
-      <p>Par exemple, si une requête pour l'URL\r
-      <code>http://www.example.com/cgi-bin/test.pl</code> est\r
-      effectuée, Apache tentera d'exécuter le fichier\r
-      <code>/usr/local/apache2/cgi-bin/test.pl</code> et en renverra la\r
-      sortie. Bien entendu, le fichier doit exister, être exécutable, et\r
-      retourner sa sortie d'une manière particulière, sinon Apache\r
-      renverra un message d'erreur.</p>\r
-    \r
-\r
-    <h3><a name="nonscriptalias" id="nonscriptalias">CGI en dehors des répertoires ScripAlias</a></h3>\r
-      \r
-\r
-      <p>Pour des raisons de sécurité, la localisation des programmes\r
-      CGI est souvent restreinte aux\r
-      répertoires définis par <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>. De cette manière, les administrateurs\r
-      peuvent contrôler précisément qui est autorisé à utiliser les\r
-      programmes CGI. Cependant, si les précautions adéquates quant à\r
-      la sécurité sont prises, il n'y a aucune raison pour que les\r
-      programmes CGI ne puissent pas être exécutés depuis d'autres\r
-      répertoires. Par exemple, vous pouvez autoriser les utilisateurs à\r
-      enregistrer des contenus web dans leurs répertoires home à l'aide\r
-      de la directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>. S'ils veulent mettre en\r
-      oeuvre leurs propres programmes CGI, mais n'ont pas l'autorisation\r
-      d'accès au répertoire <code>cgi-bin</code> principal, ils devront\r
-      être en mesure d'exécuter ces programmes depuis un autre\r
-      répertoire.</p>\r
-\r
-      <p>L'autorisation d'exécution des programmes CGI dans un\r
-      répertoire arbitraire se fait en deux étapes. En premier lieu, le\r
-      gestionnaire <code>cgi-script</code> doit être activé à l'aide\r
-      d'une directive <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> ou <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code>. En second lieu,\r
-      <code>ExecCGI</code> doit être spécifié dans la directive <code class="directive"><a href="../mod/core.html#options">Options</a></code>.</p>\r
-    \r
-\r
-    <h3><a name="options" id="options">Utilisation d'options explicites pour permettre l'exécution\r
-      des programmes CGI</a></h3>\r
-      \r
-\r
-      <p>Vous pouvez utiliser de manière explicite la directive\r
-      <code class="directive"><a href="../mod/core.html#options">Options</a></code> dans le fichier de\r
-      configuration de votre serveur principal, pour indiquer que\r
-      l'exécution des programmes CGI est permise depuis un répertoire\r
-      particulier :</p>\r
-\r
-      <div class="example"><p><code>\r
-        &lt;Directory /usr/local/apache2/htdocs/un-repertoire&gt;<br />\r
-        <span class="indent">\r
-          Options +ExecCGI<br />\r
-        </span>\r
-        &lt;/Directory&gt;\r
-      </code></p></div>\r
-\r
-      <p>La directive ci-dessus indique à Apache qu'il doit permettre\r
-      l'exécution des fichiers CGI. Vous devez aussi indiquer au serveur\r
-      quels fichiers sont des fichiers CGI. La directive <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> suivante indique au\r
-      serveur qu'il doit traiter tous les fichiers possédant une\r
-      extension <code>cgi</code> ou <code>pl</code> en tant que\r
-      programmes CGI :</p>\r
-\r
-      <div class="example"><p><code>\r
-        AddHandler cgi-script .cgi .pl\r
-      </code></p></div>\r
-    \r
-\r
-    <h3><a name="htaccess" id="htaccess">Fichiers .htaccess</a></h3>\r
-      \r
-\r
-      <p>Le <a href="htaccess.html"><code>tutoriel\r
-      .htaccess</code></a> montre comment activer les programmes\r
-      CGI si vous n'avez pas accès au\r
-      fichier <code>httpd.conf</code>.</p>\r
-    \r
-\r
-    <h3><a name="userdir" id="userdir">Répertoires utilisateurs</a></h3>\r
-      \r
-\r
-      <p>Pour permettre l'exécution en tant que programme CGI de tout\r
-      fichier possédant l'extension <code>.cgi</code> et situé dans un\r
-      répertoire utilisateur, vous pouvez utiliser la configuration\r
-      suivante :</p>\r
-\r
-      <div class="example"><p><code>\r
-      &lt;Directory /home/*/public_html&gt;<br />\r
-      <span class="indent">\r
-        Options +ExecCGI<br />\r
-        AddHandler cgi-script .cgi<br />\r
-      </span>\r
-      &lt;/Directory&gt;\r
-      </code></p></div>\r
-\r
-      <p>Pour indiquer un sous-répertoire <code>cgi-bin</code> d'un\r
-      répertoire utilisateur où tout fichier sera traité en tant que\r
-      programme CGI, vous pouvez utiliser ceci :</p>\r
-\r
-      <div class="example"><p><code>\r
-      &lt;Directory /home/*/public_html/cgi-bin&gt;<br />\r
-      <span class="indent">\r
-        Options ExecCGI<br />\r
-        SetHandler cgi-script<br />\r
-      </span>\r
-      &lt;/Directory&gt;\r
-      </code></p></div>\r
-\r
-    \r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="writing" id="writing">Ecrire un programme CGI</a></h2>\r
-    \r
-\r
-    <p>Il y a deux différences principales entre la programmation\r
-    "standard" et la programmation CGI.</p>\r
-\r
-    <p>En premier lieu, toute sortie de votre programme CGI doit être\r
-    précédée d'un en-tête <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a>. Il s'agit d'un\r
-    en-tête HTTP qui indique au client quel type de contenu il reçoit.\r
-    La plupart du temps, il se présente comme suit :</p>\r
-\r
-    <div class="example"><p><code>\r
-      Content-type: text/html\r
-    </code></p></div>\r
-\r
-    <p>En second lieu, votre sortie doit être en HTML, ou tout autre\r
-    format qu'un navigateur est en mesure d'afficher. La plupart du\r
-    temps, il s'agira de HTML, mais occasionnellement, vous pouvez être\r
-    amené à écrire un programme CGI qui renvoie une image gif, ou un\r
-    autre type de contenu non-HTML.</p>\r
-\r
-    <p>A part ces deux différences, un programme CGI ressemblera à tout\r
-    autre programme que vous pourriez être amené à écrire.</p>\r
-\r
-    <h3><a name="firstcgi" id="firstcgi">Votre premier programme CGI</a></h3>\r
-      \r
-\r
-      <p>L'exemple suivant est un exemple de programme CGI qui permet\r
-      d'afficher une ligne de caractères dans votre navigateur. Ecrivez\r
-      ce qui suit, enregistrez le dans un fichier nommé\r
-      <code>premier.pl</code>, et placez le dans votre répertoire\r
-      <code>cgi-bin</code>.</p>\r
-\r
-      <div class="example"><p><code>\r
-        #!/usr/bin/perl<br />\r
-        print "Content-type: text/html\n\n";<br />\r
-        print "Bonjour tout le monde . . .";\r
-      </code></p></div>\r
-\r
-      <p>Même si Perl ne vous est pas familier, vous devriez être\r
-      capable de comprendre le fonctionnement de ce programme. La\r
-      première ligne indique à Apache (ou à toute interface à partir de\r
-      laquelle le programme s'exécute) que ce programme peut être\r
-      exécuté en fournissant son fichier à l'interpréteur\r
-      <code>/usr/bin/perl</code>. La seconde ligne affiche la\r
-      déclaration du type de contenu considéré, suivie de deux paires\r
-      "Retour chariot - Nouvelle ligne". Ceci a pour effet d'insérer une\r
-      ligne vide après l'en-tête pour marquer la fin des en-têtes HTTP,\r
-      et le début du corps du document. La troisième ligne affiche la\r
-      chaîne de caractères "Bonjour tout le monde . . .". Et c'est tout\r
-      ce dont vous avez besoin.</p>\r
-\r
-      <p>Si vous ouvrez votre navigateur favori et lui indiquez\r
-      l'adresse</p>\r
-\r
-      <div class="example"><p><code>\r
-        http://www.exemple.com/cgi-bin/premier.pl\r
-      </code></p></div>\r
-\r
-      <p>ou toute autre URL correspondant à votre programme CGI, Vous\r
-      verrez la ligne <code>Bonjour tout le monde . . .</code>\r
-      s'afficher dans la fenêtre de votre navigateur. Ce n'est pas\r
-      extraordinaire, mais si vous y êtes parvenu, vous avez de bonnes\r
-      chances d'y parvenir pour tout autre programme plus\r
-      sophistiqué.</p>\r
-    \r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="troubleshoot" id="troubleshoot">Mais ça ne marche toujours pas !</a></h2>\r
-    \r
-\r
-    <p>Vous devriez voir au moins une des quatre sorties suivantes dans\r
-    votre navigateur lorsque vous essayez d'accéder à votre programme\r
-    CGI depuis le web :</p>\r
-\r
-    <dl>\r
-      <dt>Le flux de sortie de votre programme CGI</dt>\r
-      <dd>Impeccable ! Cela signifie que tout fonctionne correctement.\r
-      Si la sortie est correcte mais n'est pas traitée correctement par\r
-      le navigateur, assurez-vous d'avoir défini\r
-      <code>Content-Type</code> de manière appropriée dans votre\r
-      programme CGI.</dd>\r
-\r
-      <dt>Le code source de votre programme CGI ou un message "POST\r
-      Method Not Allowed"</dt>\r
-      <dd>Cela signifie que vous n'avez pas configuré Apache de manière\r
-      à ce qu'il puisse traiter votre programme CGI. Relisez la section\r
-      sur la <a href="#configuring">configuration d'Apache</a>, et\r
-      essayez de trouver votre erreur.</dd>\r
-\r
-      <dt>Un message commençant par "Forbidden"</dt>\r
-      <dd>Ce type de message est révélateur d'un problème de\r
-      droits. Consultez le <a href="#errorlogs">journal des erreurs\r
-      d'Apache</a> et la section ci-dessous sur les <a href="#permissions">droits des fichiers</a>.</dd>\r
-\r
-      <dt>Un message contenant "Internal Server Error"</dt>\r
-      <dd>Si vous consultez le <a href="#errorlogs">journal des erreurs\r
-      d'Apache</a>, vous y trouverez probablement des messages du type\r
-      "Premature end of script headers" (Fin prématurée des en-têtes de\r
-      script), éventuellement accompagnés d'un message d'erreur généré\r
-      par votre programme CGI. Dans ce cas, il va vous falloir lire\r
-      chacune des sections ci-dessous pour déterminer ce qui empêche\r
-      votre programme CGI de générer les en-têtes appropriés.</dd>\r
-    </dl>\r
-\r
-    <h3><a name="permissions" id="permissions">Droits des fichiers</a></h3>\r
-      \r
-\r
-      <p>Souvenez-vous que le serveur ne s'exécute pas sous votre nom.\r
-      En d'autres termes, lorsque le serveur a démarré, il s'exécute\r
-      avec les droits d'un utilisateur non privilégié - en général\r
-      <code>nobody</code>, ou <code>www</code> - et en conséquence, il\r
-      aura besoin de droits supplémentaires pour pouvoir exécuter des\r
-      fichiers dont vous êtes le propriétaire. En général, pour qu'un\r
-      fichier ait des droits suffisants pour être exécutable par\r
-      <code>nobody</code>, il suffit de lui attribuer des droits\r
-      d'exécution pour tout le monde :</p>\r
-\r
-      <div class="example"><p><code>\r
-        chmod a+x premier.pl\r
-      </code></p></div>\r
-\r
-      <p>En outre, si votre programme doit pouvoir accéder en lecture\r
-      et/ou écriture à d'autres fichiers, ces derniers devront avoir les\r
-      droits appropriés.</p>\r
-\r
-    \r
-\r
-    <h3><a name="pathinformation" id="pathinformation">Chemin des exécutables (PATH) et variables\r
-      d'environnement</a></h3>\r
-      \r
-\r
-      <p>Lorsque vous lancez un programme depuis la ligne de commande,\r
-      certaines informations sont passées au shell sans que vous vous en\r
-      doutiez. Par exemple, la variable <code>PATH</code> indique au\r
-      shell où il doit rechercher les exécutables auxquels vous faites\r
-      référence.</p>\r
-\r
-      <p>Lorsqu'un programme s'exécute depuis le serveur web en tant que\r
-      programme CGI, sa variable <code>PATH</code> n'aura peut-être pas\r
-      la même valeur. Tout programme que vous invoquez dans votre\r
-      programme CGI ( comme par exemple <code>sendmail</code>) devra\r
-      être spécifié par son chemin complet, de façon à ce que le shell\r
-      puisse le trouver lorsqu'il tentera d'exécuter votre programme\r
-      CGI.</p>\r
-\r
-      <p>Un exemple typique de spécification de programme est le chemin\r
-      vers l'interpréteur de script (souvent <code>perl</code>) que l'on\r
-      trouve à la première ligne de votre programme CGI et qui va\r
-      ressembler à ceci :</p>\r
-\r
-      <div class="example"><p><code>\r
-        #!/usr/bin/perl\r
-      </code></p></div>\r
-\r
-      <p>Assurez-vous qu'il s'agit bien du chemin correct vers\r
-      l'interpréteur.</p>\r
-\r
-      <p>De plus, si votre programme CGI dépend d'autres <a href="#env">variables d'environnement</a>, vous devrez vous\r
-      assurer qu'elles lui sont bien transmises par Apache.</p>\r
-\r
-    \r
-\r
-    <h3><a name="syntaxerrors" id="syntaxerrors">Erreurs inhérentes au programme</a></h3>\r
-      \r
-\r
-      <p>La plupart des échecs dans l'exécution d'un programme CGI\r
-      proviennent du programme lui-même. Ceci est particulièrement vrai\r
-      lorsque ce satané programme CGI se bloque, alors que vous avez\r
-      appris à ne plus commettre les deux erreurs précédentes. La\r
-      première chose à faire est de vous assurer que votre programme\r
-      s'exécute depuis la ligne de commande, avant de le tester à partir\r
-      du serveur web. Par exemple, essayez :</p>\r
-\r
-      <div class="example"><p><code>\r
-      cd /usr/local/apache2/cgi-bin<br />\r
-      ./premier.pl\r
-      </code></p></div>\r
-\r
-      <p>(N'invoquez pas l'interpréteur <code>perl</code>. Le shell et\r
-      Apache doivent être capable de le déterminer à partir de <a href="#pathinformation">l'information sur le chemin</a> située sur\r
-      la première ligne du script.)</p>\r
-\r
-      <p>La première chose que vous devriez voir affichée par votre\r
-      programme est un ensemble d'en-têtes HTTP, comprenant entre autres\r
-      le <code>Content-Type</code>, et suivi d'une ligne vide. Si vous\r
-      voyez quoi que ce soit d'autre, Apache renverra l'erreur\r
-      <code>Premature end of script headers</code> si vous tentez\r
-      d'exécuter le programme depuis le serveur. Voir <a href="#writing">Ecriture d'un programme CGI</a> ci-dessus pour\r
-      plus de détails.</p>\r
-    \r
-\r
-    <h3><a name="errorlogs" id="errorlogs">Journalisation des erreurs</a></h3>\r
-      \r
-\r
-      <p>Les journaux d'erreurs sont vos amis. Toute anomalie de\r
-      fonctionnement est consignée dans le journal des erreurs et c'est\r
-      ici que vous devez regarder en premier en cas de problème. Si\r
-      l'hébergeur de votre site ne vous donne pas accès au journal des\r
-      erreurs, vous avez tout intérêt à vous tourner vers quelqu'un\r
-      d'autre. Apprenez à déchiffrer les journaux d'erreurs, et vous\r
-      vous apercevrez que la plupart des problèmes seront rapidement\r
-      identifiés . . . et résolus.</p>\r
-    \r
-\r
-    <h3><a name="suexec" id="suexec">Suexec</a></h3>\r
-      \r
-\r
-      <p>Le programme <a href="../suexec.html">suexec</a> permet\r
-      d'exécuter les programmes CGI avec des droits différents selon le\r
-      serveur virtuel ou le répertoire utilisateur dans lequel ils\r
-      se situent. Suexec effectue une vérification des droits très\r
-      stricte, et toute anomalie détectée au cours de cette vérification\r
-      entraînera un echec d'exécution de votre programme CGI avec\r
-      affichage de l'erreur <code>Premature end of script\r
-      headers</code>.</p>\r
-\r
-      <p>Pour savoir si vous pouvez utiliser suexec, tapez la commande\r
-      <code>apachectl -V</code>, et regardez le chemin indiqué par\r
-      <code>SUEXEC_BIN</code>. Si au démarrage d'Apache, ce dernier\r
-      trouve un exécutable <code class="program"><a href="../programs/suexec.html">suexec</a></code> dans ce chemin,\r
-      suexec sera activé.</p>\r
-\r
-      <p>Si vous ne maîtrisez pas le fonctionnement de suexec, il vous\r
-      est déconseillé de l'utiliser. Pour désactiver suexec, supprimer\r
-      simplement (ou renommez) l'exécutable <code class="program"><a href="../programs/suexec.html">suexec</a></code>\r
-      pointé par <code>SUEXEC_BIN</code> et redémarrez le serveur. Si\r
-      après une lecture de <a href="../suexec.html">suexec</a>, vous\r
-      décidez quand-même de l'utiliser, tapez la commande <code>suexec\r
-      -V</code> pour voir où se situe le journal de suexec, et utilisez\r
-      ce dernier pour déterminer quelles règles vous violez\r
-      éventuellement.</p>\r
-    \r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="behindscenes" id="behindscenes">Que se passe-t-il en coulisse</a></h2>\r
-    \r
-\r
-    <p>Lorsque vos compétences en programmation CGI seront plus\r
-    poussées, il s'avérera intéressant pour vous de mieux comprendre ce\r
-    qui se passe en coulisse, et en particulier la manière dont le\r
-    navigateur et le serveur dialoguent entre eux. En effet, bien qu'il\r
-    soit tout à fait louable d'écrire un programme qui affiche "Bonjour\r
-    tout le monde . . .", cela ne sert pas à grand chose.</p>\r
-\r
-    <h3><a name="env" id="env">Variables d'environnement</a></h3>\r
-      \r
-\r
-      <p>Les variables d'environnement sont des valeurs qui gravitent\r
-      autour de vous lorsque vous utilisez votre ordinateur. Elles sont\r
-      très utiles, à l'instar de votre chemin par défaut (où votre\r
-      ordinateur va rechercher le fichier physique correspondant à la\r
-      commande que vous avez tapée), votre nom d'utilisateur, le type de\r
-      votre terminal, etc... Pour obtenir une liste complète des\r
-      variables d'environnement standards que vous utilisez tous les\r
-      jours, tapez <code>env</code> dans votre interpréteur\r
-      de commandes.</p>\r
-\r
-      <p>Au cours de la transaction CGI, le serveur et le navigateur\r
-      définissent aussi des variables d'environnement, de façon à ce\r
-      qu'ils puissent communiquer entre eux. Ces variables définissent\r
-      entre autre le type de navigateur (Netscape, IE, Lynx), le type de\r
-      serveur (Apache, IIS, WebSite), le nom du programme CGI en cours\r
-      d'exécution, etc...</p>\r
-\r
-      <p>Ces variables sont à la disposition du programmeur CGI, et\r
-      elles constituent 50% de la communication client-serveur. La liste\r
-      complète des variables requises se trouve à\r
-      <a href="http://hoohoo.ncsa.uiuc.edu/cgi/env.html">http://hoohoo.ncsa.uiuc.edu/cgi/env.html</a>.</p>\r
-\r
-      <p>Ce programme CGI basique en Perl permet d'afficher toutes les\r
-      variables d'environnement qui sont échangées. Deux programmes\r
-      similaires sont fournis avec la distribution d'Apache et situés\r
-      dans le répertoire <code>cgi-bin</code>.\r
-      Notez que certaines variables sont\r
-      obligatoires, alors que d'autres sont optionnelles, si bien que\r
-      vous verrez s'afficher certaines variables qui ne font pas partie\r
-      de la liste officielle. De plus, Apache vous propose de nombreuses\r
-      méthodes pour <a href="../env.html">ajouter vos propres\r
-      variables d'environnement</a> aux variables de base fournies par\r
-      défaut.</p>\r
-\r
-      <div class="example"><p><code>\r
-        #!/usr/bin/perl<br />\r
-        print "Content-type: text/html\n\n";<br />\r
-        foreach $key (keys %ENV) {<br />\r
-        <span class="indent">\r
-          print "$key --&gt; $ENV{$key}&lt;br&gt;";<br />\r
-        </span>\r
-        }\r
-      </code></p></div>\r
-    \r
-\r
-    <h3><a name="stdin" id="stdin">STDIN et STDOUT</a></h3>\r
-      \r
-\r
-      <p>L'entrée standard (<code>STDIN</code>) et la sortie standard\r
-      (<code>STDOUT</code>) constituent d'autres voies de communication\r
-      entre le client et le serveur. Dans un contexte normal,\r
-      <code>STDIN</code> correspond au clavier, ou à un fichier fourni\r
-      au programme à des fins de traitement, et <code>STDOUT</code> à la\r
-      console ou à l'écran.</p>\r
-\r
-      <p>Lorsque vous transmettez un formulaire web à un programme CGI\r
-      par la méthode <code>POST</code>, les données de ce formulaire\r
-      sont transcrites dans un format spécial et transmises à votre\r
-      programme CGI via <code>STDIN</code>. Le programme peut alors les\r
-      traiter comme si elles provenaient du clavier ou d'un\r
-      fichier.</p>\r
-\r
-      <p>Ce "format spécial" est très simple. Un nom de champ et sa\r
-      valeur sont reliés entre eux par un signe "égal" (=), et chacune\r
-      de ces paires nom champ/valeur est séparée de la suivante par un\r
-      "et" commercial (&amp;). Les caractères\r
-      spéciaux comme les espaces, les "et" commerciaux, et les signes\r
-      "égal" sont convertis en leur équivalent hexadécimal pour éviter\r
-      qu'ils ne gâchent le travail. La chaîne contenant les données doit\r
-      ressembler à ceci :</p>\r
-\r
-      <div class="example"><p><code>\r
-        name=Rich%20Bowen&amp;city=Lexington&amp;state=KY&amp;sidekick=Squirrel%20Monkey\r
-      </code></p></div>\r
-\r
-      <p>Vous verrez aussi parfois une chaîne de ce type accolée à une\r
-      URL. Dans ce cas, le serveur enregistre cette chaîne dans la\r
-      variable d'environnement appelée <code>QUERY_STRING</code>. On a\r
-      alors affaire à une requête de type <code>GET</code>. Votre\r
-      formulaire HTML indique laquelle des méthodes <code>GET</code> ou\r
-      <code>POST</code> est utilisée pour transmettre les données, en\r
-      définissant l'attribut <code>METHOD</code> au niveau de la balise\r
-      <code>FORM</code>.</p>\r
-\r
-      <p>Votre programme est ensuite chargé d'extraire les informations\r
-      utiles de cette chaîne. Heureusement, des bibliothèques et des\r
-      modules sont à votre disposition pour vous aider à traiter ces\r
-      données, et à gérer les différents aspects de votre programme\r
-      CGI.</p>\r
-    \r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="libraries" id="libraries">Bibliothèques et modules CGI</a></h2>\r
-    \r
-\r
-    <p>Pour écrire un programme CGI, il vous est conseillé d'utiliser\r
-    une bibliothèque de code, ou un module, qui effectueront une grande\r
-    partie du travail de base pour vous. Ceci vous permettra de diminuer\r
-    le nombre d'erreurs et d'accélérer le développement.</p>\r
-\r
-    <p>Si vous écrivez des programmes CGI en Perl, des modules sont à\r
-    votre disposition à <a href="http://www.cpan.org/">CPAN</a>. A ce\r
-    sujet, le module le plus populaire est <code>CGI.pm</code>. Vous\r
-    pouvez aussi essayer <code>CGI::Lite</code>, qui implémente les\r
-    fonctionnalités strictement nécessaires, mais suffisantes pour\r
-    la majorité des programmes.</p>\r
-\r
-    <p>Si vous écrivez des programmes CGI en C, vous disposez de\r
-    nombreuses options. L'une d'elles est la bibliothèque\r
-    <code>CGIC</code> de <a href="http://www.boutell.com/cgic/">http://www.boutell.com/cgic/</a>.</p>\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="moreinfo" id="moreinfo">Pour plus d'informations</a></h2>\r
-    \r
-\r
-    <p>Il existe un grand nombre de ressources CGI sur le web. Vous\r
-    pouvez discuter de problèmes CGI avec d'autres utilisateurs dans le\r
-    groupe Usenet <a href="news:comp.infosystems.www.authoring.cgi">\r
-    comp.infosystems.www.authoring.cgi</a>. En outre, la liste de\r
-    diffusion de la Guilde des Ecrivains HTML est une source\r
-    intarissable de réponses à vos questions. Vous en saurez plus en\r
-    vous rendant à <a href="http://www.hwg.org/lists/hwg-servers/">http://www.hwg.org/lists/hwg-servers/</a>.</p>\r
-\r
-    <p>Et bien entendu, vous devez lire la spécification CGI, qui\r
-    présente tous les détails en rapport avec les opérations des\r
-    programmes CGI. La version originale se trouve au <a href="http://hoohoo.ncsa.uiuc.edu/cgi/interface.html">NCSA</a>, et\r
-    dans la RFC IETF actuelle <a href="http://www.ietf.org/rfc/rfc3875">Common Gateway\r
-    Interface RFC</a>.</p>\r
-\r
-    <p>Lorsque vous postez une question à propos d'un problème CGI que\r
-    vous rencontrez, que ce soit dans une liste de diffusion ou dans un\r
-    newsgroup, faites en sorte de fournir suffisamment d'informations\r
-    sur le problème rencontré, ce que vous attendiez exactement, et en\r
-    quoi ce qui se produit est réellement différent de ce que vous\r
-    attendiez, quel serveur vous utilisez, en quel langage votre\r
-    programme CGI a été écrit, et, si possible, son code source. Ceci\r
-    permettra une résolution plus aisée de votre problème.</p>\r
-\r
-    <p>Notez que les questions à propos de problèmes CGI ne doivent\r
-    <strong>jamais</strong> être postées dans la base de données de\r
-    bogues d'Apache, à moins que vous ne soyez sûr d'avoir trouvé un\r
-    problème dans le code source d'Apache.</p>\r
-  </div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/cgi.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/cgi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Tutoriel Apache : Contenu dynamique basé sur CGI - Serveur Apache HTTP</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache : Contenu dynamique basé sur CGI</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/cgi.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/cgi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
+</div>
+</div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#intro">Introduction</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configurer Apache pour autoriser CGI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#writing">Ecrire un programme CGI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Mais ça ne marche toujours pas !</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#behindscenes">Que se passe-t-il en coulisse</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#libraries">Bibliothèques et modules CGI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#moreinfo">Pour plus d'informations</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="intro" id="intro">Introduction</a></h2>
+    
+
+    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code></li></ul></td></tr></table>
+
+    <p>CGI (Common Gateway Interface) définit une méthode d'interaction
+    entre un serveur web et des programmes générateurs de contenu
+    externes, plus souvent appelés programmes CGI ou scripts CGI. Il
+    s'agit de la méthode la plus simple, et la plus
+    courante, pour ajouter du contenu dynamique à votre site web. Ce
+    document est une introduction à la configuration de CGI sur votre
+    serveur web Apache, et une initiation à l'écriture de programmes
+    CGI.</p>
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="configuring" id="configuring">Configurer Apache pour autoriser CGI</a></h2>
+    
+
+    <p>Apache doit être configuré pour permettre l'exécution des
+    programmes CGI, pour que vos programmes CGI puissent fonctionner
+    correctement. Il existe plusieurs méthodes pour y parvenir.</p>
+
+    <div class="warning">Note: si Apache a été compilé avec le support
+    des modules partagés (DSO), vous devez vous assurer que le module CGI est
+    chargé ; vous devez pour cela vérifier que la directive <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> correspondante n'a pas été
+    commentée dans votre <code>httpd.conf</code>. Une directive correcte
+    doit ressembler à ceci :
+
+    <div class="example"><p><code>
+      LoadModule cgi_module modules/mod_cgi.so
+    </code></p></div></div>
+
+    <h3><a name="scriptalias" id="scriptalias">ScriptAlias</a></h3>
+      
+
+      <p>La directive <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> indique à Apache qu'un
+      répertoire particulier est dédié aux programmes CGI. Apache
+      considérera que tout fichier situé dans ce répertoire est un
+      programme CGI, et tentera de l'exécuter lorsque cette ressource
+      fera l'objet d'une requête client.</p>
+
+      <p>La directive <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> se présente comme suit
+      :</p>
+
+      <div class="example"><p><code>
+        ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
+      </code></p></div>
+
+      <p>Cet exemple est tiré de votre fichier de configuration
+      <code>httpd.conf</code> par défaut, si vous avez installé Apache
+      dans son répertoire par défaut. La directive <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code> est similaire à la
+      directive <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code>, qui
+      définit à quel répertoire particulier doit correspondre un préfixe
+      d'URL. <code class="directive">Alias</code> et
+      <code class="directive">ScriptAlias</code> sont généralement utilisés pour
+      accéder à des répertoires situés en dehors du répertoire défini
+      par la directive <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. La différence entre
+      <code class="directive">Alias</code> et <code class="directive">ScriptAlias</code>
+      réside dans le fait que <code class="directive">ScriptAlias</code> indique
+      en plus que tout ce qui se trouve sous le préfixe d'URL doit être
+      considéré comme un programme CGI. Ainsi, l'exemple ci-dessus
+      indique à Apache que toute requête pour une ressource commençant
+      par <code>/cgi-bin/</code> doit être servie depuis le répertoire
+      <code>/usr/local/apache2/cgi-bin/</code>, et doit être traitée en
+      tant que programme CGI.</p>
+
+      <p>Par exemple, si une requête pour l'URL
+      <code>http://www.example.com/cgi-bin/test.pl</code> est
+      effectuée, Apache tentera d'exécuter le fichier
+      <code>/usr/local/apache2/cgi-bin/test.pl</code> et en renverra la
+      sortie. Bien entendu, le fichier doit exister, être exécutable, et
+      retourner sa sortie d'une manière particulière, sinon Apache
+      renverra un message d'erreur.</p>
+    
+
+    <h3><a name="nonscriptalias" id="nonscriptalias">CGI en dehors des répertoires ScripAlias</a></h3>
+      
+
+      <p>Pour des raisons de sécurité, la localisation des programmes
+      CGI est souvent restreinte aux
+      répertoires définis par <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>. De cette manière, les administrateurs
+      peuvent contrôler précisément qui est autorisé à utiliser les
+      programmes CGI. Cependant, si les précautions adéquates quant à
+      la sécurité sont prises, il n'y a aucune raison pour que les
+      programmes CGI ne puissent pas être exécutés depuis d'autres
+      répertoires. Par exemple, vous pouvez autoriser les utilisateurs à
+      enregistrer des contenus web dans leurs répertoires home à l'aide
+      de la directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>. S'ils veulent mettre en
+      oeuvre leurs propres programmes CGI, mais n'ont pas l'autorisation
+      d'accès au répertoire <code>cgi-bin</code> principal, ils devront
+      être en mesure d'exécuter ces programmes depuis un autre
+      répertoire.</p>
+
+      <p>L'autorisation d'exécution des programmes CGI dans un
+      répertoire arbitraire se fait en deux étapes. En premier lieu, le
+      gestionnaire <code>cgi-script</code> doit être activé à l'aide
+      d'une directive <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> ou <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code>. En second lieu,
+      <code>ExecCGI</code> doit être spécifié dans la directive <code class="directive"><a href="../mod/core.html#options">Options</a></code>.</p>
+    
+
+    <h3><a name="options" id="options">Utilisation d'options explicites pour permettre l'exécution
+      des programmes CGI</a></h3>
+      
+
+      <p>Vous pouvez utiliser de manière explicite la directive
+      <code class="directive"><a href="../mod/core.html#options">Options</a></code> dans le fichier de
+      configuration de votre serveur principal, pour indiquer que
+      l'exécution des programmes CGI est permise depuis un répertoire
+      particulier :</p>
+
+      <div class="example"><p><code>
+        &lt;Directory /usr/local/apache2/htdocs/un-repertoire&gt;<br />
+        <span class="indent">
+          Options +ExecCGI<br />
+        </span>
+        &lt;/Directory&gt;
+      </code></p></div>
+
+      <p>La directive ci-dessus indique à Apache qu'il doit permettre
+      l'exécution des fichiers CGI. Vous devez aussi indiquer au serveur
+      quels fichiers sont des fichiers CGI. La directive <code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code> suivante indique au
+      serveur qu'il doit traiter tous les fichiers possédant une
+      extension <code>cgi</code> ou <code>pl</code> en tant que
+      programmes CGI :</p>
+
+      <div class="example"><p><code>
+        AddHandler cgi-script .cgi .pl
+      </code></p></div>
+    
+
+    <h3><a name="htaccess" id="htaccess">Fichiers .htaccess</a></h3>
+      
+
+      <p>Le <a href="htaccess.html"><code>tutoriel
+      .htaccess</code></a> montre comment activer les programmes
+      CGI si vous n'avez pas accès au
+      fichier <code>httpd.conf</code>.</p>
+    
+
+    <h3><a name="userdir" id="userdir">Répertoires utilisateurs</a></h3>
+      
+
+      <p>Pour permettre l'exécution en tant que programme CGI de tout
+      fichier possédant l'extension <code>.cgi</code> et situé dans un
+      répertoire utilisateur, vous pouvez utiliser la configuration
+      suivante :</p>
+
+      <div class="example"><p><code>
+      &lt;Directory /home/*/public_html&gt;<br />
+      <span class="indent">
+        Options +ExecCGI<br />
+        AddHandler cgi-script .cgi<br />
+      </span>
+      &lt;/Directory&gt;
+      </code></p></div>
+
+      <p>Pour indiquer un sous-répertoire <code>cgi-bin</code> d'un
+      répertoire utilisateur où tout fichier sera traité en tant que
+      programme CGI, vous pouvez utiliser ceci :</p>
+
+      <div class="example"><p><code>
+      &lt;Directory /home/*/public_html/cgi-bin&gt;<br />
+      <span class="indent">
+        Options ExecCGI<br />
+        SetHandler cgi-script<br />
+      </span>
+      &lt;/Directory&gt;
+      </code></p></div>
+
+    
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="writing" id="writing">Ecrire un programme CGI</a></h2>
+    
+
+    <p>Il y a deux différences principales entre la programmation
+    "standard" et la programmation CGI.</p>
+
+    <p>En premier lieu, toute sortie de votre programme CGI doit être
+    précédée d'un en-tête <a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME-type</a>. Il s'agit d'un
+    en-tête HTTP qui indique au client quel type de contenu il reçoit.
+    La plupart du temps, il se présente comme suit :</p>
+
+    <div class="example"><p><code>
+      Content-type: text/html
+    </code></p></div>
+
+    <p>En second lieu, votre sortie doit être en HTML, ou tout autre
+    format qu'un navigateur est en mesure d'afficher. La plupart du
+    temps, il s'agira de HTML, mais occasionnellement, vous pouvez être
+    amené à écrire un programme CGI qui renvoie une image gif, ou un
+    autre type de contenu non-HTML.</p>
+
+    <p>A part ces deux différences, un programme CGI ressemblera à tout
+    autre programme que vous pourriez être amené à écrire.</p>
+
+    <h3><a name="firstcgi" id="firstcgi">Votre premier programme CGI</a></h3>
+      
+
+      <p>L'exemple suivant est un exemple de programme CGI qui permet
+      d'afficher une ligne de caractères dans votre navigateur. Ecrivez
+      ce qui suit, enregistrez le dans un fichier nommé
+      <code>premier.pl</code>, et placez le dans votre répertoire
+      <code>cgi-bin</code>.</p>
+
+      <div class="example"><p><code>
+        #!/usr/bin/perl<br />
+        print "Content-type: text/html\n\n";<br />
+        print "Bonjour tout le monde . . .";
+      </code></p></div>
+
+      <p>Même si Perl ne vous est pas familier, vous devriez être
+      capable de comprendre le fonctionnement de ce programme. La
+      première ligne indique à Apache (ou à toute interface à partir de
+      laquelle le programme s'exécute) que ce programme peut être
+      exécuté en fournissant son fichier à l'interpréteur
+      <code>/usr/bin/perl</code>. La seconde ligne affiche la
+      déclaration du type de contenu considéré, suivie de deux paires
+      "Retour chariot - Nouvelle ligne". Ceci a pour effet d'insérer une
+      ligne vide après l'en-tête pour marquer la fin des en-têtes HTTP,
+      et le début du corps du document. La troisième ligne affiche la
+      chaîne de caractères "Bonjour tout le monde . . .". Et c'est tout
+      ce dont vous avez besoin.</p>
+
+      <p>Si vous ouvrez votre navigateur favori et lui indiquez
+      l'adresse</p>
+
+      <div class="example"><p><code>
+        http://www.exemple.com/cgi-bin/premier.pl
+      </code></p></div>
+
+      <p>ou toute autre URL correspondant à votre programme CGI, Vous
+      verrez la ligne <code>Bonjour tout le monde . . .</code>
+      s'afficher dans la fenêtre de votre navigateur. Ce n'est pas
+      extraordinaire, mais si vous y êtes parvenu, vous avez de bonnes
+      chances d'y parvenir pour tout autre programme plus
+      sophistiqué.</p>
+    
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="troubleshoot" id="troubleshoot">Mais ça ne marche toujours pas !</a></h2>
+    
+
+    <p>Vous devriez voir au moins une des quatre sorties suivantes dans
+    votre navigateur lorsque vous essayez d'accéder à votre programme
+    CGI depuis le web :</p>
+
+    <dl>
+      <dt>Le flux de sortie de votre programme CGI</dt>
+      <dd>Impeccable ! Cela signifie que tout fonctionne correctement.
+      Si la sortie est correcte mais n'est pas traitée correctement par
+      le navigateur, assurez-vous d'avoir défini
+      <code>Content-Type</code> de manière appropriée dans votre
+      programme CGI.</dd>
+
+      <dt>Le code source de votre programme CGI ou un message "POST
+      Method Not Allowed"</dt>
+      <dd>Cela signifie que vous n'avez pas configuré Apache de manière
+      à ce qu'il puisse traiter votre programme CGI. Relisez la section
+      sur la <a href="#configuring">configuration d'Apache</a>, et
+      essayez de trouver votre erreur.</dd>
+
+      <dt>Un message commençant par "Forbidden"</dt>
+      <dd>Ce type de message est révélateur d'un problème de
+      droits. Consultez le <a href="#errorlogs">journal des erreurs
+      d'Apache</a> et la section ci-dessous sur les <a href="#permissions">droits des fichiers</a>.</dd>
+
+      <dt>Un message contenant "Internal Server Error"</dt>
+      <dd>Si vous consultez le <a href="#errorlogs">journal des erreurs
+      d'Apache</a>, vous y trouverez probablement des messages du type
+      "Premature end of script headers" (Fin prématurée des en-têtes de
+      script), éventuellement accompagnés d'un message d'erreur généré
+      par votre programme CGI. Dans ce cas, il va vous falloir lire
+      chacune des sections ci-dessous pour déterminer ce qui empêche
+      votre programme CGI de générer les en-têtes appropriés.</dd>
+    </dl>
+
+    <h3><a name="permissions" id="permissions">Droits des fichiers</a></h3>
+      
+
+      <p>Souvenez-vous que le serveur ne s'exécute pas sous votre nom.
+      En d'autres termes, lorsque le serveur a démarré, il s'exécute
+      avec les droits d'un utilisateur non privilégié - en général
+      <code>nobody</code>, ou <code>www</code> - et en conséquence, il
+      aura besoin de droits supplémentaires pour pouvoir exécuter des
+      fichiers dont vous êtes le propriétaire. En général, pour qu'un
+      fichier ait des droits suffisants pour être exécutable par
+      <code>nobody</code>, il suffit de lui attribuer des droits
+      d'exécution pour tout le monde :</p>
+
+      <div class="example"><p><code>
+        chmod a+x premier.pl
+      </code></p></div>
+
+      <p>En outre, si votre programme doit pouvoir accéder en lecture
+      et/ou écriture à d'autres fichiers, ces derniers devront avoir les
+      droits appropriés.</p>
+
+    
+
+    <h3><a name="pathinformation" id="pathinformation">Chemin des exécutables (PATH) et variables
+      d'environnement</a></h3>
+      
+
+      <p>Lorsque vous lancez un programme depuis la ligne de commande,
+      certaines informations sont passées au shell sans que vous vous en
+      doutiez. Par exemple, la variable <code>PATH</code> indique au
+      shell où il doit rechercher les exécutables auxquels vous faites
+      référence.</p>
+
+      <p>Lorsqu'un programme s'exécute depuis le serveur web en tant que
+      programme CGI, sa variable <code>PATH</code> n'aura peut-être pas
+      la même valeur. Tout programme que vous invoquez dans votre
+      programme CGI ( comme par exemple <code>sendmail</code>) devra
+      être spécifié par son chemin complet, de façon à ce que le shell
+      puisse le trouver lorsqu'il tentera d'exécuter votre programme
+      CGI.</p>
+
+      <p>Un exemple typique de spécification de programme est le chemin
+      vers l'interpréteur de script (souvent <code>perl</code>) que l'on
+      trouve à la première ligne de votre programme CGI et qui va
+      ressembler à ceci :</p>
+
+      <div class="example"><p><code>
+        #!/usr/bin/perl
+      </code></p></div>
+
+      <p>Assurez-vous qu'il s'agit bien du chemin correct vers
+      l'interpréteur.</p>
+
+      <p>De plus, si votre programme CGI dépend d'autres <a href="#env">variables d'environnement</a>, vous devrez vous
+      assurer qu'elles lui sont bien transmises par Apache.</p>
+
+    
+
+    <h3><a name="syntaxerrors" id="syntaxerrors">Erreurs inhérentes au programme</a></h3>
+      
+
+      <p>La plupart des échecs dans l'exécution d'un programme CGI
+      proviennent du programme lui-même. Ceci est particulièrement vrai
+      lorsque ce satané programme CGI se bloque, alors que vous avez
+      appris à ne plus commettre les deux erreurs précédentes. La
+      première chose à faire est de vous assurer que votre programme
+      s'exécute depuis la ligne de commande, avant de le tester à partir
+      du serveur web. Par exemple, essayez :</p>
+
+      <div class="example"><p><code>
+      cd /usr/local/apache2/cgi-bin<br />
+      ./premier.pl
+      </code></p></div>
+
+      <p>(N'invoquez pas l'interpréteur <code>perl</code>. Le shell et
+      Apache doivent être capable de le déterminer à partir de <a href="#pathinformation">l'information sur le chemin</a> située sur
+      la première ligne du script.)</p>
+
+      <p>La première chose que vous devriez voir affichée par votre
+      programme est un ensemble d'en-têtes HTTP, comprenant entre autres
+      le <code>Content-Type</code>, et suivi d'une ligne vide. Si vous
+      voyez quoi que ce soit d'autre, Apache renverra l'erreur
+      <code>Premature end of script headers</code> si vous tentez
+      d'exécuter le programme depuis le serveur. Voir <a href="#writing">Ecriture d'un programme CGI</a> ci-dessus pour
+      plus de détails.</p>
+    
+
+    <h3><a name="errorlogs" id="errorlogs">Journalisation des erreurs</a></h3>
+      
+
+      <p>Les journaux d'erreurs sont vos amis. Toute anomalie de
+      fonctionnement est consignée dans le journal des erreurs et c'est
+      ici que vous devez regarder en premier en cas de problème. Si
+      l'hébergeur de votre site ne vous donne pas accès au journal des
+      erreurs, vous avez tout intérêt à vous tourner vers quelqu'un
+      d'autre. Apprenez à déchiffrer les journaux d'erreurs, et vous
+      vous apercevrez que la plupart des problèmes seront rapidement
+      identifiés . . . et résolus.</p>
+    
+
+    <h3><a name="suexec" id="suexec">Suexec</a></h3>
+      
+
+      <p>Le programme <a href="../suexec.html">suexec</a> permet
+      d'exécuter les programmes CGI avec des droits différents selon le
+      serveur virtuel ou le répertoire utilisateur dans lequel ils
+      se situent. Suexec effectue une vérification des droits très
+      stricte, et toute anomalie détectée au cours de cette vérification
+      entraînera un echec d'exécution de votre programme CGI avec
+      affichage de l'erreur <code>Premature end of script
+      headers</code>.</p>
+
+      <p>Pour savoir si vous pouvez utiliser suexec, tapez la commande
+      <code>apachectl -V</code>, et regardez le chemin indiqué par
+      <code>SUEXEC_BIN</code>. Si au démarrage d'Apache, ce dernier
+      trouve un exécutable <code class="program"><a href="../programs/suexec.html">suexec</a></code> dans ce chemin,
+      suexec sera activé.</p>
+
+      <p>Si vous ne maîtrisez pas le fonctionnement de suexec, il vous
+      est déconseillé de l'utiliser. Pour désactiver suexec, supprimer
+      simplement (ou renommez) l'exécutable <code class="program"><a href="../programs/suexec.html">suexec</a></code>
+      pointé par <code>SUEXEC_BIN</code> et redémarrez le serveur. Si
+      après une lecture de <a href="../suexec.html">suexec</a>, vous
+      décidez quand-même de l'utiliser, tapez la commande <code>suexec
+      -V</code> pour voir où se situe le journal de suexec, et utilisez
+      ce dernier pour déterminer quelles règles vous violez
+      éventuellement.</p>
+    
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="behindscenes" id="behindscenes">Que se passe-t-il en coulisse</a></h2>
+    
+
+    <p>Lorsque vos compétences en programmation CGI seront plus
+    poussées, il s'avérera intéressant pour vous de mieux comprendre ce
+    qui se passe en coulisse, et en particulier la manière dont le
+    navigateur et le serveur dialoguent entre eux. En effet, bien qu'il
+    soit tout à fait louable d'écrire un programme qui affiche "Bonjour
+    tout le monde . . .", cela ne sert pas à grand chose.</p>
+
+    <h3><a name="env" id="env">Variables d'environnement</a></h3>
+      
+
+      <p>Les variables d'environnement sont des valeurs qui gravitent
+      autour de vous lorsque vous utilisez votre ordinateur. Elles sont
+      très utiles, à l'instar de votre chemin par défaut (où votre
+      ordinateur va rechercher le fichier physique correspondant à la
+      commande que vous avez tapée), votre nom d'utilisateur, le type de
+      votre terminal, etc... Pour obtenir une liste complète des
+      variables d'environnement standards que vous utilisez tous les
+      jours, tapez <code>env</code> dans votre interpréteur
+      de commandes.</p>
+
+      <p>Au cours de la transaction CGI, le serveur et le navigateur
+      définissent aussi des variables d'environnement, de façon à ce
+      qu'ils puissent communiquer entre eux. Ces variables définissent
+      entre autre le type de navigateur (Netscape, IE, Lynx), le type de
+      serveur (Apache, IIS, WebSite), le nom du programme CGI en cours
+      d'exécution, etc...</p>
+
+      <p>Ces variables sont à la disposition du programmeur CGI, et
+      elles constituent 50% de la communication client-serveur. La liste
+      complète des variables requises se trouve à
+      <a href="http://hoohoo.ncsa.uiuc.edu/cgi/env.html">http://hoohoo.ncsa.uiuc.edu/cgi/env.html</a>.</p>
+
+      <p>Ce programme CGI basique en Perl permet d'afficher toutes les
+      variables d'environnement qui sont échangées. Deux programmes
+      similaires sont fournis avec la distribution d'Apache et situés
+      dans le répertoire <code>cgi-bin</code>.
+      Notez que certaines variables sont
+      obligatoires, alors que d'autres sont optionnelles, si bien que
+      vous verrez s'afficher certaines variables qui ne font pas partie
+      de la liste officielle. De plus, Apache vous propose de nombreuses
+      méthodes pour <a href="../env.html">ajouter vos propres
+      variables d'environnement</a> aux variables de base fournies par
+      défaut.</p>
+
+      <div class="example"><p><code>
+        #!/usr/bin/perl<br />
+        print "Content-type: text/html\n\n";<br />
+        foreach $key (keys %ENV) {<br />
+        <span class="indent">
+          print "$key --&gt; $ENV{$key}&lt;br&gt;";<br />
+        </span>
+        }
+      </code></p></div>
+    
+
+    <h3><a name="stdin" id="stdin">STDIN et STDOUT</a></h3>
+      
+
+      <p>L'entrée standard (<code>STDIN</code>) et la sortie standard
+      (<code>STDOUT</code>) constituent d'autres voies de communication
+      entre le client et le serveur. Dans un contexte normal,
+      <code>STDIN</code> correspond au clavier, ou à un fichier fourni
+      au programme à des fins de traitement, et <code>STDOUT</code> à la
+      console ou à l'écran.</p>
+
+      <p>Lorsque vous transmettez un formulaire web à un programme CGI
+      par la méthode <code>POST</code>, les données de ce formulaire
+      sont transcrites dans un format spécial et transmises à votre
+      programme CGI via <code>STDIN</code>. Le programme peut alors les
+      traiter comme si elles provenaient du clavier ou d'un
+      fichier.</p>
+
+      <p>Ce "format spécial" est très simple. Un nom de champ et sa
+      valeur sont reliés entre eux par un signe "égal" (=), et chacune
+      de ces paires nom champ/valeur est séparée de la suivante par un
+      "et" commercial (&amp;). Les caractères
+      spéciaux comme les espaces, les "et" commerciaux, et les signes
+      "égal" sont convertis en leur équivalent hexadécimal pour éviter
+      qu'ils ne gâchent le travail. La chaîne contenant les données doit
+      ressembler à ceci :</p>
+
+      <div class="example"><p><code>
+        name=Rich%20Bowen&amp;city=Lexington&amp;state=KY&amp;sidekick=Squirrel%20Monkey
+      </code></p></div>
+
+      <p>Vous verrez aussi parfois une chaîne de ce type accolée à une
+      URL. Dans ce cas, le serveur enregistre cette chaîne dans la
+      variable d'environnement appelée <code>QUERY_STRING</code>. On a
+      alors affaire à une requête de type <code>GET</code>. Votre
+      formulaire HTML indique laquelle des méthodes <code>GET</code> ou
+      <code>POST</code> est utilisée pour transmettre les données, en
+      définissant l'attribut <code>METHOD</code> au niveau de la balise
+      <code>FORM</code>.</p>
+
+      <p>Votre programme est ensuite chargé d'extraire les informations
+      utiles de cette chaîne. Heureusement, des bibliothèques et des
+      modules sont à votre disposition pour vous aider à traiter ces
+      données, et à gérer les différents aspects de votre programme
+      CGI.</p>
+    
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="libraries" id="libraries">Bibliothèques et modules CGI</a></h2>
+    
+
+    <p>Pour écrire un programme CGI, il vous est conseillé d'utiliser
+    une bibliothèque de code, ou un module, qui effectueront une grande
+    partie du travail de base pour vous. Ceci vous permettra de diminuer
+    le nombre d'erreurs et d'accélérer le développement.</p>
+
+    <p>Si vous écrivez des programmes CGI en Perl, des modules sont à
+    votre disposition à <a href="http://www.cpan.org/">CPAN</a>. A ce
+    sujet, le module le plus populaire est <code>CGI.pm</code>. Vous
+    pouvez aussi essayer <code>CGI::Lite</code>, qui implémente les
+    fonctionnalités strictement nécessaires, mais suffisantes pour
+    la majorité des programmes.</p>
+
+    <p>Si vous écrivez des programmes CGI en C, vous disposez de
+    nombreuses options. L'une d'elles est la bibliothèque
+    <code>CGIC</code> de <a href="http://www.boutell.com/cgic/">http://www.boutell.com/cgic/</a>.</p>
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="moreinfo" id="moreinfo">Pour plus d'informations</a></h2>
+    
+
+    <p>Il existe un grand nombre de ressources CGI sur le web. Vous
+    pouvez discuter de problèmes CGI avec d'autres utilisateurs dans le
+    groupe Usenet <a href="news:comp.infosystems.www.authoring.cgi">
+    comp.infosystems.www.authoring.cgi</a>. En outre, la liste de
+    diffusion de la Guilde des Ecrivains HTML est une source
+    intarissable de réponses à vos questions. Vous en saurez plus en
+    vous rendant à <a href="http://www.hwg.org/lists/hwg-servers/">http://www.hwg.org/lists/hwg-servers/</a>.</p>
+
+    <p>Et bien entendu, vous devez lire la spécification CGI, qui
+    présente tous les détails en rapport avec les opérations des
+    programmes CGI. La version originale se trouve au <a href="http://hoohoo.ncsa.uiuc.edu/cgi/interface.html">NCSA</a>, et
+    dans la RFC IETF actuelle <a href="http://www.ietf.org/rfc/rfc3875">Common Gateway
+    Interface RFC</a>.</p>
+
+    <p>Lorsque vous postez une question à propos d'un problème CGI que
+    vous rencontrez, que ce soit dans une liste de diffusion ou dans un
+    newsgroup, faites en sorte de fournir suffisamment d'informations
+    sur le problème rencontré, ce que vous attendiez exactement, et en
+    quoi ce qui se produit est réellement différent de ce que vous
+    attendiez, quel serveur vous utilisez, en quel langage votre
+    programme CGI a été écrit, et, si possible, son code source. Ceci
+    permettra une résolution plus aisée de votre problème.</p>
+
+    <p>Notez que les questions à propos de problèmes CGI ne doivent
+    <strong>jamais</strong> être postées dans la base de données de
+    bogues d'Apache, à moins que vous ne soyez sûr d'avoir trouvé un
+    problème dans le code source d'Apache.</p>
+  </div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/cgi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/cgi.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/cgi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/cgi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index 6bcdcdd917b36f394d30d6b38cdc8d9191b699c1..58a304ffc52c96163c69db683a428903b939e927 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Tutoriel Apache : fichiers .htaccess - Serveur Apache HTTP</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes / Tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache : fichiers .htaccess</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/htaccess.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a></p>\r
-</div>\r
-\r
-<p>Les fichiers <code>.htaccess</code> fournissent une méthode pour\r
-modifier la configuration du serveur au niveau de chaque répertoire.</p>\r
-</div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Fichiers .htaccess</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#what">Que sont ce fichiers, comment les utiliser ?</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#when">Quand doit-on (ne doit-on pas) utiliser\r
-    les fichiers .htaccess ?</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#how">Comment sont appliquées les directives ?</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#auth">Exemple d'authentification</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#ssi">Exemple d'Inclusion Côté Serveur (Server Side\r
-Includes - SSI)</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#cgi">Exemple de CGI</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Résolution des problèmes</a></li>\r
-</ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="related" id="related">Fichiers .htaccess</a></h2>\r
-    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li><li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li><li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code></li><li><code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code></li></ul></td></tr></table>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="what" id="what">Que sont ce fichiers, comment les utiliser ?</a></h2>\r
-\r
-\r
-    <p>Les fichiers <code>.htaccess</code> (ou "fichiers de\r
-    configuration distribués") fournissent une méthode pour modifier la\r
-    configuration du serveur au niveau d'un répertoire. Un fichier,\r
-    contenant une ou plusieurs directives de configuration, est placé\r
-    dans un répertoire de documents particulier, et ses directives\r
-    s'appliquent à ce répertoire et à tous ses sous-répertoires.</p>\r
-\r
-    <div class="note"><h3>Note :</h3>\r
-      <p>Si vous voulez donner un autre nom à votre fichier\r
-      <code>.htaccess</code>, vous pouvez le faire en utilisant la\r
-      directive <code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code>. Par\r
-      exemple, si vous préférez nommer votre fichier\r
-      <code>.config</code>, vous pouvez mettre ceci dans le fichier de\r
-      configuration de votre serveur :</p>\r
-\r
-      <div class="example"><p><code>\r
-        AccessFileName .config\r
-      </code></p></div>\r
-    </div>\r
-\r
-    <p>En général, les fichiers <code>.htaccess</code> utilisent la même\r
-    syntaxe que les <a href="../configuring.html#syntax">fichiers de\r
-    configuration principaux</a>. Ce que vous pouvez mettre dans ces\r
-    fichier est déterminé par la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Cette directive spécifie,\r
-    sous forme de catégories, quelles directives seront traitées si\r
-    elles se trouvent dans un fichier <code>.htaccess</code>. Si une\r
-    directive est permise dans un fichier <code>.htaccess</code> file,\r
-    la documentation de cette directive contiendra une section Override,\r
-    spécifiant quelle valeur doit prendre <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> pour que cette directive\r
-    soit traitée.</p>\r
-\r
-    <p>Par exemple, si vous regardez la documentation de la directive\r
-    <code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code>, vous verrez\r
-    que cette dernière est permise dans les fichiers\r
-    <code>.htaccess</code> (Voir la ligne de contexte dans le résumé de\r
-    la directive). La ligne <a href="../mod/directive-dict.html#Context">Override</a> indique\r
-    <code>FileInfo</code>. Vous devez donc avoir au moins\r
-    <code>AllowOverride FileInfo</code> pour que cette directive soit\r
-    traitée dans les fichiers <code>.htaccess</code>.</p>\r
-\r
-    <div class="example"><h3>Exemple :</h3><table>\r
-        <tr>\r
-          <td><a href="../mod/directive-dict.html#Context">Contexte :</a></td>\r
-          <td>configuration du serveur, serveur virtuel, directory, .htaccess</td>\r
-        </tr>\r
-\r
-        <tr>\r
-          <td><a href="../mod/directive-dict.html#Override">Override:</a></td>\r
-          <td>FileInfo</td>\r
-        </tr>\r
-      </table></div>\r
-\r
-    <p>Si vous n'êtes pas sûr qu'une directive particulière soit permise\r
-    dans un fichier <code>.htaccess</code>, lisez la documentation de\r
-    cette directive, et consultez la ligne de contexte pour\r
-    ".htaccess".</p>\r
-    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="when" id="when">Quand doit-on (ne doit-on pas) utiliser\r
-    les fichiers .htaccess ?</a></h2>\r
-\r
-    <p>En principe, vous ne devriez utiliser les fichiers\r
-    <code>.htaccess</code> que si vous n'avez pas accès au fichier de\r
-    configuration du serveur principal. Par exemple, la fausse idée\r
-    selon laquelle l'authentification de l'utilisateur devrait toujours\r
-    être faite dans les fichiers <code>.htaccess</code> est très\r
-    répandue. Ceci est tout simplement faux. Vous pouvez configurer\r
-    l'authentification des utilisateurs au niveau de la configuration du\r
-    serveur principal, et c'est en fait cette méthode qui doit être\r
-    privilégiée.</p>\r
-\r
-    <p>Les fichiers <code>.htaccess</code> ne devraient être utilisés\r
-    que dans le cas où les fournisseurs de contenu ont besoin de\r
-    modifier la configuration du serveur au niveau d'un répertoire, mais\r
-    ne possèdent pas l'accès root sur le système du serveur. Si\r
-    l'administrateur du serveur ne souhaite pas effectuer des\r
-    modifications de configuration incessantes, il peut être intéressant\r
-    de permettre aux utilisateurs isolés d'effectuer eux-mêmes ces\r
-    modifications par le biais de fichiers <code>.htaccess</code>. Ceci\r
-    est particulièrement vrai dans le cas où le fournisseur d'accès à\r
-    Internet héberge de nombreux sites d'utilisateurs sur un seul\r
-    serveur, et souhaite que ces utilisateurs puissent modifier\r
-    eux-mêmes leurs configurations.</p>\r
-\r
-    <p>Cependant et d'une manière générale, il vaut mieux éviter\r
-    d'utiliser les fichiers <code>.htaccess</code>. Tout élément de\r
-    configuration que vous pourriez vouloir mettre dans un fichier\r
-    <code>.htaccess</code>, peut aussi être mis, et avec la même\r
-    efficacité, dans une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> du fichier de configuration de\r
-    votre serveur principal.</p>\r
-\r
-    <p>Il y a deux raisons principales d'éviter l'utilisation des\r
-    fichiers <code>.htaccess</code>.</p>\r
-\r
-    <p>La première est liée aux performances. Lorsque la directive\r
-    <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> est définie de\r
-    façon à autoriser l'utilisation des fichiers <code>.htaccess</code>,\r
-    Apache va rechercher leur présence dans chaque répertoire. Ainsi,\r
-    permettre l'utilisation des fichiers <code>.htaccess</code> est déjà\r
-    en soi une cause de dégradation des performances, que vous utilisiez\r
-    effectivement ces fichiers ou non ! De plus, le fichier\r
-    <code>.htaccess</code> est chargé en mémoire chaque fois qu'un\r
-    document fait l'objet d'une requête.</p>\r
-\r
-    <p>Notez aussi qu'Apache doit rechercher les fichiers\r
-    <code>.htaccess</code> dans tous les répertoires de niveau\r
-    supérieur, afin de rassembler toutes les directives qui s'appliquent\r
-    au répertoire courant (Voir la section <a href="#how">comment sont\r
-    appliquées les directives</a>). Ainsi, si un fichier fait l'objet\r
-    d'une requête à partir d'un répertoire\r
-    <code>/www/htdocs/exemple</code>, Apache doit rechercher les\r
-    fichiers suivants :</p>\r
-\r
-    <div class="example"><p><code>\r
-      /.htaccess<br />\r
-      /www/.htaccess<br />\r
-      /www/htdocs/.htaccess<br />\r
-      /www/htdocs/exemple/.htaccess\r
-    </code></p></div>\r
-\r
-    <p>En conséquence, chaque accès à un fichier de ce répertoire\r
-    nécessite 4 accès au système de fichiers supplémentaires pour\r
-    rechercher des fichiers <code>.htaccess</code>, même si\r
-    aucun de ces fichiers n'est présent. Notez que cet exemple ne peut\r
-    se produire que si les fichiers <code>.htaccess</code> ont été\r
-    autorisés pour le répertoire <code>/</code>, ce qui est rarement le\r
-    cas.</p>\r
-\r
-    <p>La seconde raison d'éviter l'utilisation des fichiers\r
-    <code>.htaccess</code> est liée à la sécurité. Si vous permettez aux\r
-    utilisateurs de modifier la configuration du serveur, il peut en\r
-    résulter des conséquences sur lesquelles vous n'aurez aucun\r
-    contrôle. Réfléchissez bien avant de donner ce privilège à vos\r
-    utilisateurs. Notez aussi que ne pas donner aux utilisateurs les\r
-    privilèges dont ils ont besoin va entraîner une augmentation des\r
-    demandes de support technique. Assurez-vous d'avoir informé\r
-    clairement vos utilisateurs du niveau de privilèges que vous leur\r
-    avez attribué. Indiquer exactement comment vous avez défini la\r
-    directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> et\r
-    diriger les utilisateurs vers la documentation correspondante vous\r
-    évitera bien des confusions ultérieures.</p>\r
-\r
-    <p>Notez que mettre un fichier <code>.htaccess</code> contenant une\r
-    directive dans un répertoire <code>/www/htdocs/exemple</code>\r
-    revient exactement au même que mettre la même directive dans une\r
-    section Directory <code>&lt;Directory /www/htdocs/exemple&gt;</code>\r
-    du fichier de configuration de votre serveur principal :</p>\r
-\r
-    <p>Fichier <code>.htaccess</code> dans\r
-    <code>/www/htdocs/exemple</code> :</p>\r
-\r
-    <div class="example"><h3>Contenu du fichier .htaccess dans\r
-    <code>/www/htdocs/exemple</code></h3><p><code>\r
-       AddType text/exemple .exm\r
-    </code></p></div>\r
-\r
-    <div class="example"><h3>Section de votre fichier\r
-    <code>httpd.conf</code></h3><p><code>\r
-      &lt;Directory /www/htdocs/exemple&gt;<br />\r
-      <span class="indent">\r
-        AddType text/exemple .exm<br />\r
-      </span>\r
-      &lt;/Directory&gt;\r
-    </code></p></div>\r
-\r
-    <p>Cependant, la perte de performances sera moindre si vous\r
-    définissez cette directive dans la configuration de\r
-    votre serveur principal, car cette dernière ne sera chargée qu'une\r
-    seule fois au moment du démarrage du serveur, alors qu'elle le sera\r
-    à chaque accès dans le cas d'un fichier <code>.htaccess</code>.</p>\r
-\r
-    <p>L'utilisation des fichiers <code>.htaccess</code> peut être\r
-    entièrement désactivée en définissant la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> à <code>none</code> :</p>\r
-\r
-    <div class="example"><p><code>\r
-      AllowOverride None\r
-    </code></p></div>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="how" id="how">Comment sont appliquées les directives ?</a></h2>\r
-\r
-    <p>Les directives de configuration situées dans un fichier\r
-    <code>.htaccess</code> s'appliquent au répertoire dans lequel ce\r
-    fichier <code>.htaccess</code> se trouve, ainsi qu'à tous ses\r
-    sous-répertoires. Cependant, il est important de garder à l'esprit\r
-    qu'il peut y avoir des fichiers <code>.htaccess</code> dans les\r
-    répertoires de niveau supérieur. Les directives sont appliquées\r
-    selon l'ordre dans lequel elles sont rencontrées. Ainsi, les\r
-    directives d'un fichier <code>.htaccess</code> situé dans un\r
-    répertoire particulier peuvent écraser les directives se trouvant\r
-    dans des fichiers <code>.htaccess</code> situés à un niveau\r
-    supérieur dans l'arborescence des répertoires. Et ces dernières\r
-    peuvent elles-mêmes avoir écrasé des directives d'un fichier\r
-    <code>.htaccess</code> situé à un niveau encore plus haut, ou dans\r
-    le fichier de configuration du serveur principal.</p>\r
-\r
-    <p>Exemple :</p>\r
-\r
-    <p>Dans le répertoire <code>/www/htdocs/exemple1</code> se trouve un\r
-    fichier <code>.htaccess</code> contenant ce qui suit :</p>\r
-\r
-    <div class="example"><p><code>\r
-       Options +ExecCGI\r
-    </code></p></div>\r
-\r
-    <p>Note : "<code>AllowOverride Options</code>" doit être présent\r
-    pour permettre l'utilisation de la directive "<code class="directive"><a href="../mod/core.html#options">Options</a></code>"  dans les fichiers\r
-    <code>.htaccess</code>.</p>\r
-\r
-    <p>Dans le répertoire <code>/www/htdocs/exemple1/exemple2</code> se\r
-    trouve un fichier <code>.htaccess</code> contenant ce qui suit\r
-    :</p>\r
-\r
-    <div class="example"><p><code>\r
-       Options Includes\r
-    </code></p></div>\r
-\r
-    <p>Ainsi, à cause de ce second fichier <code>.htaccess</code> du\r
-    répertoire <code>/www/htdocs/exemple1/exemple2</code>, l'exécution\r
-    des CGI est interdite, car la dernière définition d'options\r
-    <code>Options Includes</code> écrase toute autre définition\r
-    d'options d'un fichier <code>.htaccess</code> situé dans un\r
-    répertoire de niveau supérieur.</p>\r
-\r
-    <h3><a name="merge" id="merge">Interactions entre les fichiers .htaccess\r
-    et les fichiers de configuration du serveur principal</a></h3>\r
-\r
-    <p>Comme indiqué dans la documentation sur les <a href="../sections.html">Sections de configuration</a>, les fichiers\r
-    <code>.htaccess</code> peuvent écraser les directives des sections\r
-    <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> pour\r
-    le répertoire correspondant, mais peuvent eux-mêmes être écrasés\r
-    par d'autres types de sections des fichiers de la\r
-    configuration principale. Cette possibilité peut s'avérer utile pour\r
-    forcer certaines configurations, même en cas de présence de l'option\r
-    libérale <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Par\r
-    exemple, pour interdire l'exécution de scripts en autorisant la\r
-    définition de toute autre option dans les fichiers\r
-    <code>.htaccess</code>, vous pouvez utiliser :</p>\r
-\r
-    <div class="example"><p><code>\r
-&lt;Directory /&gt;<br />\r
-<span class="indent">\r
-Allowoverride All<br />\r
-</span>\r
-&lt;/Directory&gt;<br />\r
-<br />\r
-&lt;Location /&gt;<br />\r
-<span class="indent">\r
-Options +IncludesNoExec -ExecCGI<br />\r
-</span>\r
-&lt;/Location&gt;\r
-    </code></p></div>\r
-\r
-\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="auth" id="auth">Exemple d'authentification</a></h2>\r
-\r
-    <p>Si vous accédez directement à ce point du document pour apprendre\r
-    à effectuer une authentification, il est important de noter ceci. Il\r
-    existe une fausse idée selon laquelle il serait nécessaire\r
-    d'utiliser les fichiers <code>.htaccess</code> pour implémenter\r
-    l'authentification par mot de passe. Ceci est tout simplement faux.\r
-    Pour y parvenir, il est préférable de mettre les directives\r
-    d'authentification dans une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> du fichier de configuration de\r
-    votre serveur principal, et les fichiers <code>.htaccess</code> ne\r
-    devraient être utilisés que dans le cas où vous n'avez pas accès au\r
-    fichier de configuration du serveur principal. Voir <a href="#when">ci-dessus</a> pour savoir dans quels cas vous devez ou\r
-    ne devez pas utiliser les fichiers <code>.htaccess</code>.</p>\r
-\r
-    <p>Ceci étant dit, si vous pensez que vous devez quand-même utiliser\r
-    un fichier <code>.htaccess</code>, vous pouvez utiliser la\r
-    configuration suivante :</p>\r
-\r
-    <p>Contenu du fichier <code>.htaccess</code> :</p>\r
-\r
-    <div class="example"><p><code>\r
-      AuthType Basic<br />\r
-      AuthName "Password Required"<br />\r
-      AuthUserFile /www/passwords/password.file<br />\r
-      AuthGroupFile /www/passwords/group.file<br />\r
-      Require Group admins\r
-    </code></p></div>\r
-\r
-    <p>Notez que <code>AllowOverride AuthConfig</code> doit être présent\r
-    pour que ces directives produisent leur effet.</p>\r
-\r
-    <p>Vous pouvez vous référer au <a href="auth.html">tutoriel sur\r
-    l'authentification</a> pour une description plus détaillée de\r
-    l'authentification et de l'autorisation.</p>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="ssi" id="ssi">Exemple d'Inclusion Côté Serveur (Server Side\r
-Includes - SSI)</a></h2>\r
-\r
-    <p>Les fichiers <code>.htaccess</code> sont aussi couramment\r
-    utilisés pour activer les SSI pour un répertoire particulier. Pour y\r
-    parvenir, on utilise les directives de configuration suivantes,\r
-    placées dans un fichier <code>.htaccess</code> enregistré dans le\r
-    répertoire considéré :</p>\r
-\r
-    <div class="example"><p><code>\r
-       Options +Includes<br />\r
-       AddType text/html shtml<br />\r
-       AddHandler server-parsed shtml\r
-    </code></p></div>\r
-\r
-    <p>Notez que <code>AllowOverride Options</code> et <code>AllowOverride\r
-    FileInfo</code> doivent être tous les deux présents pour que ces\r
-    directives puissent produire leur effet.</p>\r
-\r
-    <p>Vous pouvez vous référer au <a href="ssi.html">tutoriel SSI</a>\r
-    pour une description plus détaillée des SSI.</p>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="cgi" id="cgi">Exemple de CGI</a></h2>\r
-\r
-    <p>En fin de compte, vous avez décidé d'utiliser un fichier\r
-    <code>.htaccess</code> pour permettre l'exécution des programmes CGI\r
-    dans un répertoire particulier. Pour y parvenir, vous pouvez\r
-    utiliser la configuration suivante :</p>\r
-\r
-    <div class="example"><p><code>\r
-       Options +ExecCGI<br />\r
-       AddHandler cgi-script cgi pl\r
-    </code></p></div>\r
-\r
-    <p>Alternativement, si vous souhaitez que tous les fichiers d'un\r
-    répertoire donné soient considérés comme des programmes CGI, vous\r
-    pouvez utiliser la configuration suivante :</p>\r
-\r
-    <div class="example"><p><code>\r
-       Options +ExecCGI<br />\r
-       SetHandler cgi-script\r
-    </code></p></div>\r
-\r
-    <p>Notez que <code>AllowOverride Options</code> et <code>AllowOverride\r
-    FileInfo</code> doivent être tous les deux présents pour que ces\r
-    directives puissent produire leur effet.</p>\r
-\r
-    <p>Vous pouvez vous référer au <a href="cgi.html">tutoriel CGI</a>\r
-    pour une description plus détaillée de la configuration et de la\r
-    proprammation CGI.</p>\r
-\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="troubleshoot" id="troubleshoot">Résolution des problèmes</a></h2>\r
-\r
-    <p>De nombreuses raisons peuvent être à l'origine du fait que\r
-    les directives que vous avez mises dans un fichier\r
-    <code>.htaccess</code> ne produisent pas l'effet désiré.</p>\r
-\r
-    <p>Le plus souvent, le problème vient du fait que la définition de\r
-    la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>\r
-    ne permet pas l'activation des directives de votre fichier\r
-    <code>.htaccess</code>. Vérifiez si une directive\r
-    <code>AllowOverride None</code> n'affecte pas le répertoire où se\r
-    trouve votre fichier. Un bon test consiste à mettre des directives\r
-    dont la syntaxe est erronée dans votre ficher <code>.htaccess</code>\r
-    et de redémarrer le serveur. Si aucune erreur n'est générée par le\r
-    serveur, il est pratiquement certain qu'une directive\r
-    <code>AllowOverride None</code> affecte votre répertoire.</p>\r
-\r
-    <p>Par contre, si vous obtenez des erreurs de serveur lorsque vous\r
-    tentez d'accéder à des documents, consultez votre journal des\r
-    erreurs d'Apache. Il vous indiquera probablement que la directive\r
-    utilisée dans votre fichier <code>.htaccess</code> n'est pas\r
-    permise.</p>\r
-\r
-<div class="example"><p><code>\r
-       [Sat Aug 09 16:19:20 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteLog not allowed here\r
-</code></p></div>\r
-       <p>Cela signifie soit que vous utilisez une directive qui n'est\r
-       jamais permise dans les fichiers <code>.htaccess</code>, soit\r
-       que vous n'avez tout simplement pas défini la directive\r
-       <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> à un niveau\r
-       suffisant pour la directive que vous utilisez. Consultez la\r
-       documentation de cette directive pour déterminer quel cas\r
-       s'applique.</p>\r
-\r
-       <p>Le journal des erreurs peut aussi vous signaler une erreur de\r
-       syntaxe dans l'usage de la directive elle-même.</p>\r
-\r
-    <div class="example"><p><code>\r
-    [Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters\r
-    </code></p></div>\r
-\r
-       <p>Dans ce cas, le message d'erreur sera spécifique à l'erreur\r
-       de syntaxe que vous avez commise.</p>\r
-</div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/htaccess.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Tutoriel Apache : fichiers .htaccess - Serveur Apache HTTP</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes / Tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache : fichiers .htaccess</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/htaccess.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a></p>
+</div>
+
+<p>Les fichiers <code>.htaccess</code> fournissent une méthode pour
+modifier la configuration du serveur au niveau de chaque répertoire.</p>
+</div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Fichiers .htaccess</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#what">Que sont ce fichiers, comment les utiliser ?</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#when">Quand doit-on (ne doit-on pas) utiliser
+    les fichiers .htaccess ?</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#how">Comment sont appliquées les directives ?</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#auth">Exemple d'authentification</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#ssi">Exemple d'Inclusion Côté Serveur (Server Side
+Includes - SSI)</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#cgi">Exemple de CGI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#troubleshoot">Résolution des problèmes</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">Fichiers .htaccess</a></h2>
+    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/core.html">core</a></code></li><li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li><li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code></li><li><code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code></li><li><code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code></li><li><code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code></li><li><code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code></li></ul></td></tr></table>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="what" id="what">Que sont ce fichiers, comment les utiliser ?</a></h2>
+
+
+    <p>Les fichiers <code>.htaccess</code> (ou "fichiers de
+    configuration distribués") fournissent une méthode pour modifier la
+    configuration du serveur au niveau d'un répertoire. Un fichier,
+    contenant une ou plusieurs directives de configuration, est placé
+    dans un répertoire de documents particulier, et ses directives
+    s'appliquent à ce répertoire et à tous ses sous-répertoires.</p>
+
+    <div class="note"><h3>Note :</h3>
+      <p>Si vous voulez donner un autre nom à votre fichier
+      <code>.htaccess</code>, vous pouvez le faire en utilisant la
+      directive <code class="directive"><a href="../mod/core.html#accessfilename">AccessFileName</a></code>. Par
+      exemple, si vous préférez nommer votre fichier
+      <code>.config</code>, vous pouvez mettre ceci dans le fichier de
+      configuration de votre serveur :</p>
+
+      <div class="example"><p><code>
+        AccessFileName .config
+      </code></p></div>
+    </div>
+
+    <p>En général, les fichiers <code>.htaccess</code> utilisent la même
+    syntaxe que les <a href="../configuring.html#syntax">fichiers de
+    configuration principaux</a>. Ce que vous pouvez mettre dans ces
+    fichier est déterminé par la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Cette directive spécifie,
+    sous forme de catégories, quelles directives seront traitées si
+    elles se trouvent dans un fichier <code>.htaccess</code>. Si une
+    directive est permise dans un fichier <code>.htaccess</code> file,
+    la documentation de cette directive contiendra une section Override,
+    spécifiant quelle valeur doit prendre <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> pour que cette directive
+    soit traitée.</p>
+
+    <p>Par exemple, si vous regardez la documentation de la directive
+    <code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code>, vous verrez
+    que cette dernière est permise dans les fichiers
+    <code>.htaccess</code> (Voir la ligne de contexte dans le résumé de
+    la directive). La ligne <a href="../mod/directive-dict.html#Context">Override</a> indique
+    <code>FileInfo</code>. Vous devez donc avoir au moins
+    <code>AllowOverride FileInfo</code> pour que cette directive soit
+    traitée dans les fichiers <code>.htaccess</code>.</p>
+
+    <div class="example"><h3>Exemple :</h3><table>
+        <tr>
+          <td><a href="../mod/directive-dict.html#Context">Contexte :</a></td>
+          <td>configuration du serveur, serveur virtuel, directory, .htaccess</td>
+        </tr>
+
+        <tr>
+          <td><a href="../mod/directive-dict.html#Override">Override:</a></td>
+          <td>FileInfo</td>
+        </tr>
+      </table></div>
+
+    <p>Si vous n'êtes pas sûr qu'une directive particulière soit permise
+    dans un fichier <code>.htaccess</code>, lisez la documentation de
+    cette directive, et consultez la ligne de contexte pour
+    ".htaccess".</p>
+    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="when" id="when">Quand doit-on (ne doit-on pas) utiliser
+    les fichiers .htaccess ?</a></h2>
+
+    <p>En principe, vous ne devriez utiliser les fichiers
+    <code>.htaccess</code> que si vous n'avez pas accès au fichier de
+    configuration du serveur principal. Par exemple, la fausse idée
+    selon laquelle l'authentification de l'utilisateur devrait toujours
+    être faite dans les fichiers <code>.htaccess</code> est très
+    répandue. Ceci est tout simplement faux. Vous pouvez configurer
+    l'authentification des utilisateurs au niveau de la configuration du
+    serveur principal, et c'est en fait cette méthode qui doit être
+    privilégiée.</p>
+
+    <p>Les fichiers <code>.htaccess</code> ne devraient être utilisés
+    que dans le cas où les fournisseurs de contenu ont besoin de
+    modifier la configuration du serveur au niveau d'un répertoire, mais
+    ne possèdent pas l'accès root sur le système du serveur. Si
+    l'administrateur du serveur ne souhaite pas effectuer des
+    modifications de configuration incessantes, il peut être intéressant
+    de permettre aux utilisateurs isolés d'effectuer eux-mêmes ces
+    modifications par le biais de fichiers <code>.htaccess</code>. Ceci
+    est particulièrement vrai dans le cas où le fournisseur d'accès à
+    Internet héberge de nombreux sites d'utilisateurs sur un seul
+    serveur, et souhaite que ces utilisateurs puissent modifier
+    eux-mêmes leurs configurations.</p>
+
+    <p>Cependant et d'une manière générale, il vaut mieux éviter
+    d'utiliser les fichiers <code>.htaccess</code>. Tout élément de
+    configuration que vous pourriez vouloir mettre dans un fichier
+    <code>.htaccess</code>, peut aussi être mis, et avec la même
+    efficacité, dans une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> du fichier de configuration de
+    votre serveur principal.</p>
+
+    <p>Il y a deux raisons principales d'éviter l'utilisation des
+    fichiers <code>.htaccess</code>.</p>
+
+    <p>La première est liée aux performances. Lorsque la directive
+    <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> est définie de
+    façon à autoriser l'utilisation des fichiers <code>.htaccess</code>,
+    Apache va rechercher leur présence dans chaque répertoire. Ainsi,
+    permettre l'utilisation des fichiers <code>.htaccess</code> est déjà
+    en soi une cause de dégradation des performances, que vous utilisiez
+    effectivement ces fichiers ou non ! De plus, le fichier
+    <code>.htaccess</code> est chargé en mémoire chaque fois qu'un
+    document fait l'objet d'une requête.</p>
+
+    <p>Notez aussi qu'Apache doit rechercher les fichiers
+    <code>.htaccess</code> dans tous les répertoires de niveau
+    supérieur, afin de rassembler toutes les directives qui s'appliquent
+    au répertoire courant (Voir la section <a href="#how">comment sont
+    appliquées les directives</a>). Ainsi, si un fichier fait l'objet
+    d'une requête à partir d'un répertoire
+    <code>/www/htdocs/exemple</code>, Apache doit rechercher les
+    fichiers suivants :</p>
+
+    <div class="example"><p><code>
+      /.htaccess<br />
+      /www/.htaccess<br />
+      /www/htdocs/.htaccess<br />
+      /www/htdocs/exemple/.htaccess
+    </code></p></div>
+
+    <p>En conséquence, chaque accès à un fichier de ce répertoire
+    nécessite 4 accès au système de fichiers supplémentaires pour
+    rechercher des fichiers <code>.htaccess</code>, même si
+    aucun de ces fichiers n'est présent. Notez que cet exemple ne peut
+    se produire que si les fichiers <code>.htaccess</code> ont été
+    autorisés pour le répertoire <code>/</code>, ce qui est rarement le
+    cas.</p>
+
+    <p>La seconde raison d'éviter l'utilisation des fichiers
+    <code>.htaccess</code> est liée à la sécurité. Si vous permettez aux
+    utilisateurs de modifier la configuration du serveur, il peut en
+    résulter des conséquences sur lesquelles vous n'aurez aucun
+    contrôle. Réfléchissez bien avant de donner ce privilège à vos
+    utilisateurs. Notez aussi que ne pas donner aux utilisateurs les
+    privilèges dont ils ont besoin va entraîner une augmentation des
+    demandes de support technique. Assurez-vous d'avoir informé
+    clairement vos utilisateurs du niveau de privilèges que vous leur
+    avez attribué. Indiquer exactement comment vous avez défini la
+    directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> et
+    diriger les utilisateurs vers la documentation correspondante vous
+    évitera bien des confusions ultérieures.</p>
+
+    <p>Notez que mettre un fichier <code>.htaccess</code> contenant une
+    directive dans un répertoire <code>/www/htdocs/exemple</code>
+    revient exactement au même que mettre la même directive dans une
+    section Directory <code>&lt;Directory /www/htdocs/exemple&gt;</code>
+    du fichier de configuration de votre serveur principal :</p>
+
+    <p>Fichier <code>.htaccess</code> dans
+    <code>/www/htdocs/exemple</code> :</p>
+
+    <div class="example"><h3>Contenu du fichier .htaccess dans
+    <code>/www/htdocs/exemple</code></h3><p><code>
+       AddType text/exemple .exm
+    </code></p></div>
+
+    <div class="example"><h3>Section de votre fichier
+    <code>httpd.conf</code></h3><p><code>
+      &lt;Directory /www/htdocs/exemple&gt;<br />
+      <span class="indent">
+        AddType text/exemple .exm<br />
+      </span>
+      &lt;/Directory&gt;
+    </code></p></div>
+
+    <p>Cependant, la perte de performances sera moindre si vous
+    définissez cette directive dans la configuration de
+    votre serveur principal, car cette dernière ne sera chargée qu'une
+    seule fois au moment du démarrage du serveur, alors qu'elle le sera
+    à chaque accès dans le cas d'un fichier <code>.htaccess</code>.</p>
+
+    <p>L'utilisation des fichiers <code>.htaccess</code> peut être
+    entièrement désactivée en définissant la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> à <code>none</code> :</p>
+
+    <div class="example"><p><code>
+      AllowOverride None
+    </code></p></div>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="how" id="how">Comment sont appliquées les directives ?</a></h2>
+
+    <p>Les directives de configuration situées dans un fichier
+    <code>.htaccess</code> s'appliquent au répertoire dans lequel ce
+    fichier <code>.htaccess</code> se trouve, ainsi qu'à tous ses
+    sous-répertoires. Cependant, il est important de garder à l'esprit
+    qu'il peut y avoir des fichiers <code>.htaccess</code> dans les
+    répertoires de niveau supérieur. Les directives sont appliquées
+    selon l'ordre dans lequel elles sont rencontrées. Ainsi, les
+    directives d'un fichier <code>.htaccess</code> situé dans un
+    répertoire particulier peuvent écraser les directives se trouvant
+    dans des fichiers <code>.htaccess</code> situés à un niveau
+    supérieur dans l'arborescence des répertoires. Et ces dernières
+    peuvent elles-mêmes avoir écrasé des directives d'un fichier
+    <code>.htaccess</code> situé à un niveau encore plus haut, ou dans
+    le fichier de configuration du serveur principal.</p>
+
+    <p>Exemple :</p>
+
+    <p>Dans le répertoire <code>/www/htdocs/exemple1</code> se trouve un
+    fichier <code>.htaccess</code> contenant ce qui suit :</p>
+
+    <div class="example"><p><code>
+       Options +ExecCGI
+    </code></p></div>
+
+    <p>Note : "<code>AllowOverride Options</code>" doit être présent
+    pour permettre l'utilisation de la directive "<code class="directive"><a href="../mod/core.html#options">Options</a></code>"  dans les fichiers
+    <code>.htaccess</code>.</p>
+
+    <p>Dans le répertoire <code>/www/htdocs/exemple1/exemple2</code> se
+    trouve un fichier <code>.htaccess</code> contenant ce qui suit
+    :</p>
+
+    <div class="example"><p><code>
+       Options Includes
+    </code></p></div>
+
+    <p>Ainsi, à cause de ce second fichier <code>.htaccess</code> du
+    répertoire <code>/www/htdocs/exemple1/exemple2</code>, l'exécution
+    des CGI est interdite, car la dernière définition d'options
+    <code>Options Includes</code> écrase toute autre définition
+    d'options d'un fichier <code>.htaccess</code> situé dans un
+    répertoire de niveau supérieur.</p>
+
+    <h3><a name="merge" id="merge">Interactions entre les fichiers .htaccess
+    et les fichiers de configuration du serveur principal</a></h3>
+
+    <p>Comme indiqué dans la documentation sur les <a href="../sections.html">Sections de configuration</a>, les fichiers
+    <code>.htaccess</code> peuvent écraser les directives des sections
+    <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> pour
+    le répertoire correspondant, mais peuvent eux-mêmes être écrasés
+    par d'autres types de sections des fichiers de la
+    configuration principale. Cette possibilité peut s'avérer utile pour
+    forcer certaines configurations, même en cas de présence de l'option
+    libérale <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>. Par
+    exemple, pour interdire l'exécution de scripts en autorisant la
+    définition de toute autre option dans les fichiers
+    <code>.htaccess</code>, vous pouvez utiliser :</p>
+
+    <div class="example"><p><code>
+&lt;Directory /&gt;<br />
+<span class="indent">
+Allowoverride All<br />
+</span>
+&lt;/Directory&gt;<br />
+<br />
+&lt;Location /&gt;<br />
+<span class="indent">
+Options +IncludesNoExec -ExecCGI<br />
+</span>
+&lt;/Location&gt;
+    </code></p></div>
+
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="auth" id="auth">Exemple d'authentification</a></h2>
+
+    <p>Si vous accédez directement à ce point du document pour apprendre
+    à effectuer une authentification, il est important de noter ceci. Il
+    existe une fausse idée selon laquelle il serait nécessaire
+    d'utiliser les fichiers <code>.htaccess</code> pour implémenter
+    l'authentification par mot de passe. Ceci est tout simplement faux.
+    Pour y parvenir, il est préférable de mettre les directives
+    d'authentification dans une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> du fichier de configuration de
+    votre serveur principal, et les fichiers <code>.htaccess</code> ne
+    devraient être utilisés que dans le cas où vous n'avez pas accès au
+    fichier de configuration du serveur principal. Voir <a href="#when">ci-dessus</a> pour savoir dans quels cas vous devez ou
+    ne devez pas utiliser les fichiers <code>.htaccess</code>.</p>
+
+    <p>Ceci étant dit, si vous pensez que vous devez quand-même utiliser
+    un fichier <code>.htaccess</code>, vous pouvez utiliser la
+    configuration suivante :</p>
+
+    <p>Contenu du fichier <code>.htaccess</code> :</p>
+
+    <div class="example"><p><code>
+      AuthType Basic<br />
+      AuthName "Password Required"<br />
+      AuthUserFile /www/passwords/password.file<br />
+      AuthGroupFile /www/passwords/group.file<br />
+      Require Group admins
+    </code></p></div>
+
+    <p>Notez que <code>AllowOverride AuthConfig</code> doit être présent
+    pour que ces directives produisent leur effet.</p>
+
+    <p>Vous pouvez vous référer au <a href="auth.html">tutoriel sur
+    l'authentification</a> pour une description plus détaillée de
+    l'authentification et de l'autorisation.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="ssi" id="ssi">Exemple d'Inclusion Côté Serveur (Server Side
+Includes - SSI)</a></h2>
+
+    <p>Les fichiers <code>.htaccess</code> sont aussi couramment
+    utilisés pour activer les SSI pour un répertoire particulier. Pour y
+    parvenir, on utilise les directives de configuration suivantes,
+    placées dans un fichier <code>.htaccess</code> enregistré dans le
+    répertoire considéré :</p>
+
+    <div class="example"><p><code>
+       Options +Includes<br />
+       AddType text/html shtml<br />
+       AddHandler server-parsed shtml
+    </code></p></div>
+
+    <p>Notez que <code>AllowOverride Options</code> et <code>AllowOverride
+    FileInfo</code> doivent être tous les deux présents pour que ces
+    directives puissent produire leur effet.</p>
+
+    <p>Vous pouvez vous référer au <a href="ssi.html">tutoriel SSI</a>
+    pour une description plus détaillée des SSI.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="cgi" id="cgi">Exemple de CGI</a></h2>
+
+    <p>En fin de compte, vous avez décidé d'utiliser un fichier
+    <code>.htaccess</code> pour permettre l'exécution des programmes CGI
+    dans un répertoire particulier. Pour y parvenir, vous pouvez
+    utiliser la configuration suivante :</p>
+
+    <div class="example"><p><code>
+       Options +ExecCGI<br />
+       AddHandler cgi-script cgi pl
+    </code></p></div>
+
+    <p>Alternativement, si vous souhaitez que tous les fichiers d'un
+    répertoire donné soient considérés comme des programmes CGI, vous
+    pouvez utiliser la configuration suivante :</p>
+
+    <div class="example"><p><code>
+       Options +ExecCGI<br />
+       SetHandler cgi-script
+    </code></p></div>
+
+    <p>Notez que <code>AllowOverride Options</code> et <code>AllowOverride
+    FileInfo</code> doivent être tous les deux présents pour que ces
+    directives puissent produire leur effet.</p>
+
+    <p>Vous pouvez vous référer au <a href="cgi.html">tutoriel CGI</a>
+    pour une description plus détaillée de la configuration et de la
+    proprammation CGI.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="troubleshoot" id="troubleshoot">Résolution des problèmes</a></h2>
+
+    <p>De nombreuses raisons peuvent être à l'origine du fait que
+    les directives que vous avez mises dans un fichier
+    <code>.htaccess</code> ne produisent pas l'effet désiré.</p>
+
+    <p>Le plus souvent, le problème vient du fait que la définition de
+    la directive <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>
+    ne permet pas l'activation des directives de votre fichier
+    <code>.htaccess</code>. Vérifiez si une directive
+    <code>AllowOverride None</code> n'affecte pas le répertoire où se
+    trouve votre fichier. Un bon test consiste à mettre des directives
+    dont la syntaxe est erronée dans votre ficher <code>.htaccess</code>
+    et de redémarrer le serveur. Si aucune erreur n'est générée par le
+    serveur, il est pratiquement certain qu'une directive
+    <code>AllowOverride None</code> affecte votre répertoire.</p>
+
+    <p>Par contre, si vous obtenez des erreurs de serveur lorsque vous
+    tentez d'accéder à des documents, consultez votre journal des
+    erreurs d'Apache. Il vous indiquera probablement que la directive
+    utilisée dans votre fichier <code>.htaccess</code> n'est pas
+    permise.</p>
+
+<div class="example"><p><code>
+       [Sat Aug 09 16:19:20 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteLog not allowed here
+</code></p></div>
+       <p>Cela signifie soit que vous utilisez une directive qui n'est
+       jamais permise dans les fichiers <code>.htaccess</code>, soit
+       que vous n'avez tout simplement pas défini la directive
+       <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> à un niveau
+       suffisant pour la directive que vous utilisez. Consultez la
+       documentation de cette directive pour déterminer quel cas
+       s'applique.</p>
+
+       <p>Le journal des erreurs peut aussi vous signaler une erreur de
+       syntaxe dans l'usage de la directive elle-même.</p>
+
+    <div class="example"><p><code>
+    [Sat Aug 09 16:22:34 2008] [alert] [client 192.168.200.51] /var/www/html/.htaccess: RewriteCond: bad flag delimiters
+    </code></p></div>
+
+       <p>Dans ce cas, le message d'erreur sera spécifique à l'erreur
+       de syntaxe que vous avez commise.</p>
+</div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/htaccess.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/htaccess.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/htaccess.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/htaccess.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../pt-br/howto/htaccess.html" hreflang="pt-br" rel="alternate" title="Português (Brasil)">&nbsp;pt-br&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index 6d2dff1fd2877ebd04557f9c7c9d18ab32e1d873..21dd3773ca1a009ca53d93ab1b3c44fe5cc4d63e 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Répertoires web utilisateurs - Serveur Apache HTTP</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Répertoires web utilisateurs</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/public_html.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/public_html.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/public_html.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/public_html.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../tr/howto/public_html.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div>\r
-\r
-<p>Sur les systèmes multi-utilisateurs, on peut permettre à chaque\r
-utilisateur d'avoir un site web dans son répertoire home à l'aide de la\r
-directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>. Les\r
-visiteurs de l'URL <code>http://exemple.com/~nom_utilisateur/</code>\r
-recevront un contenu situé dans le répertoire home de l'utilisateur\r
-"<code>nom_utilisateur</code>", et dans le sous-répertoire spécifié par\r
-la directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>.</p>\r
-<p>Notez que par défaut, l'accès à ces répertoires n'est\r
-<strong>pas</strong> permis. Vous pouvez en permettre l'accès à l'aide\r
-de la directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> en\r
-décommentant la ligne</p>\r
-    <div class="example"><p><code>\r
-      #Include conf/extra/httpd-userdir.conf\r
-    </code></p></div>\r
-    <p>dans le fichier de configuration par défaut, et en adaptant le\r
-    fichier <code>httpd-userdir.conf</code> selon vos besoins, ou en\r
-    incluant les directives appropriées dans une section\r
-    <code>Directory</code> du fichier de configuration principal.</p>\r
-</div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Répertoires web utilisateurs</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#userdir">Définition du chemin des fichiers avec UserDir</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#redirect">Redirection vers des URLs externes</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#enable">Définition de la liste des utilisateurs autorisés à utiliser\r
-    cette fonctionnalité</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#cgi">Définition d'un répertoire CGI pour chaque utilisateur</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#htaccess">Permettre aux utilisateurs de modifier la\r
-    configuration</a></li>\r
-</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../urlmapping.html">Mise en correspondance des URLs\r
-avec le système de fichiers</a></li></ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="related" id="related">Répertoires web utilisateurs</a></h2>\r
-    \r
-    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code></li><li><code class="directive"><a href="../mod/core.html#directorymatch">DirectoryMatch</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li></ul></td></tr></table>\r
-    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="userdir" id="userdir">Définition du chemin des fichiers avec UserDir</a></h2>\r
-    \r
-\r
-    <p>La directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>\r
-    permet de spécifier un répertoire à partir duquel le contenu de\r
-    l'utilisateur pourra être chargé. Elle peut revêtir plusieurs\r
-    formes.</p>\r
-\r
-    <p>Si le chemin spécifié ne commence pas par un slash, il sera\r
-    interprété comme chemin relatif au répertoire home de l'utilisateur\r
-    considéré. Par exemple, avec cette configuration :</p>\r
-\r
-    <div class="example"><p><code>\r
-      UserDir public_html\r
-    </code></p></div>\r
-\r
-    <p>l'URL <code>http://exemple.com/~rbowen/fichier.html</code>\r
-    correspondra au chemin fichier\r
-    <code>/home/rbowen/public_html/fichier.html</code></p>\r
-\r
-    <p>Si le chemin spécifié commence par un slash, le chemin du fichier\r
-    sera construit en utilisant ce chemin, suivi du nom de l'utilisateur\r
-    considéré. Par exemple, avec cette configuration :</p>\r
-\r
-    <div class="example"><p><code>\r
-      UserDir /var/html\r
-    </code></p></div>\r
-\r
-    <p>l'URL <code>http://exemple.com/~rbowen/fichier.html</code>\r
-    correspondra au chemin fichier\r
-    <code>/var/html/rbowen/fichier.html</code></p>\r
-\r
-    <p>Si le chemin spécifié contient un astérisque (*), ce dernier sera\r
-    remplacé par le nom de l'utilisateur dans le chemin du fichier\r
-    correspondant. Par exemple, avec cette configuration :</p>\r
-\r
-    <div class="example"><p><code>\r
-      UserDir /var/www/*/docs\r
-    </code></p></div>\r
-\r
-    <p>l'URL <code>http://exemple.com/~rbowen/fichier.html</code>\r
-    correspondra au chemin fichier\r
-    <code>/var/www/rbowen/docs/fichier.html</code></p>\r
-\r
-    <p>On peut aussi définir plusieurs répertoires ou chemins de\r
-    répertoires.</p>\r
-\r
-    <div class="example"><p><code>\r
-      UserDir public_html /var/html\r
-    </code></p></div>\r
-\r
-    <p>Avec l'URL <code>http://exemple.com/~rbowen/fichier.html</code>,\r
-    Apache va rechercher <code>~rbowen</code>. S'il ne le trouve pas,\r
-    Apache va rechercher <code>rbowen</code> dans\r
-    <code>/var/html</code>. S'il le trouve, l'URL ci-dessus correspondra\r
-    au chemin fichier <code>/var/html/rbowen/file.html</code></p>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="redirect" id="redirect">Redirection vers des URLs externes</a></h2>\r
-    \r
-    <p>On peut utiliser la directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> pour rediriger les requêtes\r
-    relatives aux répertoires utilisateurs vers des URLs externes.</p>\r
-\r
-    <div class="example"><p><code>\r
-      UserDir http://exemple.org/users/*/\r
-    </code></p></div>\r
-\r
-    <p>L'exemple ci-dessus va rediriger une requête pour\r
-    <code>http://exemple.com/~bob/abc.html</code> vers\r
-    <code>http://exemple.org/users/bob/abc.html</code>.</p>\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="enable" id="enable">Définition de la liste des utilisateurs autorisés à utiliser\r
-    cette fonctionnalité</a></h2>\r
-    \r
-\r
-    <p>En suivant la syntaxe décrite dans la documentation de UserDir,\r
-    vous pouvez définir quels utilisateurs sont autorisés à utiliser\r
-    cette fonctionnalité :</p>\r
-\r
-    <div class="example"><p><code>\r
-      UserDir enabled<br />\r
-      UserDir disabled root jro fish\r
-    </code></p></div>\r
-\r
-    <p>La configuration ci-dessus va autoriser l'utilisation de la\r
-    fonctionnalité pour tous les utilisateurs, à l'exception de ceux\r
-    listés à la suite de l'argument <code>disabled</code>. De même, vous\r
-    pouvez interdire l'utilisation de la fonctionnalité à tous les\r
-    utilisateurs sauf certains d'entre eux en utilisant une\r
-    configuration du style :</p>\r
-\r
-    <div class="example"><p><code>\r
-      UserDir disabled<br />\r
-      UserDir enabled rbowen krietz\r
-    </code></p></div>\r
-\r
-    <p>Vous trouverez d'autres exemples dans la documentation de\r
-    <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>.</p>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="cgi" id="cgi">Définition d'un répertoire CGI pour chaque utilisateur</a></h2>\r
-  \r
-\r
-   <p>Afin de réserver un répertoire cgi-bin pour chaque utilisateur,\r
-   vous pouvez utiliser une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> pour activer CGI dans un\r
-   sous-répertoire particulier d'un répertoire home utilisateur.</p>\r
-\r
-    <div class="example"><p><code>\r
-      &lt;Directory /home/*/public_html/cgi-bin/&gt;<br />\r
-       Options ExecCGI<br />\r
-       SetHandler cgi-script<br />\r
-       &lt;/Directory&gt;\r
-    </code></p></div>\r
-\r
-    <p>Avec la configuration ci-dessus, et en supposant que\r
-    <code>UserDir</code> est défini à <code>public_html</code>, un\r
-    programme CGI <code>exemple.cgi</code> pourra être chargé depuis ce\r
-    répertoire en passant par l'URL :</p>\r
-\r
-    <div class="example"><p><code>\r
-    http://exemple.com/~rbowen/cgi-bin/exemple.cgi\r
-    </code></p></div>\r
-\r
-    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="htaccess" id="htaccess">Permettre aux utilisateurs de modifier la\r
-    configuration</a></h2>\r
-    \r
-\r
-    <p>Si vous voulez que vos utilisateurs puissent modifier la\r
-    configuration du serveur pour ce qui concerne leur espace web, ils\r
-    devront utiliser des fichiers <code>.htaccess</code> pour effectuer\r
-    ces modifications. Assurez-vous d'avoir défini la directive\r
-    <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> à une valeur\r
-    appropriée pour les directives dont vous voulez permettre la\r
-    modification aux utilisateurs. Voir le <a href="htaccess.html">tutoriel .htaccess</a> pour plus de détails sur\r
-    la manière dont tout ceci fonctionne.</p>\r
-\r
-  </div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/public_html.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/public_html.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/public_html.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/public_html.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../tr/howto/public_html.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Répertoires web utilisateurs - Serveur Apache HTTP</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Répertoires web utilisateurs</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/public_html.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/public_html.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/public_html.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/public_html.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/howto/public_html.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div>
+
+<p>Sur les systèmes multi-utilisateurs, on peut permettre à chaque
+utilisateur d'avoir un site web dans son répertoire home à l'aide de la
+directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>. Les
+visiteurs de l'URL <code>http://exemple.com/~nom_utilisateur/</code>
+recevront un contenu situé dans le répertoire home de l'utilisateur
+"<code>nom_utilisateur</code>", et dans le sous-répertoire spécifié par
+la directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>.</p>
+<p>Notez que par défaut, l'accès à ces répertoires n'est
+<strong>pas</strong> permis. Vous pouvez en permettre l'accès à l'aide
+de la directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> en
+décommentant la ligne</p>
+    <div class="example"><p><code>
+      #Include conf/extra/httpd-userdir.conf
+    </code></p></div>
+    <p>dans le fichier de configuration par défaut, et en adaptant le
+    fichier <code>httpd-userdir.conf</code> selon vos besoins, ou en
+    incluant les directives appropriées dans une section
+    <code>Directory</code> du fichier de configuration principal.</p>
+</div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Répertoires web utilisateurs</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#userdir">Définition du chemin des fichiers avec UserDir</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#redirect">Redirection vers des URLs externes</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#enable">Définition de la liste des utilisateurs autorisés à utiliser
+    cette fonctionnalité</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#cgi">Définition d'un répertoire CGI pour chaque utilisateur</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#htaccess">Permettre aux utilisateurs de modifier la
+    configuration</a></li>
+</ul><h3>Voir aussi</h3><ul class="seealso"><li><a href="../urlmapping.html">Mise en correspondance des URLs
+avec le système de fichiers</a></li></ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">Répertoires web utilisateurs</a></h2>
+    
+    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code></li><li><code class="directive"><a href="../mod/core.html#directorymatch">DirectoryMatch</a></code></li><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li></ul></td></tr></table>
+    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="userdir" id="userdir">Définition du chemin des fichiers avec UserDir</a></h2>
+    
+
+    <p>La directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>
+    permet de spécifier un répertoire à partir duquel le contenu de
+    l'utilisateur pourra être chargé. Elle peut revêtir plusieurs
+    formes.</p>
+
+    <p>Si le chemin spécifié ne commence pas par un slash, il sera
+    interprété comme chemin relatif au répertoire home de l'utilisateur
+    considéré. Par exemple, avec cette configuration :</p>
+
+    <div class="example"><p><code>
+      UserDir public_html
+    </code></p></div>
+
+    <p>l'URL <code>http://exemple.com/~rbowen/fichier.html</code>
+    correspondra au chemin fichier
+    <code>/home/rbowen/public_html/fichier.html</code></p>
+
+    <p>Si le chemin spécifié commence par un slash, le chemin du fichier
+    sera construit en utilisant ce chemin, suivi du nom de l'utilisateur
+    considéré. Par exemple, avec cette configuration :</p>
+
+    <div class="example"><p><code>
+      UserDir /var/html
+    </code></p></div>
+
+    <p>l'URL <code>http://exemple.com/~rbowen/fichier.html</code>
+    correspondra au chemin fichier
+    <code>/var/html/rbowen/fichier.html</code></p>
+
+    <p>Si le chemin spécifié contient un astérisque (*), ce dernier sera
+    remplacé par le nom de l'utilisateur dans le chemin du fichier
+    correspondant. Par exemple, avec cette configuration :</p>
+
+    <div class="example"><p><code>
+      UserDir /var/www/*/docs
+    </code></p></div>
+
+    <p>l'URL <code>http://exemple.com/~rbowen/fichier.html</code>
+    correspondra au chemin fichier
+    <code>/var/www/rbowen/docs/fichier.html</code></p>
+
+    <p>On peut aussi définir plusieurs répertoires ou chemins de
+    répertoires.</p>
+
+    <div class="example"><p><code>
+      UserDir public_html /var/html
+    </code></p></div>
+
+    <p>Avec l'URL <code>http://exemple.com/~rbowen/fichier.html</code>,
+    Apache va rechercher <code>~rbowen</code>. S'il ne le trouve pas,
+    Apache va rechercher <code>rbowen</code> dans
+    <code>/var/html</code>. S'il le trouve, l'URL ci-dessus correspondra
+    au chemin fichier <code>/var/html/rbowen/file.html</code></p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="redirect" id="redirect">Redirection vers des URLs externes</a></h2>
+    
+    <p>On peut utiliser la directive <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> pour rediriger les requêtes
+    relatives aux répertoires utilisateurs vers des URLs externes.</p>
+
+    <div class="example"><p><code>
+      UserDir http://exemple.org/users/*/
+    </code></p></div>
+
+    <p>L'exemple ci-dessus va rediriger une requête pour
+    <code>http://exemple.com/~bob/abc.html</code> vers
+    <code>http://exemple.org/users/bob/abc.html</code>.</p>
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="enable" id="enable">Définition de la liste des utilisateurs autorisés à utiliser
+    cette fonctionnalité</a></h2>
+    
+
+    <p>En suivant la syntaxe décrite dans la documentation de UserDir,
+    vous pouvez définir quels utilisateurs sont autorisés à utiliser
+    cette fonctionnalité :</p>
+
+    <div class="example"><p><code>
+      UserDir enabled<br />
+      UserDir disabled root jro fish
+    </code></p></div>
+
+    <p>La configuration ci-dessus va autoriser l'utilisation de la
+    fonctionnalité pour tous les utilisateurs, à l'exception de ceux
+    listés à la suite de l'argument <code>disabled</code>. De même, vous
+    pouvez interdire l'utilisation de la fonctionnalité à tous les
+    utilisateurs sauf certains d'entre eux en utilisant une
+    configuration du style :</p>
+
+    <div class="example"><p><code>
+      UserDir disabled<br />
+      UserDir enabled rbowen krietz
+    </code></p></div>
+
+    <p>Vous trouverez d'autres exemples dans la documentation de
+    <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code>.</p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="cgi" id="cgi">Définition d'un répertoire CGI pour chaque utilisateur</a></h2>
+  
+
+   <p>Afin de réserver un répertoire cgi-bin pour chaque utilisateur,
+   vous pouvez utiliser une section <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code> pour activer CGI dans un
+   sous-répertoire particulier d'un répertoire home utilisateur.</p>
+
+    <div class="example"><p><code>
+      &lt;Directory /home/*/public_html/cgi-bin/&gt;<br />
+       Options ExecCGI<br />
+       SetHandler cgi-script<br />
+       &lt;/Directory&gt;
+    </code></p></div>
+
+    <p>Avec la configuration ci-dessus, et en supposant que
+    <code>UserDir</code> est défini à <code>public_html</code>, un
+    programme CGI <code>exemple.cgi</code> pourra être chargé depuis ce
+    répertoire en passant par l'URL :</p>
+
+    <div class="example"><p><code>
+    http://exemple.com/~rbowen/cgi-bin/exemple.cgi
+    </code></p></div>
+
+    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="htaccess" id="htaccess">Permettre aux utilisateurs de modifier la
+    configuration</a></h2>
+    
+
+    <p>Si vous voulez que vos utilisateurs puissent modifier la
+    configuration du serveur pour ce qui concerne leur espace web, ils
+    devront utiliser des fichiers <code>.htaccess</code> pour effectuer
+    ces modifications. Assurez-vous d'avoir défini la directive
+    <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> à une valeur
+    appropriée pour les directives dont vous voulez permettre la
+    modification aux utilisateurs. Voir le <a href="htaccess.html">tutoriel .htaccess</a> pour plus de détails sur
+    la manière dont tout ceci fonctionne.</p>
+
+  </div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/public_html.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/public_html.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/public_html.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/public_html.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/howto/public_html.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index d160762f8c74318631c8b5041cdac11711ed29d7..5301816eab6376762693e43164fce0d9d82bd270 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Tutoriel Apache : Introduction aux "Inclusions Côté Serveur"\r
-(Server Side Includes - SSI) - Serveur Apache HTTP</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache : Introduction aux "Inclusions Côté Serveur"\r
-(Server Side Includes - SSI)</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/ssi.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>\r
-</div>\r
-\r
-<p>Les SSI permettent d'ajouter du contenu dynamique à des documents\r
-HTML préexistants.</p>\r
-</div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Introduction</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#what">Qu'est-ce que SSI ?</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configurer votre serveur pour permettre les SSI</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#basic">Directives SSI de base</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">Exemples additionnels</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#config">Que puis-je configurer d'autre ?</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#exec">Exécution de commandes</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#advanced">Techniques SSI avancées</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Conclusion</a></li>\r
-</ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="related" id="related">Introduction</a></h2>\r
- <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code></li><li><code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code></li><li><code class="directive"><a href="../mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li></ul></td></tr></table>\r
-\r
-    <p>Cet article traite des Inclusions Côté Serveur (Server Side\r
-    Includes), plus communément appelés SSI. Vous trouverez ici la\r
-    manière de configurer votre serveur pour permettre les SSI, ainsi\r
-    qu'une introduction à quelques techniques SSI de base permettant\r
-    d'ajouter du contenu dynamique à vos pages HTML préexistantes.</p>\r
-\r
-    <p>La dernière partie de cet article sera consacrée aux\r
-    configurations SSI plus avancées, telles que les expressions\r
-    conditionnelles dans les directives SSI.</p>\r
-\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="what" id="what">Qu'est-ce que SSI ?</a></h2>\r
-\r
-    <p>SSI (Server Side Includes) est constitué de directives placées dans\r
-    des pages HTML, et évaluées par le serveur au moment où les pages\r
-    sont servies. Elles vous permettent d'ajouter du contenu généré\r
-    dynamiquement à une page HTML préexistante, sans avoir à servir la\r
-    page entière via un programme CGI, ou toute autre technologie de\r
-    contenu dynamique.</p>\r
-\r
-    <p>Le choix entre l'utilisation des SSI et la génération entière de\r
-    la page par un programme quelconque, est en général dicté par la\r
-    proportion de contenu statique et de contenu devant être généré\r
-    chaque fois que la page est servie. SSI est idéal pour ajouter de\r
-    petites quantités d'information, comme l'heure courante. Mais si la\r
-    plus grande partie de votre page est générée au moment où elle est\r
-    servie, vous devez vous tourner vers une autre solution.</p>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="configuring" id="configuring">Configurer votre serveur pour permettre les SSI</a></h2>\r
-\r
-\r
-    <p>Pour permettre l'utilisation des SSI sur votre serveur, vous\r
-    devez ajouter la directive suivante dans votre fichier\r
-    <code>httpd.conf</code>, ou dans un fichier <code>.htaccess</code>\r
-    :</p>\r
-<div class="example"><p><code>\r
-        Options +Includes\r
-</code></p></div>\r
-\r
-    <p>Cette directive indique à Apache que vous désirez permettre la\r
-    recherche de directives SSI lors de l'interprétation des fichiers.\r
-    Notez cependant que la plupart des configurations contiennent de\r
-    nombreuses directives <code class="directive"><a href="../mod/core.html#options">Options</a></code>\r
-    qui peuvent s'écraser les unes les autres. Vous devrez probablement\r
-    appliquer ces directives <code>Options</code> au répertoire\r
-    spécifique pour lequel vous voulez activer les SSI, afin d'être sûr\r
-    qu'elles y seront bien activées.</p>\r
-\r
-    <p>Tout fichier ne fera cependant pas l'objet de recherche de\r
-    directives SSI. Vous devez indiquer à Apache quels fichiers seront\r
-    concernés. Vous pouvez y parvenir en indiquant une extension, comme\r
-    <code>.shtml</code>, à l'aide des directives suivantes :</p>\r
-<div class="example"><p><code>\r
-        AddType text/html .shtml<br />\r
-        AddOutputFilter INCLUDES .shtml\r
-</code></p></div>\r
-\r
-    <p>Un des désavantages de cette approche réside dans le fait que si\r
-    vous voulez ajouter des directives SSI à une page préexistante, vous\r
-    devrez changer le nom de cette page, et donc tout lien qui la\r
-    contient, de façon à ce qu'elle possède l'extension\r
-    <code>.shtml</code>, condition nécessaire pour que les directives\r
-    SSI qu'elle contient soient traitées.</p>\r
-\r
-    <p>Une autre méthode consiste à utiliser la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> :</p>\r
-<div class="example"><p><code>\r
-        XBitHack on\r
-</code></p></div>\r
-\r
-    <p>La directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>\r
-    indique à Apache qu'il doit rechercher des directivves SSI dans les\r
-    fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus\r
-    nécessaire de changer le nom du fichier pour ajouter des directives\r
-    SSI à une page préexistante ; vous devez simplement attribuer les\r
-    droits d'exécution au fichier à l'aide de <code>chmod</code>.</p>\r
-<div class="example"><p><code>\r
-        chmod +x pagename.html\r
-</code></p></div>\r
-\r
-    <p>Un bref commentaire sur ce qu'il ne faut pas faire. Certaines\r
-    personnes peuvent vous conseiller de tout simplement indiquer à\r
-    Apache de rechercher des directives SSI dans tous les fichiers\r
-    <code>.html</code>, ce qui vous évite d'avoir à gérer les noms de\r
-    fichiers avec extension <code>.shtml</code>. Ils n'ont probablement\r
-    pas entendu parler de la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>. En effet, vous devez\r
-    garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher\r
-    des directives SSI dans chaque fichier qu'il sert, même s'il n'en\r
-    contient aucune. Ce n'est donc pas une bonne idée car les\r
-    performances peuvent en être sensiblement affectées.</p>\r
-\r
-    <p>Bien entendu, sous Windows, il n'y a pas de bit d'exécution à\r
-    positionner, ce qui limite un peu vos choix.</p>\r
-\r
-    <p>Dans sa configuration par défaut, Apache n'envoie pas la date de\r
-    dernière modification ou les en-têtes HTTP relatifs à la taille des\r
-    contenus dans les pages SSI, car ses valeurs sont difficiles à\r
-    calculer pour les contenus dynamiques. Ceci peut induire une\r
-    impression de diminution des performances côté client, en empêchant\r
-    la mise en cache de votre document. Il existe deux méthodes pour\r
-    résoudre ce problème :</p>\r
-\r
-    <ol>\r
-      <li>Utilisez la configuration <code>XBitHack Full</code>. Elle\r
-      indique à Apache de déterminer la date de dernière modification en\r
-      ne regardant que la date du fichier à l'origine de la requête,\r
-      tout en ignorant la date de modification de tout fichier inclus.</li>\r
-\r
-      <li>Utilisez les directives fournies par le module\r
-      <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> pour définir de manière explicite la\r
-      date d'expiration de vos fichiers, laissant par la-même\r
-      aux navigateurs et aux mandataires le soin de déterminer s'il est\r
-      opportun ou non de les mettre en cache.</li>\r
-    </ol>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="basic" id="basic">Directives SSI de base</a></h2>\r
-\r
-    <p>Les directives SSI adoptent la syntaxe suivante :</p>\r
-<div class="example"><p><code>\r
-        &lt;!--#élément attribut=valeur attribut=valeur ... --&gt;\r
-</code></p></div>\r
-\r
-    <p>Le format d'une directive SSI étant similaire à celui d'un\r
-    commentaire HTML, si vous n'avez pas activé correctement SSI, le\r
-    navigateur l'ignorera, mais elle sera encore visible dans le source\r
-    HTML. Si SSI est correctement configuré, la directive sera remplacée\r
-    par ses résultats.</p>\r
-\r
-    <p>"élément" peut prendre de nombreuses formes, et nous décrirons\r
-    plus précisément la plupart d'entre eux dans la prochaine version de\r
-    ce document. Pour le moment, voici quelques exemples de ce que vous\r
-    pouvez faire avec SSI.</p>\r
-\r
-<h3><a name="todaysdate" id="todaysdate">La date courante</a></h3>\r
-\r
-<div class="example"><p><code>\r
-        &lt;!--#echo var="DATE_LOCAL" --&gt;\r
-</code></p></div>\r
-\r
-    <p>L'élément <code>echo</code> permet d'afficher la valeur d'une\r
-    variable. Il existe un grand nombre de variables standards, y\r
-    compris l'ensemble des variables d'environnement disponibles pour\r
-    les programmes CGI. De plus, vous pouvez définir vos propres\r
-    variables à l'aide de l'élément <code>set</code>.</p>\r
-\r
-    <p>Si vous n'aimez pas le format sous lequel la date s'affiche, vous\r
-    pouvez utiliser l'élément <code>config</code> avec un attribut\r
-    <code>timefmt</code>, pour le modifier.</p>\r
-\r
-<div class="example"><p><code>\r
-        &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />\r
-        Today is &lt;!--#echo var="DATE_LOCAL" --&gt;\r
-</code></p></div>\r
-\r
-\r
-<h3><a name="lastmodified" id="lastmodified">Date de modification du fichier</a></h3>\r
-\r
-<div class="example"><p><code>\r
-        Dernière modification du document &lt;!--#flastmod file="index.html" --&gt;\r
-</code></p></div>\r
-\r
-    <p>Le format peut là aussi être modifié à l'aide de l'attribut\r
-    <code>timefmt</code>.</p>\r
-\r
-\r
-<h3><a name="cgi" id="cgi">Inclusion des résultats d'un programme CGI</a></h3>\r
-\r
-    <p>C'est le cas le plus courant d'utilisation des SSI - afficher les\r
-    résultats d'un programme CGI, comme l'universellement adoré\r
-    "compteur d'accès".</p>\r
-\r
-<div class="example"><p><code>\r
-        &lt;!--#include virtual="/cgi-bin/counter.pl" --&gt;\r
-</code></p></div>\r
-\r
-\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="additionalexamples" id="additionalexamples">Exemples additionnels</a></h2>\r
-\r
-\r
-    <p>Vous trouverez dans ce qui suit quelques exemples spécifiques de\r
-    ce que vous pouvez faire de vos documents HTML avec SSI.</p>\r
-\r
-<h3><a name="docmodified" id="docmodified">Quand ce document a-t-il été modifié ?</a></h3>\r
-\r
-    <p>Nous avons mentionné plus haut que vous pouviez utiliser SSI pour\r
-    informer l'utilisateur de la date de dernière modification du\r
-    document. Cependant, la méthode pour y parvenir n'a pas été vraiment\r
-    abordée. Placé dans votre document HTML, le code suivant va insérer\r
-    un repère de temps dans votre page. Bien entendu, SSI devra avoir\r
-    été correctement activé, comme décrit plus haut.</p>\r
-<div class="example"><p><code>\r
-        &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />\r
-        Dernière modification du fichier &lt;!--#flastmod file="ssi.shtml" --&gt;\r
-</code></p></div>\r
-\r
-    <p>Bien entendu, vous devez remplacer <code>ssi.shtml</code> par le\r
-    nom du fichier auquel vous faites référence. Ceci ne conviendra pas\r
-    si vous recherchez un morceau de code générique que vous pourrez\r
-    insérer dans tout fichier ; dans ce cas, il est préférable\r
-    d'utiliser la variable <code>LAST_MODIFIED</code> :</p>\r
-<div class="example"><p><code>\r
-        &lt;!--#config timefmt="%D" --&gt;<br />\r
-        This file last modified &lt;!--#echo var="LAST_MODIFIED" --&gt;\r
-</code></p></div>\r
-\r
-    <p>Pour plus de détails sur le format <code>timefmt</code>, tapez\r
-    <code>strftime</code> dans votre moteur de recherche préferé. La\r
-    syntaxe est identique.</p>\r
-\r
-\r
-<h3><a name="standard-footer" id="standard-footer">Inclusion d'un pied de page standard</a></h3>\r
-\r
-\r
-    <p>Si le site que vous gérez comporte plus que quelques pages, vous\r
-    allez vite vous apercevoir qu'effectuer des modifications sur toutes\r
-    ces pages peut devenir très contraignant, en particulier si vous\r
-    voulez qu'elles conservent un aspect homogène.</p>\r
-\r
-    <p>Inclure un fichier pour un en-tête et/ou un pied de page peut\r
-    simplifier cette corvée de mises à jour. Il vous suffit de\r
-    confectionner un fichier de pied de page, et de l'inclure dans\r
-    chaque page à l'aide de l'élément SSI <code>include</code>. Pour\r
-    définir le fichier à inclure, l'élément <code>include</code> peut\r
-    utiliser soit l'attribut <code>file</code>, soit l'attribut\r
-    <code>virtual</code>. L'attribut <code>file</code> est un chemin de\r
-    fichier <em>relatif au répertoire courant</em>. C'est à dire qu'il\r
-    ne peut ni avoir pour valeur un chemin absolu (commençant par /), ni\r
-    comporter "../" dans son chemin. L'attribut <code>virtual</code> est\r
-    probablement plus commode, et peut spécifier une URL relative au\r
-    document servi. Elle peut commencer par un /, mais le fichier inclus\r
-    et le fichier servi doivent résider sur le même serveur.</p>\r
-<div class="example"><p><code>\r
-        &lt;!--#include virtual="/footer.html" --&gt;\r
-</code></p></div>\r
-\r
-    <p>Je combinerai souvent ces deux derniers points, en ajoutant une\r
-    directive <code>LAST_MODIFIED</code> dans un fichier de pied de page\r
-    destiné à être inclus. Le fichier inclus peut contenir des\r
-    directives SSI, et les inclusions peuvent être imbriquées - à\r
-    savoir, le fichier inclus peut inclure un autre fichier, etc...</p>\r
-\r
-\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="config" id="config">Que puis-je configurer d'autre ?</a></h2>\r
-\r
-\r
-    <p>En plus du format de date, vous pouvez utiliser l'élément\r
-    <code>config</code> pour configurer deux autres choses.</p>\r
-\r
-    <p>En général, lorsque quelque chose se passe mal avec votre\r
-    directive SSI, vous recevez le message :</p>\r
-<div class="example"><p><code>\r
-        [an error occurred while processing this directive]\r
-</code></p></div>\r
-\r
-    <p>Pour modifier ce message, vous pouvez utiliser l'attribut\r
-    <code>errmsg</code> avec l'élément <code>config</code> :</p>\r
-<div class="example"><p><code>\r
-        &lt;!--#config errmsg="[Il semblerait que vous ne sachiez pas\r
-       utiliser les SSI]" --&gt;\r
-</code></p></div>\r
-\r
-    <p>Il est cependant probable que les utilisateurs finaux ne voient\r
-    jamais ce message, car vous aurez résolu tous les problèmes issus de\r
-    vos directives SSI avant que votre site ne soit mis en production.\r
-    (N'est-ce pas ?)</p>\r
-\r
-    <p>Vous pouvez aussi modifier le format sous lequel les tailles de\r
-    fichiers sont affichées à l'aide de l'attribut <code>sizefmt</code>.\r
-    Vous pouvez spécifier <code>bytes</code> pour un affichage en\r
-    octets, ou <code>abbrev</code> pour un affichage plus concis en Ko\r
-    ou Mo, selon le cas.</p>\r
-    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="exec" id="exec">Exécution de commandes</a></h2>\r
-    \r
-\r
-    <p>J'ai pour projet, dans les prochains mois, d'écrire un article à\r
-    propos de l'utilisation des SSI avec des petits programmes CGI. Pour\r
-    l'instant, voici ce que vous pouvez faire avec l'élément\r
-    <code>exec</code>. Vous pouvez vraiment faire exécuter une commande\r
-    par SSI en utilisant le shell (<code>/bin/sh</code>, pour être plus\r
-    précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce\r
-    qui suit vous permet d'afficher le contenu d'un répertoire.</p>\r
-<div class="example"><p><code>\r
-        &lt;pre&gt;<br />\r
-        &lt;!--#exec cmd="ls" --&gt;<br />\r
-        &lt;/pre&gt;\r
-</code></p></div>\r
-\r
-    <p>ou, sous Windows</p>\r
-<div class="example"><p><code>\r
-        &lt;pre&gt;<br />\r
-        &lt;!--#exec cmd="dir" --&gt;<br />\r
-        &lt;/pre&gt;\r
-</code></p></div>\r
-\r
-    <p>Vous noterez probablement l'étrange formatage provoqué par cette\r
-    directive sous Windows, car la sortie de <code>dir</code> contient\r
-    la chaîne  de caractères "&lt;<code>dir</code>&gt;", ce qui trompe le\r
-    navigateur.</p>\r
-\r
-    <p>Notez que cette fonctionnalité est très dangereuse, car elle va\r
-    permettre d'exécuter tout code associé à l'élément\r
-    <code>exec</code>. Si vous êtes dans la situation où les\r
-    utilisateurs peuvent éditer le contenu de vos pages web, dans le cas\r
-    d'un "livre d'or" par exemple, assurez-vous de désactiver cette\r
-    fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver\r
-    la fonctionnalité <code>exec</code> à l'aide de l'argument\r
-    <code>IncludesNOEXEC</code> de la directive\r
-    <code>Options</code>.</p>\r
-    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="advanced" id="advanced">Techniques SSI avancées</a></h2>\r
-\r
-\r
-    <p>Outre l'affichage de contenu, les SSI d'Apache vous permettent de\r
-    définir des variables, et de les utiliser dans des comparaisons et\r
-    des conditions.</p>\r
-\r
-<h3><a name="caveat" id="caveat">Mise en garde</a></h3>\r
-\r
-    <p>La plupart des fonctionnalités décrites dans cet article ne sont\r
-    disponibles que si vous utilisez la version 1.2 ou supérieure\r
-    d'Apache. Bien entendu, si ce n'est pas le cas, vous devez faire une\r
-    mise à jour immédiatement, et même plus tôt. Allez-y. Faites-le\r
-    maintenant. Nous attendrons.</p>\r
-\r
-\r
-<h3><a name="variables" id="variables">Définition de variables</a></h3>\r
-\r
-    <p>Avec l'élément <code>set</code>, vous pouvez définir des\r
-    variables pour un usage ultérieur. Comme nous en aurons besoin plus\r
-    loin, nous allons en parler tout de suite. La syntaxe se présente\r
-    comme suit :</p>\r
-<div class="example"><p><code>\r
-        &lt;!--#set var="name" value="Rich" --&gt;\r
-</code></p></div>\r
-\r
-    <p>Pour affecter une valeur à vos variables, en plus de la\r
-    définition littérale de l'exemple ci-dessus, vous pouvez utiliser\r
-    une autre variable, y compris les <a href="../env.html">variables d'environnement</a>, ou les variables\r
-    décrites plus haut (comme <code>LAST_MODIFIED</code> par exemple).\r
-    Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous\r
-    devez utiliser le symbole dollar ($) devant le nom de la\r
-    variable.</p>\r
-\r
-    <div class="example"><p><code> &lt;!--#set var="modified" value="$LAST_MODIFIED" --&gt;\r
-    </code></p></div>\r
-\r
-    <p>Pour insérer un caractère $ dans la valeur de votre variable,\r
-    vous devez l'échapper à l'aide d'un backslash.</p>\r
-<div class="example"><p><code>\r
-        &lt;!--#set var="cost" value="\$100" --&gt;\r
-</code></p></div>\r
-\r
-    <p>Enfin, si vous voulez insérer une variable dans une chaîne, et\r
-    s'il y a une chance pour que le nom de la variable se confonde avec\r
-    le reste de la chaîne, vous pouvez l'entourer d'accolades pour\r
-    eviter toute confusion (Il est difficile de trouver un bon exemple\r
-    pour illustrer ceci, mais j'espère que vous comprendrez).</p>\r
-<div class="example"><p><code>\r
-        &lt;!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --&gt;\r
-</code></p></div>\r
-\r
-\r
-<h3><a name="conditional" id="conditional">Expressions conditionnelles</a></h3>\r
-\r
-\r
-    <p>Maintenent que nous avons des variables, et que nous pouvons\r
-    définir et comparer leurs valeurs, nous sommes à même de les\r
-    utiliser dans des expressions conditionnelles. Ceci confère à SSI le\r
-    statut de petit langage de programmation.\r
-    <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> fournit une structure <code>if</code>,\r
-    <code>elif</code>, <code>else</code>, <code>endif</code> pour la\r
-    construction d'expressions conditionnelles, ce qui vous permet de\r
-    générer plusieurs pages logiques à partir d'une seule vraie\r
-    page.</p>\r
-\r
-    <p>La structure de l'expression conditionnelle est :</p>\r
-<div class="example"><p><code>\r
-    &lt;!--#if expr="condition" --&gt;<br />\r
-    &lt;!--#elif expr="condition" --&gt;<br />\r
-    &lt;!--#else --&gt;<br />\r
-    &lt;!--#endif --&gt;\r
-</code></p></div>\r
-\r
-    <p>Une <em>condition</em> peut revêtir la forme de toute comparaison\r
-    logique - soit une comparaison de valeurs avec une autre, soit une\r
-    vérification de la "vérité" d'une valeur particulière (Une chaîne\r
-    donnée est vraie si elle n'est pas vide). Pour une liste exhaustive\r
-    des opérateurs de comparaison disponibles, voir la documentation du\r
-    module <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>. Voici quelques exemples\r
-    illustrant l'utilisation de ces expressions.</p>\r
-\r
-    <p>Vous pouvez ajouter les lignes suivantes dans votre fichier de\r
-    configuration :</p>\r
-<div class="example"><p><code>\r
-        BrowserMatchNoCase macintosh Mac<br />\r
-        BrowserMatchNoCase MSIE InternetExplorer\r
-</code></p></div>\r
-\r
-    <p>Ces lignes définissent les variables d'environnement "Mac" et\r
-    "InternetExplorer" à true, si le client utilise InternetExplorer sur\r
-    un Macintosh.</p>\r
-\r
-    <p>Puis, dans votre document où les SSI sont activées, vous ajoutez\r
-    ceci :</p>\r
-<div class="example"><p><code>\r
-        &lt;!--#if expr="${Mac} &amp;&amp; ${InternetExplorer}" --&gt;<br />\r
-        Un texte d'excuses est inséré ici<br />\r
-        &lt;!--#else --&gt;<br />\r
-        Ici se trouve du code JavaScipt sympa<br />\r
-        &lt;!--#endif --&gt;\r
-</code></p></div>\r
-\r
-    <p>Notez que je n'ai rien contre IE sur Macintosh - J'ai juste\r
-    phosphoré quelques heures la semaine dernière pour faire fonctionner\r
-    du JavaScript sous IE sur Macintosh, alors qu'il fonctionnait sous\r
-    tout autre environnement. Ce qui précède a constitué un\r
-    contournement provisoire.</p>\r
-\r
-    <p>Toute autre variable (que vous avez définie, ou une variable\r
-    d'environnement normale) peut être utilisée dans les expressions\r
-    conditionnelles. Associée à la possibilité avec Apache de définir\r
-    des variables d'environnement à l'aide de directives\r
-    <code>SetEnvIf</code>, ainsi que d'autres directives en rapport,\r
-    cette fonctionnalité vous permet d'ajouter des contenus dynamiques\r
-    assez évolués sans avoir recours aux programmes CGI.</p>\r
-\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="conclusion" id="conclusion">Conclusion</a></h2>\r
-\r
-    <p>SSI ne remplace certainement pas CGI, ou d'autres technologies\r
-    utilisées pour la génération de pages web dynamiques. Mais c'est une\r
-    bonne méthode pour ajouter des petits contenus dynamiques à vos\r
-    pages, sans devoir fournir un gros effort supplémentaire.</p>\r
-</div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/howto/ssi.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Tutoriel Apache : Introduction aux "Inclusions Côté Serveur"
+(Server Side Includes - SSI) - Serveur Apache HTTP</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Recettes et tutoriels</a></div><div id="page-content"><div id="preamble"><h1>Tutoriel Apache : Introduction aux "Inclusions Côté Serveur"
+(Server Side Includes - SSI)</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/ssi.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
+</div>
+
+<p>Les SSI permettent d'ajouter du contenu dynamique à des documents
+HTML préexistants.</p>
+</div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Introduction</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#what">Qu'est-ce que SSI ?</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#configuring">Configurer votre serveur pour permettre les SSI</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#basic">Directives SSI de base</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#additionalexamples">Exemples additionnels</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#config">Que puis-je configurer d'autre ?</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#exec">Exécution de commandes</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#advanced">Techniques SSI avancées</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#conclusion">Conclusion</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="related" id="related">Introduction</a></h2>
+ <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></li><li><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code></li><li><code class="directive"><a href="../mod/mod_mime.html#addtype">AddType</a></code></li><li><code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code></li><li><code class="directive"><a href="../mod/mod_setenvif.html#browsermatchnocase">BrowserMatchNoCase</a></code></li></ul></td></tr></table>
+
+    <p>Cet article traite des Inclusions Côté Serveur (Server Side
+    Includes), plus communément appelés SSI. Vous trouverez ici la
+    manière de configurer votre serveur pour permettre les SSI, ainsi
+    qu'une introduction à quelques techniques SSI de base permettant
+    d'ajouter du contenu dynamique à vos pages HTML préexistantes.</p>
+
+    <p>La dernière partie de cet article sera consacrée aux
+    configurations SSI plus avancées, telles que les expressions
+    conditionnelles dans les directives SSI.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="what" id="what">Qu'est-ce que SSI ?</a></h2>
+
+    <p>SSI (Server Side Includes) est constitué de directives placées dans
+    des pages HTML, et évaluées par le serveur au moment où les pages
+    sont servies. Elles vous permettent d'ajouter du contenu généré
+    dynamiquement à une page HTML préexistante, sans avoir à servir la
+    page entière via un programme CGI, ou toute autre technologie de
+    contenu dynamique.</p>
+
+    <p>Le choix entre l'utilisation des SSI et la génération entière de
+    la page par un programme quelconque, est en général dicté par la
+    proportion de contenu statique et de contenu devant être généré
+    chaque fois que la page est servie. SSI est idéal pour ajouter de
+    petites quantités d'information, comme l'heure courante. Mais si la
+    plus grande partie de votre page est générée au moment où elle est
+    servie, vous devez vous tourner vers une autre solution.</p>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="configuring" id="configuring">Configurer votre serveur pour permettre les SSI</a></h2>
+
+
+    <p>Pour permettre l'utilisation des SSI sur votre serveur, vous
+    devez ajouter la directive suivante dans votre fichier
+    <code>httpd.conf</code>, ou dans un fichier <code>.htaccess</code>
+    :</p>
+<div class="example"><p><code>
+        Options +Includes
+</code></p></div>
+
+    <p>Cette directive indique à Apache que vous désirez permettre la
+    recherche de directives SSI lors de l'interprétation des fichiers.
+    Notez cependant que la plupart des configurations contiennent de
+    nombreuses directives <code class="directive"><a href="../mod/core.html#options">Options</a></code>
+    qui peuvent s'écraser les unes les autres. Vous devrez probablement
+    appliquer ces directives <code>Options</code> au répertoire
+    spécifique pour lequel vous voulez activer les SSI, afin d'être sûr
+    qu'elles y seront bien activées.</p>
+
+    <p>Tout fichier ne fera cependant pas l'objet de recherche de
+    directives SSI. Vous devez indiquer à Apache quels fichiers seront
+    concernés. Vous pouvez y parvenir en indiquant une extension, comme
+    <code>.shtml</code>, à l'aide des directives suivantes :</p>
+<div class="example"><p><code>
+        AddType text/html .shtml<br />
+        AddOutputFilter INCLUDES .shtml
+</code></p></div>
+
+    <p>Un des désavantages de cette approche réside dans le fait que si
+    vous voulez ajouter des directives SSI à une page préexistante, vous
+    devrez changer le nom de cette page, et donc tout lien qui la
+    contient, de façon à ce qu'elle possède l'extension
+    <code>.shtml</code>, condition nécessaire pour que les directives
+    SSI qu'elle contient soient traitées.</p>
+
+    <p>Une autre méthode consiste à utiliser la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code> :</p>
+<div class="example"><p><code>
+        XBitHack on
+</code></p></div>
+
+    <p>La directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>
+    indique à Apache qu'il doit rechercher des directivves SSI dans les
+    fichiers si leur bit d'exécution est positionné. Il n'est ainsi plus
+    nécessaire de changer le nom du fichier pour ajouter des directives
+    SSI à une page préexistante ; vous devez simplement attribuer les
+    droits d'exécution au fichier à l'aide de <code>chmod</code>.</p>
+<div class="example"><p><code>
+        chmod +x pagename.html
+</code></p></div>
+
+    <p>Un bref commentaire sur ce qu'il ne faut pas faire. Certaines
+    personnes peuvent vous conseiller de tout simplement indiquer à
+    Apache de rechercher des directives SSI dans tous les fichiers
+    <code>.html</code>, ce qui vous évite d'avoir à gérer les noms de
+    fichiers avec extension <code>.shtml</code>. Ils n'ont probablement
+    pas entendu parler de la directive <code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>. En effet, vous devez
+    garder à l'esprit qu'en faisant ceci, Apache va devoir rechercher
+    des directives SSI dans chaque fichier qu'il sert, même s'il n'en
+    contient aucune. Ce n'est donc pas une bonne idée car les
+    performances peuvent en être sensiblement affectées.</p>
+
+    <p>Bien entendu, sous Windows, il n'y a pas de bit d'exécution à
+    positionner, ce qui limite un peu vos choix.</p>
+
+    <p>Dans sa configuration par défaut, Apache n'envoie pas la date de
+    dernière modification ou les en-têtes HTTP relatifs à la taille des
+    contenus dans les pages SSI, car ses valeurs sont difficiles à
+    calculer pour les contenus dynamiques. Ceci peut induire une
+    impression de diminution des performances côté client, en empêchant
+    la mise en cache de votre document. Il existe deux méthodes pour
+    résoudre ce problème :</p>
+
+    <ol>
+      <li>Utilisez la configuration <code>XBitHack Full</code>. Elle
+      indique à Apache de déterminer la date de dernière modification en
+      ne regardant que la date du fichier à l'origine de la requête,
+      tout en ignorant la date de modification de tout fichier inclus.</li>
+
+      <li>Utilisez les directives fournies par le module
+      <code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code> pour définir de manière explicite la
+      date d'expiration de vos fichiers, laissant par la-même
+      aux navigateurs et aux mandataires le soin de déterminer s'il est
+      opportun ou non de les mettre en cache.</li>
+    </ol>
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="basic" id="basic">Directives SSI de base</a></h2>
+
+    <p>Les directives SSI adoptent la syntaxe suivante :</p>
+<div class="example"><p><code>
+        &lt;!--#élément attribut=valeur attribut=valeur ... --&gt;
+</code></p></div>
+
+    <p>Le format d'une directive SSI étant similaire à celui d'un
+    commentaire HTML, si vous n'avez pas activé correctement SSI, le
+    navigateur l'ignorera, mais elle sera encore visible dans le source
+    HTML. Si SSI est correctement configuré, la directive sera remplacée
+    par ses résultats.</p>
+
+    <p>"élément" peut prendre de nombreuses formes, et nous décrirons
+    plus précisément la plupart d'entre eux dans la prochaine version de
+    ce document. Pour le moment, voici quelques exemples de ce que vous
+    pouvez faire avec SSI.</p>
+
+<h3><a name="todaysdate" id="todaysdate">La date courante</a></h3>
+
+<div class="example"><p><code>
+        &lt;!--#echo var="DATE_LOCAL" --&gt;
+</code></p></div>
+
+    <p>L'élément <code>echo</code> permet d'afficher la valeur d'une
+    variable. Il existe un grand nombre de variables standards, y
+    compris l'ensemble des variables d'environnement disponibles pour
+    les programmes CGI. De plus, vous pouvez définir vos propres
+    variables à l'aide de l'élément <code>set</code>.</p>
+
+    <p>Si vous n'aimez pas le format sous lequel la date s'affiche, vous
+    pouvez utiliser l'élément <code>config</code> avec un attribut
+    <code>timefmt</code>, pour le modifier.</p>
+
+<div class="example"><p><code>
+        &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
+        Today is &lt;!--#echo var="DATE_LOCAL" --&gt;
+</code></p></div>
+
+
+<h3><a name="lastmodified" id="lastmodified">Date de modification du fichier</a></h3>
+
+<div class="example"><p><code>
+        Dernière modification du document &lt;!--#flastmod file="index.html" --&gt;
+</code></p></div>
+
+    <p>Le format peut là aussi être modifié à l'aide de l'attribut
+    <code>timefmt</code>.</p>
+
+
+<h3><a name="cgi" id="cgi">Inclusion des résultats d'un programme CGI</a></h3>
+
+    <p>C'est le cas le plus courant d'utilisation des SSI - afficher les
+    résultats d'un programme CGI, comme l'universellement adoré
+    "compteur d'accès".</p>
+
+<div class="example"><p><code>
+        &lt;!--#include virtual="/cgi-bin/counter.pl" --&gt;
+</code></p></div>
+
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="additionalexamples" id="additionalexamples">Exemples additionnels</a></h2>
+
+
+    <p>Vous trouverez dans ce qui suit quelques exemples spécifiques de
+    ce que vous pouvez faire de vos documents HTML avec SSI.</p>
+
+<h3><a name="docmodified" id="docmodified">Quand ce document a-t-il été modifié ?</a></h3>
+
+    <p>Nous avons mentionné plus haut que vous pouviez utiliser SSI pour
+    informer l'utilisateur de la date de dernière modification du
+    document. Cependant, la méthode pour y parvenir n'a pas été vraiment
+    abordée. Placé dans votre document HTML, le code suivant va insérer
+    un repère de temps dans votre page. Bien entendu, SSI devra avoir
+    été correctement activé, comme décrit plus haut.</p>
+<div class="example"><p><code>
+        &lt;!--#config timefmt="%A %B %d, %Y" --&gt;<br />
+        Dernière modification du fichier &lt;!--#flastmod file="ssi.shtml" --&gt;
+</code></p></div>
+
+    <p>Bien entendu, vous devez remplacer <code>ssi.shtml</code> par le
+    nom du fichier auquel vous faites référence. Ceci ne conviendra pas
+    si vous recherchez un morceau de code générique que vous pourrez
+    insérer dans tout fichier ; dans ce cas, il est préférable
+    d'utiliser la variable <code>LAST_MODIFIED</code> :</p>
+<div class="example"><p><code>
+        &lt;!--#config timefmt="%D" --&gt;<br />
+        This file last modified &lt;!--#echo var="LAST_MODIFIED" --&gt;
+</code></p></div>
+
+    <p>Pour plus de détails sur le format <code>timefmt</code>, tapez
+    <code>strftime</code> dans votre moteur de recherche préferé. La
+    syntaxe est identique.</p>
+
+
+<h3><a name="standard-footer" id="standard-footer">Inclusion d'un pied de page standard</a></h3>
+
+
+    <p>Si le site que vous gérez comporte plus que quelques pages, vous
+    allez vite vous apercevoir qu'effectuer des modifications sur toutes
+    ces pages peut devenir très contraignant, en particulier si vous
+    voulez qu'elles conservent un aspect homogène.</p>
+
+    <p>Inclure un fichier pour un en-tête et/ou un pied de page peut
+    simplifier cette corvée de mises à jour. Il vous suffit de
+    confectionner un fichier de pied de page, et de l'inclure dans
+    chaque page à l'aide de l'élément SSI <code>include</code>. Pour
+    définir le fichier à inclure, l'élément <code>include</code> peut
+    utiliser soit l'attribut <code>file</code>, soit l'attribut
+    <code>virtual</code>. L'attribut <code>file</code> est un chemin de
+    fichier <em>relatif au répertoire courant</em>. C'est à dire qu'il
+    ne peut ni avoir pour valeur un chemin absolu (commençant par /), ni
+    comporter "../" dans son chemin. L'attribut <code>virtual</code> est
+    probablement plus commode, et peut spécifier une URL relative au
+    document servi. Elle peut commencer par un /, mais le fichier inclus
+    et le fichier servi doivent résider sur le même serveur.</p>
+<div class="example"><p><code>
+        &lt;!--#include virtual="/footer.html" --&gt;
+</code></p></div>
+
+    <p>Je combinerai souvent ces deux derniers points, en ajoutant une
+    directive <code>LAST_MODIFIED</code> dans un fichier de pied de page
+    destiné à être inclus. Le fichier inclus peut contenir des
+    directives SSI, et les inclusions peuvent être imbriquées - à
+    savoir, le fichier inclus peut inclure un autre fichier, etc...</p>
+
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="config" id="config">Que puis-je configurer d'autre ?</a></h2>
+
+
+    <p>En plus du format de date, vous pouvez utiliser l'élément
+    <code>config</code> pour configurer deux autres choses.</p>
+
+    <p>En général, lorsque quelque chose se passe mal avec votre
+    directive SSI, vous recevez le message :</p>
+<div class="example"><p><code>
+        [an error occurred while processing this directive]
+</code></p></div>
+
+    <p>Pour modifier ce message, vous pouvez utiliser l'attribut
+    <code>errmsg</code> avec l'élément <code>config</code> :</p>
+<div class="example"><p><code>
+        &lt;!--#config errmsg="[Il semblerait que vous ne sachiez pas
+       utiliser les SSI]" --&gt;
+</code></p></div>
+
+    <p>Il est cependant probable que les utilisateurs finaux ne voient
+    jamais ce message, car vous aurez résolu tous les problèmes issus de
+    vos directives SSI avant que votre site ne soit mis en production.
+    (N'est-ce pas ?)</p>
+
+    <p>Vous pouvez aussi modifier le format sous lequel les tailles de
+    fichiers sont affichées à l'aide de l'attribut <code>sizefmt</code>.
+    Vous pouvez spécifier <code>bytes</code> pour un affichage en
+    octets, ou <code>abbrev</code> pour un affichage plus concis en Ko
+    ou Mo, selon le cas.</p>
+    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="exec" id="exec">Exécution de commandes</a></h2>
+    
+
+    <p>J'ai pour projet, dans les prochains mois, d'écrire un article à
+    propos de l'utilisation des SSI avec des petits programmes CGI. Pour
+    l'instant, voici ce que vous pouvez faire avec l'élément
+    <code>exec</code>. Vous pouvez vraiment faire exécuter une commande
+    par SSI en utilisant le shell (<code>/bin/sh</code>, pour être plus
+    précis - ou le shell DOS, si vous êtes sous Win32). Par exemple, ce
+    qui suit vous permet d'afficher le contenu d'un répertoire.</p>
+<div class="example"><p><code>
+        &lt;pre&gt;<br />
+        &lt;!--#exec cmd="ls" --&gt;<br />
+        &lt;/pre&gt;
+</code></p></div>
+
+    <p>ou, sous Windows</p>
+<div class="example"><p><code>
+        &lt;pre&gt;<br />
+        &lt;!--#exec cmd="dir" --&gt;<br />
+        &lt;/pre&gt;
+</code></p></div>
+
+    <p>Vous noterez probablement l'étrange formatage provoqué par cette
+    directive sous Windows, car la sortie de <code>dir</code> contient
+    la chaîne  de caractères "&lt;<code>dir</code>&gt;", ce qui trompe le
+    navigateur.</p>
+
+    <p>Notez que cette fonctionnalité est très dangereuse, car elle va
+    permettre d'exécuter tout code associé à l'élément
+    <code>exec</code>. Si vous êtes dans la situation où les
+    utilisateurs peuvent éditer le contenu de vos pages web, dans le cas
+    d'un "livre d'or" par exemple, assurez-vous de désactiver cette
+    fonctionnalité. Vous pouvez, tout en permettant les SSI, désactiver
+    la fonctionnalité <code>exec</code> à l'aide de l'argument
+    <code>IncludesNOEXEC</code> de la directive
+    <code>Options</code>.</p>
+    </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="advanced" id="advanced">Techniques SSI avancées</a></h2>
+
+
+    <p>Outre l'affichage de contenu, les SSI d'Apache vous permettent de
+    définir des variables, et de les utiliser dans des comparaisons et
+    des conditions.</p>
+
+<h3><a name="caveat" id="caveat">Mise en garde</a></h3>
+
+    <p>La plupart des fonctionnalités décrites dans cet article ne sont
+    disponibles que si vous utilisez la version 1.2 ou supérieure
+    d'Apache. Bien entendu, si ce n'est pas le cas, vous devez faire une
+    mise à jour immédiatement, et même plus tôt. Allez-y. Faites-le
+    maintenant. Nous attendrons.</p>
+
+
+<h3><a name="variables" id="variables">Définition de variables</a></h3>
+
+    <p>Avec l'élément <code>set</code>, vous pouvez définir des
+    variables pour un usage ultérieur. Comme nous en aurons besoin plus
+    loin, nous allons en parler tout de suite. La syntaxe se présente
+    comme suit :</p>
+<div class="example"><p><code>
+        &lt;!--#set var="name" value="Rich" --&gt;
+</code></p></div>
+
+    <p>Pour affecter une valeur à vos variables, en plus de la
+    définition littérale de l'exemple ci-dessus, vous pouvez utiliser
+    une autre variable, y compris les <a href="../env.html">variables d'environnement</a>, ou les variables
+    décrites plus haut (comme <code>LAST_MODIFIED</code> par exemple).
+    Pour indiquer qu'il s'agit d'une variable et non d'une chaîne, vous
+    devez utiliser le symbole dollar ($) devant le nom de la
+    variable.</p>
+
+    <div class="example"><p><code> &lt;!--#set var="modified" value="$LAST_MODIFIED" --&gt;
+    </code></p></div>
+
+    <p>Pour insérer un caractère $ dans la valeur de votre variable,
+    vous devez l'échapper à l'aide d'un backslash.</p>
+<div class="example"><p><code>
+        &lt;!--#set var="cost" value="\$100" --&gt;
+</code></p></div>
+
+    <p>Enfin, si vous voulez insérer une variable dans une chaîne, et
+    s'il y a une chance pour que le nom de la variable se confonde avec
+    le reste de la chaîne, vous pouvez l'entourer d'accolades pour
+    eviter toute confusion (Il est difficile de trouver un bon exemple
+    pour illustrer ceci, mais j'espère que vous comprendrez).</p>
+<div class="example"><p><code>
+        &lt;!--#set var="date" value="${DATE_LOCAL}_${DATE_GMT}" --&gt;
+</code></p></div>
+
+
+<h3><a name="conditional" id="conditional">Expressions conditionnelles</a></h3>
+
+
+    <p>Maintenent que nous avons des variables, et que nous pouvons
+    définir et comparer leurs valeurs, nous sommes à même de les
+    utiliser dans des expressions conditionnelles. Ceci confère à SSI le
+    statut de petit langage de programmation.
+    <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> fournit une structure <code>if</code>,
+    <code>elif</code>, <code>else</code>, <code>endif</code> pour la
+    construction d'expressions conditionnelles, ce qui vous permet de
+    générer plusieurs pages logiques à partir d'une seule vraie
+    page.</p>
+
+    <p>La structure de l'expression conditionnelle est :</p>
+<div class="example"><p><code>
+    &lt;!--#if expr="condition" --&gt;<br />
+    &lt;!--#elif expr="condition" --&gt;<br />
+    &lt;!--#else --&gt;<br />
+    &lt;!--#endif --&gt;
+</code></p></div>
+
+    <p>Une <em>condition</em> peut revêtir la forme de toute comparaison
+    logique - soit une comparaison de valeurs avec une autre, soit une
+    vérification de la "vérité" d'une valeur particulière (Une chaîne
+    donnée est vraie si elle n'est pas vide). Pour une liste exhaustive
+    des opérateurs de comparaison disponibles, voir la documentation du
+    module <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>. Voici quelques exemples
+    illustrant l'utilisation de ces expressions.</p>
+
+    <p>Vous pouvez ajouter les lignes suivantes dans votre fichier de
+    configuration :</p>
+<div class="example"><p><code>
+        BrowserMatchNoCase macintosh Mac<br />
+        BrowserMatchNoCase MSIE InternetExplorer
+</code></p></div>
+
+    <p>Ces lignes définissent les variables d'environnement "Mac" et
+    "InternetExplorer" à true, si le client utilise InternetExplorer sur
+    un Macintosh.</p>
+
+    <p>Puis, dans votre document où les SSI sont activées, vous ajoutez
+    ceci :</p>
+<div class="example"><p><code>
+        &lt;!--#if expr="${Mac} &amp;&amp; ${InternetExplorer}" --&gt;<br />
+        Un texte d'excuses est inséré ici<br />
+        &lt;!--#else --&gt;<br />
+        Ici se trouve du code JavaScipt sympa<br />
+        &lt;!--#endif --&gt;
+</code></p></div>
+
+    <p>Notez que je n'ai rien contre IE sur Macintosh - J'ai juste
+    phosphoré quelques heures la semaine dernière pour faire fonctionner
+    du JavaScript sous IE sur Macintosh, alors qu'il fonctionnait sous
+    tout autre environnement. Ce qui précède a constitué un
+    contournement provisoire.</p>
+
+    <p>Toute autre variable (que vous avez définie, ou une variable
+    d'environnement normale) peut être utilisée dans les expressions
+    conditionnelles. Associée à la possibilité avec Apache de définir
+    des variables d'environnement à l'aide de directives
+    <code>SetEnvIf</code>, ainsi que d'autres directives en rapport,
+    cette fonctionnalité vous permet d'ajouter des contenus dynamiques
+    assez évolués sans avoir recours aux programmes CGI.</p>
+
+</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="conclusion" id="conclusion">Conclusion</a></h2>
+
+    <p>SSI ne remplace certainement pas CGI, ou d'autres technologies
+    utilisées pour la génération de pages web dynamiques. Mais c'est une
+    bonne méthode pour ajouter des petits contenus dynamiques à vos
+    pages, sans devoir fournir un gros effort supplémentaire.</p>
+</div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="../en/howto/ssi.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/howto/ssi.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ja/howto/ssi.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="../ko/howto/ssi.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index 7d607856f67764916be773cc1d4d523913c21868..80e573ce0eedcd12a90c02e0053ffb7f19297ffa 100644 (file)
@@ -1,86 +1,86 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Documentations diverses sur Apache - Serveur Apache HTTP</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page" class="no-sidebar"><div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="../"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a></div><div id="page-content"><div id="preamble"><h1>Documentations diverses sur Apache</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="../en/misc/" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/misc/" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ko/misc/" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../tr/misc/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div>\r
-\r
-\r
-    <p>Vous trouverez plus loin une liste de pages de documentation\r
-    additionnelles concernant le projet de développement du serveur web\r
-    Apache.</p>\r
-\r
-    <div class="warning"><h3>Avertissement</h3>\r
-    <p>La mise à jour des documents ci-dessous permettant de prendre en\r
-    compte les modifications apportées par la version 2.1 du serveur\r
-    HTTP Apache n'a pas été entièrement menée à bien. Certaines\r
-    informations sont probablement encore pertinentes, mais utilisez-les tout de même avec\r
-    précautions.</p>\r
-    </div>\r
-\r
-    <dl>\r
-      <dt><a href="perf-tuning.html">Notes à propos des performances -\r
-      Réglages fins d'Apache</a></dt>\r
-\r
-      <dd>\r
-        <p>Notes à propos de la configuration d'Apache pour de plus\r
-       hautes performances (à l'exécution et à la compilation). Notes\r
-       expliquant pourquoi Apache accomplit certaines choses et\r
-       n'en accomplit pas certaines autres (les premières l'accélérant\r
-       et les deuxièmes le ralentissant).</p>\r
-      </dd>\r
-\r
-      <dt><a href="security_tips.html">Conseils concernant la\r
-      sécurité</a></dt>\r
-\r
-      <dd>\r
-        <p>Quelques conseils de type "faites" ou "ne faites pas" pour\r
-       que votre site web Apache reste sécurisé.</p>\r
-      </dd>\r
-\r
-      <dt><a href="relevant_standards.html">Standards concernés</a></dt>\r
-\r
-      <dd>\r
-        <p>Ce document constitue une page de référence pour la plupart\r
-       des standards concernés par Apache.</p>\r
-      </dd>\r
-\r
-      <dt><a href="password_encryptions.html">Formats de chiffrement des\r
-      mots de passe</a></dt>\r
-\r
-      <dd>\r
-        <p>Discussion à propos des divers algorithmes de chiffrement\r
-       supportés par Apache à des fins d'authentification.</p>\r
-      </dd>\r
-    </dl>\r
-\r
-  </div>\r
-</div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="../en/misc/" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/misc/" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ko/misc/" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../tr/misc/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Documentations diverses sur Apache - Serveur Apache HTTP</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page" class="no-sidebar"><div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="../"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a></div><div id="page-content"><div id="preamble"><h1>Documentations diverses sur Apache</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="../en/misc/" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/misc/" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ko/misc/" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/misc/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div>
+
+
+    <p>Vous trouverez plus loin une liste de pages de documentation
+    additionnelles concernant le projet de développement du serveur web
+    Apache.</p>
+
+    <div class="warning"><h3>Avertissement</h3>
+    <p>La mise à jour des documents ci-dessous permettant de prendre en
+    compte les modifications apportées par la version 2.1 du serveur
+    HTTP Apache n'a pas été entièrement menée à bien. Certaines
+    informations sont probablement encore pertinentes, mais utilisez-les tout de même avec
+    précautions.</p>
+    </div>
+
+    <dl>
+      <dt><a href="perf-tuning.html">Notes à propos des performances -
+      Réglages fins d'Apache</a></dt>
+
+      <dd>
+        <p>Notes à propos de la configuration d'Apache pour de plus
+       hautes performances (à l'exécution et à la compilation). Notes
+       expliquant pourquoi Apache accomplit certaines choses et
+       n'en accomplit pas certaines autres (les premières l'accélérant
+       et les deuxièmes le ralentissant).</p>
+      </dd>
+
+      <dt><a href="security_tips.html">Conseils concernant la
+      sécurité</a></dt>
+
+      <dd>
+        <p>Quelques conseils de type "faites" ou "ne faites pas" pour
+       que votre site web Apache reste sécurisé.</p>
+      </dd>
+
+      <dt><a href="relevant_standards.html">Standards concernés</a></dt>
+
+      <dd>
+        <p>Ce document constitue une page de référence pour la plupart
+       des standards concernés par Apache.</p>
+      </dd>
+
+      <dt><a href="password_encryptions.html">Formats de chiffrement des
+      mots de passe</a></dt>
+
+      <dd>
+        <p>Discussion à propos des divers algorithmes de chiffrement
+       supportés par Apache à des fins d'authentification.</p>
+      </dd>
+    </dl>
+
+  </div>
+</div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="../en/misc/" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/misc/" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ko/misc/" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/misc/" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index 1c3b8f0e5ef6c85ccffc78a4817af591ac72e39d..788482a65d0164119fa0c7d6541e42213ea0cef2 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Optimisation des performances d'Apache - Serveur Apache HTTP</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Documentations diverses</a></div><div id="page-content"><div id="preamble"><h1>Optimisation des performances d'Apache</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="../en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/misc/perf-tuning.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ko/misc/perf-tuning.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div>\r
-\r
-\r
-    <p>Apache 2.x est un serveur web à usage général, conçu dans un but\r
-    d'équilibre entre souplesse, portabilité et performances. Bien que non\r
-    conçu dans le seul but d'établir une référence en la matière,\r
-    Apache 2.x est capable de hautes performances dans de nombreuses situations\r
-    du monde réel.</p>\r
-\r
-    <p>Comparée à Apache 1.3, la version 2.x comporte de nombreuses\r
-    optimisations supplémentaires permettant d'améliorer le débit du serveur\r
-    et sa personnalisation. La plupart de ces améliorations sont activées par\r
-    défaut. Cependant, certains choix de configuration à la compilation et à\r
-    l'exécution peuvent affecter les performances de manière significative. Ce\r
-    document décrit les options qu'un administrateur de serveur peut configurer\r
-    pour améliorer les performances d'une installation d'Apache 2.x. Certaines\r
-    de ces options de configuration permettent au démon httpd de mieux tirer\r
-    parti des possibilités du matériel et du système d'exploitation, tandis\r
-    que d'autres permettent à l'administrateur de privilégier la vitesse\r
-    par rapport aux fonctionnalités.</p>\r
-\r
-  </div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#hardware">Problèmes matériels et relatifs au système d'exploitation</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#runtime">Optimisation de la configuration à l'exécution</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#compiletime">Optimisation de la configuration à la compilation</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#trace">Appendice : Analyse détaillée d'une trace</a></li>\r
-</ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="hardware" id="hardware">Problèmes matériels et relatifs au système d'exploitation</a></h2>\r
-\r
-    \r
-\r
-    <p>Le principal problème matériel qui affecte les performances du serveur\r
-    web est la mémoire vive (RAM). Un serveur web ne devrait jamais avoir à\r
-    utiliser le swap, car le swapping augmente le temps de réponse de chaque\r
-    requête au delà du point que les utilisateurs considèrent comme\r
-    "trop lent". Ceci incite les utilisateurs à cliquer sur "Stop", puis\r
-    "Charger à nouveau", ce qui a pour effet d'augmenter encore la charge\r
-    du serveur. Vous pouvez, et même devez définir la valeur de la directive\r
-    <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> de façon à ce que\r
-    votre serveur ne lance pas un nombre de processus enfants tel qu'il\r
-    commence à faire du swapping. La méthode pour y parvenir est\r
-    simple : déterminez la taille de votre processus Apache standard en\r
-    consultant votre liste de processus à l'aide d'un outil tel que\r
-    <code>top</code>, et divisez votre quantité totale de mémoire disponible\r
-    par cette taille, tout en gardant un espace suffisant\r
-    pour les autres processus.</p>\r
-\r
-    <p>Hormis ce réglage relatif à la mémoire, le reste est trivial : le\r
-    processeur, la carte réseau et les disques doivent être suffisamment\r
-    rapides, où "suffisamment rapide" doit être déterminé par\r
-    l'expérience.</p>\r
-\r
-    <p>Le choix du système d'exploitation dépend principalement du\r
-    contexte local. Voici cependant quelques conseils qui se sont\r
-    généralement avérés utiles :</p>\r
-\r
-    <ul>\r
-      <li>\r
-        <p>Exécutez la dernière version stable et le niveau de patches le\r
-       plus haut du système d'exploitation que vous avez choisi. De nombreux\r
-       éditeurs de systèmes d'exploitation ont amélioré de manière\r
-       significative les performances de leurs piles TCP et de leurs\r
-       bibliothèques de thread ces dernières années.</p>\r
-      </li>\r
-\r
-      <li>\r
-        <p>Si votre système d'exploitation possède un appel système\r
-       <code>sendfile(2)</code>, assurez-vous d'avoir installé la version\r
-       et/ou les patches nécessaires à son activation. (Pour Linux, par\r
-       exemple, cela se traduit par Linux 2.4 ou plus. Pour les versions\r
-       anciennes de Solaris 8, vous pouvez être amené à appliquer un patch.)\r
-       Sur les systèmes où il est disponible, <code>sendfile</code> permet\r
-       à Apache 2 de servir les contenus statiques plus rapidement, tout en\r
-       induisant une charge CPU inférieure.</p>\r
-      </li>\r
-    </ul>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="runtime" id="runtime">Optimisation de la configuration à l'exécution</a></h2>\r
-\r
-    \r
-\r
-    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code></li><li><code class="module"><a href="../mod/mpm_common.html">mpm_common</a></code></li><li><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code></li><li><code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code></li><li><code class="directive"><a href="../mod/core.html#enablemmap">EnableMMAP</a></code></li><li><code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code></li><li><code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code></li><li><code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code></li><li><code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code></li></ul></td></tr></table>\r
-\r
-    <h3><a name="dns" id="dns">HostnameLookups et autres considérations à propos du DNS</a></h3>\r
-\r
-      \r
-\r
-      <p>Avant Apache 1.3, la directive\r
-      <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code> était positionnée\r
-      par défaut à <code>On</code>. Ce réglage augmente le temps de réponse de\r
-      chaque requête car il entraîne une recherche DNS et le traitement de la\r
-      requête ne pourra pas être achevé tant que cette recherche ne sera\r
-      pas terminée. Avec Apache 1.3, ce réglage est défini par défaut à\r
-      <code>Off</code>. Si vous souhaitez que les adresses dans vos fichiers\r
-      journaux soient résolues en noms d'hôtes, utilisez le programme\r
-      <code class="program"><a href="../programs/logresolve.html">logresolve</a></code> fourni avec Apache, ou un des nombreux\r
-      paquets générateurs de rapports sur les journaux disponibles.</p>\r
-\r
-      <p>Il est recommandé d'effectuer ce genre de traitement a posteriori\r
-      de vos fichiers journaux sur une autre machine que celle qui héberge le\r
-      serveur web en production, afin que cette activité n'affecte pas les\r
-      performances du serveur.</p>\r
-\r
-      <p>Si vous utilisez une directive\r
-      <code><code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code>from domain</code>\r
-      ou\r
-      <code><code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> from domain</code>\r
-      (ce qui signifie que vous utilisez un nom d'hôte ou un nom de domaine à\r
-      la place d'une adresse IP), vous devrez compter avec deux recherches\r
-      DNS (une recherche inverse suivie d'une recherche directe pour\r
-      s'assurer que l'adresse IP n'a pas été usurpée). C'est pourquoi il est\r
-      préférable, pour améliorer les performances, d'utiliser des adresses IP\r
-      plutôt que des noms lorsqu'on utilise ces directives, du moins chaque\r
-      fois que c'est possible.</p>\r
-\r
-      <p>Notez qu'il est possible de modifier la portée des directives, en les\r
-      plaçant par exemple à l'intérieur d'une section\r
-      <code>&lt;Location /server-status&gt;</code>. Les recherches DNS ne\r
-      seront alors effectuées que pour les requêtes qui satisfont aux critères.\r
-      Voici un exemple qui désactive les recherches DNS sauf pour les fichiers\r
-      <code>.html</code> et <code>.cgi</code> :</p>\r
-\r
-      <div class="example"><p><code>\r
-        HostnameLookups off<br />\r
-        &lt;Files ~ "\.(html|cgi)$"&gt;<br />\r
-        <span class="indent">\r
-          HostnameLookups on<br />\r
-        </span>\r
-        &lt;/Files&gt;\r
-      </code></p></div>\r
-\r
-      <p>Mais même dans ce cas, si vous n'avez besoin de noms DNS que dans\r
-      certains CGIs, vous pouvez effectuer l'appel à <code>gethostbyname</code>\r
-      dans les CGIs spécifiques qui en ont besoin.</p>\r
-\r
-    \r
-\r
-    <h3><a name="symlinks" id="symlinks">FollowSymLinks et SymLinksIfOwnerMatch</a></h3>\r
-\r
-      \r
-\r
-      <p>Chaque fois que la ligne <code>Options FollowSymLinks</code> sera\r
-      absente, ou que la ligne <code>Options SymLinksIfOwnerMatch</code> sera\r
-      présente dans votre espace d'adressage, Apache devra effectuer des\r
-      appels système supplémentaires pour vérifier la présence de liens\r
-      symboliques. Un appel supplémentaire par élément du chemin du fichier.\r
-      Par exemple, si vous avez :</p>\r
-\r
-      <div class="example"><p><code>\r
-        DocumentRoot /www/htdocs<br />\r
-        &lt;Directory /&gt;<br />\r
-        <span class="indent">\r
-          Options SymLinksIfOwnerMatch<br />\r
-        </span>\r
-        &lt;/Directory&gt;\r
-      </code></p></div>\r
-\r
-      <p>et si une requête demande l'URI <code>/index.html</code>, Apache\r
-      effectuera un appel à <code>lstat(2)</code> pour\r
-      <code>/www</code>, <code>/www/htdocs</code>, et\r
-      <code>/www/htdocs/index.html</code>. Les résultats de ces appels à\r
-      <code>lstat</code> ne sont jamais mis en cache, ils devront donc être\r
-      générés à nouveau pour chaque nouvelle requête. Si vous voulez absolument\r
-      vérifier la sécurité des liens symboliques, vous pouvez utiliser une\r
-      configuration du style :</p>\r
-\r
-      <div class="example"><p><code>\r
-        DocumentRoot /www/htdocs<br />\r
-        &lt;Directory /&gt;<br />\r
-        <span class="indent">\r
-          Options FollowSymLinks<br />\r
-        </span>\r
-        &lt;/Directory&gt;<br />\r
-        <br />\r
-        &lt;Directory /www/htdocs&gt;<br />\r
-        <span class="indent">\r
-          Options -FollowSymLinks +SymLinksIfOwnerMatch<br />\r
-        </span>\r
-        &lt;/Directory&gt;\r
-      </code></p></div>\r
-\r
-      <p>Ceci évite au moins les vérifications supplémentaires pour le chemin\r
-      défini par <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. Notez que\r
-      vous devrez ajouter des sections similaires si vous avez des chemins\r
-      définis par les directives\r
-      <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> ou\r
-      <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> en dehors de\r
-      la racine de vos documents. Pour améliorer les performances, et supprimer\r
-      toute protection des liens symboliques, ajoutez l'option\r
-      <code>FollowSymLinks</code> partout, et n'utilisez jamais l'option\r
-      <code>SymLinksIfOwnerMatch</code>.</p>\r
-\r
-    \r
-\r
-    <h3><a name="htacess" id="htacess">AllowOverride</a></h3>\r
-\r
-      \r
-\r
-      <p>Dans toute partie de votre espace d'adressage où vous autoriserez\r
-      la surcharge de la configuration (en général à l'aide de fichiers\r
-      <code>.htaccess</code>), Apache va tenter d'ouvrir <code>.htaccess</code>\r
-      pour chaque élément du chemin du fichier demandé. Par exemple, si vous\r
-      avez : </p>\r
-\r
-      <div class="example"><p><code>\r
-        DocumentRoot /www/htdocs<br />\r
-        &lt;Directory /&gt;<br />\r
-        <span class="indent">\r
-          AllowOverride all<br />\r
-        </span>\r
-        &lt;/Directory&gt;\r
-      </code></p></div>\r
-\r
-      <p>et qu'une requête demande l'URI <code>/index.html</code>, Apache\r
-      tentera d'ouvrir <code>/.htaccess</code>, <code>/www/.htaccess</code>,\r
-      et <code>/www/htdocs/.htaccess</code>. Les solutions sont similaires à\r
-      celles évoquées précédemment pour <code>Options FollowSymLinks</code>.\r
-      Pour améliorer les performances, utilisez <code>AllowOverride None</code>\r
-      pour tous les niveaux de votre espace d'adressage.</p>\r
-\r
-    \r
-\r
-    <h3><a name="negotiation" id="negotiation">Négociation</a></h3>\r
-\r
-      \r
-\r
-      <p>Dans la mesure du possible, évitez toute négociation de contenu si\r
-      vous tenez au moindre gain en performances. En pratique toutefois,\r
-      les bénéfices de la négociation l'emportent souvent sur la diminution\r
-      des performances.\r
-      Il y a cependant un cas dans lequel vous pouvez accélérer le serveur.\r
-      Au lieu d'utiliser une directive générique comme :</p>\r
-\r
-      <div class="example"><p><code>\r
-        DirectoryIndex index\r
-      </code></p></div>\r
-\r
-      <p>utilisez une liste explicite d'options :</p>\r
-\r
-      <div class="example"><p><code>\r
-        DirectoryIndex index.cgi index.pl index.shtml index.html\r
-      </code></p></div>\r
-\r
-      <p>où vous placez le choix courant en première position.</p>\r
-\r
-      <p>Notez aussi que créer explicitement un fichier de\r
-      <code>correspondances de type</code> fournit de meilleures performances\r
-      que l'utilisation des <code>MultiViews</code>, car les informations\r
-      nécessaires peuvent être simplement obtenues en lisant ce fichier, sans\r
-      avoir à parcourir le répertoire à la recherche de types de fichiers.</p>\r
-\r
-    <p>Par conséquent, si la négociation de contenu est nécessaire pour votre\r
-    site, préférez les fichiers de <code>correspondances de type</code> aux\r
-    directives <code>Options MultiViews</code> pour mener à bien cette\r
-    négociation. Se référer au document sur la\r
-    <a href="../content-negotiation.html">Négociation de contenu</a> pour une\r
-    description complète des méthodes de négociation, et les instructions\r
-    permettant de créer des fichiers de <code>correspondances de type</code>.</p>\r
-\r
-    \r
-\r
-    <h3>Transfert en mémoire</h3>\r
-\r
-      \r
-\r
-      <p>Dans les situations où Apache 2.x doit consulter le contenu d'un\r
-      fichier en train d'être servi - par exemple à l'occasion du traitement\r
-      d'une inclusion côté serveur - il transfère en général le fichier en\r
-      mémoire si le système d'exploitation supporte une forme quelconque\r
-      de <code>mmap(2)</code>.</p>\r
-\r
-      <p>Sur certains systèmes, ce transfert en mémoire améliore les\r
-      performances. Dans certains cas, ce transfert peut toutefois les dégrader\r
-      et même diminuer la stabilité du démon httpd :</p>\r
-\r
-      <ul>\r
-        <li>\r
-          <p>Dans certains systèmes d'exploitation, <code>mmap</code> devient\r
-         moins efficace que <code>read(2)</code> quand le nombre de\r
-         processeurs augmente. Sur les serveurs multiprocesseurs sous Solaris,\r
-         par exemple, Apache 2.x sert parfois les fichiers consultés par le\r
-         serveur plus rapidement quand <code>mmap</code> est désactivé.</p>\r
-        </li>\r
-\r
-        <li>\r
-          <p>Si vous transférez en mémoire un fichier localisé dans un système\r
-         de fichiers monté par NFS, et si un processus sur\r
-         une autre machine cliente NFS supprime ou tronque le fichier, votre\r
-         processus peut rencontrer une erreur de bus la prochaine fois qu'il\r
-         essaiera d'accéder au contenu du fichier en mémoire.</p>\r
-        </li>\r
-      </ul>\r
-\r
-      <p>Pour les installations où une de ces situations peut se produire,\r
-      vous devez utiliser <code>EnableMMAP off</code> afin de désactiver le\r
-      transfert en mémoire des fichiers servis. (Note : il est possible de\r
-      passer outre cette directive au niveau de chaque répertoire.)</p>\r
-\r
-    \r
-\r
-    <h3>Sendfile</h3>\r
-\r
-      \r
-\r
-      <p>Dans les cas où Apache peut se permettre d'ignorer le contenu du\r
-      fichier à servir - par exemple, lorsqu'il sert un contenu de fichier\r
-      statique - il utilise en général le support sendfile du noyau si le\r
-      système d'exploitation supporte l'opération <code>sendfile(2)</code>.</p>\r
-\r
-      <p>Sur la plupart des plateformes, l'utilisation de sendfile améliore\r
-      les performances en éliminant les mécanismes de lecture et envoi séparés.\r
-      Dans certains cas cependant, l'utilisation de sendfile peut nuire à la\r
-      stabilité du démon httpd :</p>\r
-\r
-      <ul>\r
-        <li>\r
-          <p>Certaines plateformes peuvent présenter un support de sendfile\r
-         défaillant que la construction du système n'a pas détecté, en\r
-         particulier si les binaires ont été construits sur une autre machine\r
-         et transférés sur la machine où le support de sendfile est\r
-         défaillant.</p>\r
-        </li>\r
-        <li>\r
-          <p>Dans le cas des fichiers montés sous NFS, le noyau peut s'avérer\r
-         incapable de servir les fichiers réseau de manière fiable depuis\r
-         son propre cache.</p>\r
-        </li>\r
-      </ul>\r
-\r
-      <p>Pour les installations où une de ces situations peut se produire,\r
-      vous devez utiliser <code>EnableSendfile off</code> afin de désactiver\r
-      la mise à disposition de contenus de fichiers par sendfile. (Note : il\r
-      est possible de passer outre cette directive au niveau de chaque\r
-      répertoire.)</p>\r
-\r
-    \r
-\r
-    <h3><a name="process" id="process">Process Creation</a></h3>\r
-\r
-      \r
-\r
-      <p>Avant Apache 1.3, les directives\r
-      <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>,\r
-      <code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code>, et\r
-      <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> avaient des\r
-      effets drastiques sur les performances de référence. En particulier,\r
-      Apache avait besoin d'un délai de "montée en puissance" afin d'atteindre\r
-      un nombre de processus enfants suffisant pour supporter la charge qui lui\r
-      était appliquée. Après le lancement initial des processus enfants par\r
-      <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>, seulement un\r
-      processus enfant par seconde était créé afin d'atteindre la valeur de la\r
-      directive <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>. Ainsi,\r
-      un serveur accédé par 100 clients simultanés et utilisant la valeur par\r
-      défaut de <code>5</code> pour la directive\r
-      <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>, nécessitait\r
-      environ 95 secondes pour lancer suffisamment de processus enfants\r
-      permettant de faire face à la charge. Ceci fonctionne en pratique pour\r
-      les serveurs en production, car ils sont rarement redémarrés. Ce n'est\r
-      cependant pas le cas pour les tests de référence (benchmarks) où le\r
-      serveur ne fonctionne que 10 minutes.</p>\r
-\r
-      <p>La règle "un processus par seconde" avait été implémentée afin\r
-      d'éviter l'enlisement de la machine dans le démarrage de nouveaux\r
-      processus enfants. Pendant que la machine est occupée à lancer des\r
-      processus enfants, elle ne peut pas traiter les requêtes. Mais cette\r
-      règle impactait tellement la perception des performances d'Apache qu'elle\r
-      a dû être remplacée. A partir d'Apache 1.3, le code a assoupli la règle\r
-      "un processus par seconde". Il va en lancer un, attendre une seconde,\r
-      puis en lancer deux, attendre une seconde, puis en lancer quatre et\r
-      ainsi de suite jusqu'à lancer 32 processus. Il s'arrêtera lorsque le\r
-      nombre de processus aura atteint la valeur définie par la directive\r
-      <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>.</p>\r
-\r
-      <p>Ceci s'avère suffisamment réactif pour pouvoir en général se passer\r
-      de manipuler les valeurs des directives\r
-      <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>,\r
-      <code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code> et\r
-      <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>. Lorsque plus de\r
-      4 processus enfants sont lancés par seconde, un message est émis vers\r
-      le journal des erreurs. Si vous voyez apparaître souvent ce genre de\r
-      message, vous devez vous pencher sur ces réglages. Pour vous guider,\r
-      utilisez les informations délivrées par le module\r
-      <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>.</p>\r
-\r
-    <p>À mettre en relation avec la création de processus, leur destruction\r
-    est définie par la valeur de la directive\r
-    <code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code>. Sa valeur\r
-    par défaut est <code>0</code>, ce qui signifie qu'il n'y a pas de limite\r
-    au nombre de requêtes q'un processus enfant peut traiter. Si votre\r
-    configuration actuelle a cette directive réglée à une valeur très basse,\r
-    de l'ordre de <code>30</code>, il est conseillé de l'augmenter de manière\r
-    significative. Si vous utilisez SunOs ou une ancienne version de Solaris,\r
-    utilisez une valeur de l'ordre de <code>10000</code>  à cause des fuites\r
-    de mémoire.</p>\r
-\r
-    <p>Lorsqu'ils sont en mode "keep-alive", les processus enfants sont\r
-    maintenus et ne font rien sinon attendre la prochaine requête sur la\r
-    connexion déjà ouverte. La valeur par défaut de <code>5</code> de la\r
-    directive <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code> tend à\r
-    minimiser cet effet. Il faut trouver le bon compromis entre la bande\r
-    passante réseau et les ressources du serveur. En aucun cas vous ne devez\r
-    choisir une valeur supérieure à <code>60</code> seconds, car\r
-    <a href="http://www.research.digital.com/wrl/techreports/abstracts/95.4.html">\r
-    la plupart des bénéfices sont alors perdus</a>.</p>\r
-\r
-    \r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="compiletime" id="compiletime">Optimisation de la configuration à la compilation</a></h2>\r
-\r
-    \r
-\r
-    <h3>Choisir un Module Multi-Processus (MPM)</h3>\r
-\r
-      \r
-\r
-      <p>Apache 2.x supporte les modèles simultanés enfichables, appelés\r
-      <a href="../mpm.html">Modules Multi-Processus</a> (MPMs). Vous devez\r
-      choisir un MPM au moment de la construction d'Apache. Certaines\r
-      plateformes ont des modules MPM spécifiques : \r
-      <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, et\r
-      <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>. Sur les systèmes de type Unix, vous avez le\r
-      choix entre un grand nombre de modules MPM. Le choix du MPM peut affecter\r
-      la vitesse et l'évolutivité du démon httpd :</p>\r
-\r
-      <ul>\r
-\r
-        <li>Le MPM <code class="module"><a href="../mod/worker.html">worker</a></code> utilise plusieurs processus\r
-       enfants possédant chacun de nombreux threads. Chaque thread gère une\r
-       seule connexion à la fois. Worker est en général un bon choix pour les\r
-       serveurs présentant un traffic important car il possède une empreinte\r
-       mémoire plus petite que le MPM prefork.</li>\r
-\r
-        <li>Le MPM <code class="module"><a href="../mod/prefork.html">prefork</a></code> utilise plusieurs processus enfants\r
-       possédant chacun un seul thread. Chaque processus gère une seule\r
-       connexion à la fois. Sur de nombreux systèmes, prefork est comparable\r
-       en matière de vitesse à worker, mais il utilise plus de mémoire. De par\r
-       sa conception sans thread, prefork présente des avantages par rapport à\r
-       worker dans certaines situations : il peut être utilisé avec les\r
-       modules tiers qui ne supportent pas le threading, et son débogage est plus\r
-       aisé sur les platesformes présentant un support du débogage des threads\r
-       rudimentaire.</li>\r
-\r
-      </ul>\r
-\r
-      <p>Pour plus d'informations sur ces deux MPMs et les autres, veuillez\r
-      vous référer à la <a href="../mpm.html">documentation sur les\r
-      MPM</a>.</p>\r
-\r
-    \r
-\r
-    <h3><a name="modules" id="modules">Modules</a></h3>\r
-\r
-        \r
-\r
-        <p>Comme le contrôle de l'utilisation de la mémoire est très important\r
-       en matière de performance, il est conseillé d'éliminer les modules que\r
-       vous n'utilisez pas vraiment. Si vous avez construit ces modules en\r
-       tant que <a href="../dso.html">DSOs</a>, leur élimination consiste\r
-       simplement à commenter la directive\r
-       <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> associée à ce\r
-       module. Ceci vous permet de vérifier si votre site fonctionne toujours\r
-       après la suppression de tel ou tel module.</p>\r
-\r
-        <p>Par contre, si les modules que vous voulez supprimer sont liés\r
-       statiquement à votre binaire Apache, vous devrez recompiler ce dernier\r
-       afin de pouvoir les éliminer.</p>\r
-\r
-        <p>La question qui découle de ce qui précède est évidemment de\r
-       savoir de quels modules vous avez besoin et desquels vous pouvez vous\r
-       passer. La réponse sera bien entendu différente d'un site web à\r
-       l'autre. Cependant, la liste <em>minimale</em> de modules nécessaire à\r
-       la survie de votre site contiendra certainement\r
-       <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>, <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> et\r
-       <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code>. <code>mod_log_config</code> est bien\r
-       entendu optionnel puisque vous pouvez faire fonctionner un site web\r
-       en se passant de fichiers journaux ; ceci est cependant\r
-       déconseillé.</p>\r
-\r
-    \r
-\r
-    <h3>Opérations atomiques</h3>\r
-\r
-      \r
-\r
-      <p>Certains modules, à l'instar de <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> et des\r
-      versions de développement récentes du MPM worker, utilisent l'API\r
-      atomique d'APR. Cette API propose des opérations atomiques que l'on\r
-      peut utiliser pour alléger la synchronisation des threads.</p>\r
-\r
-      <p>Par défaut, APR implémente ces opérations en utilisant les\r
-      mécanismes les plus efficaces disponibles sur chaque plateforme cible\r
-      (Système d'exploitation et processeur). De nombreux processeurs modernes,\r
-      par exemple, possèdent une instruction qui effectue une opération\r
-      atomique de type comparaison et échange ou compare-and-swap (CAS) au\r
-      niveau matériel. Sur certaines platesformes cependant, APR utilise par\r
-      défaut une implémentation de l'API atomique plus lente, basée sur les\r
-      mutex, afin d'assurer la compatibilité avec les anciens modèles de\r
-      processeurs qui ne possèdent pas ce genre d'instruction. Si vous\r
-      construisez Apache pour une de ces platesformes, et ne prévoyez de\r
-      l'exécuter que sur des processeurs récents, vous pouvez sélectionner une\r
-      implémentation atomique plus rapide à la compilation en utilisant\r
-      l'option <code>--enable-nonportable-atomics</code> du\r
-      script configure :</p>\r
-\r
-      <div class="example"><p><code>\r
-        ./buildconf<br />\r
-        ./configure --with-mpm=worker --enable-nonportable-atomics=yes\r
-      </code></p></div>\r
-\r
-      <p>L'option <code>--enable-nonportable-atomics</code> concerne les\r
-      platesformes suivantes :</p>\r
-\r
-      <ul>\r
-\r
-        <li>Solaris sur SPARC<br />\r
-            Sur Solaris/SPARC, APR utilise par défaut les opérations\r
-           atomiques basées sur les mutex. Cependant, si vous ajoutez l'option\r
-           <code>--enable-nonportable-atomics</code> au script configure, APR\r
-           génère un code qui utilise le code opération SPARC v8plus pour des\r
-           opérations de compare-and-swap matériel plus rapides. Si vous\r
-           utilisez cette option de configure avec Apache, les opérations\r
-           atomiques seront plus efficaces (permettant d'alléger la charge du\r
-           processeur et un plus haut niveau de simultanéité), mais\r
-           l'exécutable produit ne fonctionnera que sur les processeurs\r
-           UltraSPARC.\r
-       </li>\r
-\r
-        <li>Linux sur x86<br />\r
-            Sous Linux, APR utilise par défaut les opérations atomiques basées\r
-           sur les mutex. Cependant, si vous ajoutez l'option\r
-           <code>--enable-nonportable-atomics</code> au script configure,\r
-           APR générera un code qui utilise un code d'opération du 486\r
-           pour des opérations de compare-and-swap matériel plus rapides. Le\r
-           code résultant est plus efficace en matière d'opérations atomiques,\r
-           mais l'exécutable produit ne fonctionnera que sur des processeurs\r
-           486 et supérieurs (et non sur des 386).\r
-        </li>\r
-\r
-      </ul>\r
-\r
-    \r
-\r
-    <h3>Module mod_status et ExtendedStatus On</h3>\r
-\r
-      \r
-\r
-      <p>Si vous incluez le module <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> à la\r
-      construction d'Apache et ajoutez <code>ExtendedStatus On</code> à sa\r
-      configuration, Apache va effectuer pour chaque requête deux appels à\r
-      <code>gettimeofday(2)</code> (ou <code>times(2)</code> selon votre\r
-      système d'exploitation), et (pour les versions antérieures à 1.3) de\r
-      nombreux appels supplémentaires à <code>time(2)</code>. Tous ces\r
-      appels sont effectués afin que le rapport de statut puisse contenir\r
-      des indications temporelles. Pour améliorer les performances, utilisez\r
-      <code>ExtendedStatus off</code> (qui est le réglage par défaut).</p>\r
-\r
-    \r
-\r
-    <h3>accept Serialization - points de connexion à un programme (sockets) multiples</h3>\r
-\r
-      \r
-\r
-    <div class="warning"><h3>Mise en garde :</h3>\r
-      <p>Cette section n'a pas été totalement mise à jour car elle ne tient pas\r
-      compte des changements intervenus dans la version 2.x du Serveur HTTP\r
-      Apache. Certaines informations sont encore pertinentes, il vous est\r
-      cependant conseillé de les utiliser avec prudence.</p>\r
-    </div>\r
-\r
-      <p>Ce qui suit est une brève discussion à propos de l'API des sockets\r
-      Unix. Supposons que votre serveur web utilise plusieurs directives\r
-      <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> afin d'écouter\r
-      plusieurs ports ou de multiples adresses. Afin de tester chaque socket\r
-      pour voir s'il a une connexion en attente, Apache utilise\r
-      <code>select(2)</code>. <code>select(2)</code> indique si un socket a\r
-      <em>zéro</em> ou <em>au moins une</em> connexion en attente. Le modèle\r
-      d'Apache comporte plusieurs processus enfants, et tous ceux qui sont\r
-      inactifs testent la présence de nouvelles connexions au même moment.\r
-      Une implémentation rudimentaire de ceci pourrait ressembler à\r
-      l'exemple suivant\r
-      (ces exemples ne sont pas extraits du code d'Apache, ils ne sont\r
-      proposés qu'à des fins pédagogiques) :</p>\r
-\r
-      <div class="example"><p><code>\r
-        for (;;) {<br />\r
-        <span class="indent">\r
-          for (;;) {<br />\r
-          <span class="indent">\r
-            fd_set accept_fds;<br />\r
-            <br />\r
-            FD_ZERO (&amp;accept_fds);<br />\r
-            for (i = first_socket; i &lt;= last_socket; ++i) {<br />\r
-            <span class="indent">\r
-              FD_SET (i, &amp;accept_fds);<br />\r
-            </span>\r
-            }<br />\r
-            rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />\r
-            if (rc &lt; 1) continue;<br />\r
-            new_connection = -1;<br />\r
-            for (i = first_socket; i &lt;= last_socket; ++i) {<br />\r
-            <span class="indent">\r
-              if (FD_ISSET (i, &amp;accept_fds)) {<br />\r
-              <span class="indent">\r
-                new_connection = accept (i, NULL, NULL);<br />\r
-                if (new_connection != -1) break;<br />\r
-              </span>\r
-              }<br />\r
-            </span>\r
-            }<br />\r
-            if (new_connection != -1) break;<br />\r
-          </span>\r
-          }<br />\r
-          process the new_connection;<br />\r
-        </span>\r
-        }\r
-      </code></p></div>\r
-\r
-      <p>Mais cette implémentation rudimentaire présente une sérieuse lacune.\r
-      Rappelez-vous que les processus enfants exécutent cette boucle au même\r
-      moment ; ils vont ainsi bloquer sur <code>select</code> s'ils se trouvent\r
-      entre deux requêtes. Tous ces processus bloqués vont se réactiver et\r
-      sortir de <code>select</code> quand une requête va apparaître sur un des\r
-      sockets (le nombre de processus enfants qui se réactivent varie en\r
-      fonction du système d'exploitation et des réglages de synchronisation).\r
-      Ils vont alors tous entrer dans la boucle et tenter un\r
-      <code>"accept"</code> de la connexion. Mais seulement un d'entre eux y\r
-      parviendra (en supposant qu'il ne reste q'une seule connexion en\r
-      attente), les autres vont se bloquer au niveau de <code>accept</code>.\r
-      Ceci verrouille vraiment ces processus de telle sorte qu'ils ne peuvent\r
-      plus servir de requêtes que par cet unique socket, et il en sera ainsi\r
-      jusqu'à ce que suffisamment de nouvelles requêtes apparaissent sur ce\r
-      socket pour les réactiver tous. Cette lacune a été documentée pour la\r
-      première fois dans\r
-      <a href="http://bugs.apache.org/index/full/467">PR#467</a>. Il existe\r
-      au moins deux solutions.</p>\r
-\r
-      <p>La première consiste à rendre les sockets non blocants. Dans ce cas,\r
-      <code>accept</code> ne bloquera pas les processus enfants, et ils\r
-      pourront continuer à s'exécuter immédiatement. Mais ceci consomme des\r
-      ressources processeur. Supposons que vous ayez dix processus enfants\r
-      inactifs dans <code>select</code>, et qu'une connexion arrive.\r
-      Neuf des dix processus vont se réactiver, tenter un <code>accept</code>\r
-      de la connexion, échouer, et boucler dans <code>select</code>, tout en\r
-      n'ayant finalement rien accompli. Pendant ce temps, aucun de ces processus\r
-      ne traite les requêtes qui arrivent sur d'autres sockets jusqu'à ce\r
-      qu'ils retournent dans <code>select</code>. Finalement, cette solution\r
-      ne semble pas très efficace, à moins que vous ne disposiez d'autant de\r
-      processeurs inactifs (dans un serveur multiprocesseur) que de processus\r
-      enfants inactifs, ce qui n'est pas une situation très courante.</p>\r
-\r
-      <p>Une autre solution, celle qu'utilise Apache, consiste à sérialiser les\r
-      entrées dans la boucle interne. La boucle ressemble à ceci (les\r
-      différences sont mises en surbrillance) :</p>\r
-\r
-      <div class="example"><p><code>\r
-        for (;;) {<br />\r
-        <span class="indent">\r
-          <strong>accept_mutex_on ();</strong><br />\r
-          for (;;) {<br />\r
-          <span class="indent">\r
-            fd_set accept_fds;<br />\r
-            <br />\r
-            FD_ZERO (&amp;accept_fds);<br />\r
-            for (i = first_socket; i &lt;= last_socket; ++i) {<br />\r
-            <span class="indent">\r
-              FD_SET (i, &amp;accept_fds);<br />\r
-            </span>\r
-            }<br />\r
-            rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />\r
-            if (rc &lt; 1) continue;<br />\r
-            new_connection = -1;<br />\r
-            for (i = first_socket; i &lt;= last_socket; ++i) {<br />\r
-            <span class="indent">\r
-              if (FD_ISSET (i, &amp;accept_fds)) {<br />\r
-              <span class="indent">\r
-                new_connection = accept (i, NULL, NULL);<br />\r
-                if (new_connection != -1) break;<br />\r
-              </span>\r
-              }<br />\r
-            </span>\r
-            }<br />\r
-            if (new_connection != -1) break;<br />\r
-          </span>\r
-          }<br />\r
-          <strong>accept_mutex_off ();</strong><br />\r
-          process the new_connection;<br />\r
-        </span>\r
-        }\r
-      </code></p></div>\r
-\r
-      <p><a id="serialize" name="serialize">Les fonctions</a>\r
-      <code>accept_mutex_on</code> et <code>accept_mutex_off</code>\r
-      implémentent un sémaphore permettant une exclusion mutuelle. Un seul\r
-      processus enfant à la fois peut posséder le mutex. Plusieurs choix se\r
-      présentent pour implémenter ces mutex. Ce choix est défini dans\r
-      <code>src/conf.h</code> (versions antérieures à 1.3) ou\r
-      <code>src/include/ap_config.h</code> (versions 1.3 ou supérieures).\r
-      Certaines architectures ne font pas ce choix du mode de verrouillage ;\r
-      l'utilisation de directives\r
-      <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> multiples sur ces\r
-      architectures est donc peu sûr.</p>\r
-\r
-      <p>On peut utiliser la directive\r
-      <code class="directive"><a href="../mod/mpm_common.html#acceptmutex">AcceptMutex</a></code> pour modifier\r
-      l'implémentation du mutex sélectionnée à l'exécution.</p>\r
-\r
-      <dl>\r
-        <dt><code>AcceptMutex flock</code></dt>\r
-\r
-        <dd>\r
-          <p>Cette méthode utilise l'appel système <code>flock(2)</code> pour\r
-         créer un fichier verrou (dont la localisation est définie par la\r
-         directive <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code>.</p>\r
-        </dd>\r
-\r
-        <dt><code>AcceptMutex fcntl</code></dt>\r
-\r
-        <dd>\r
-          <p>Cette méthode utilise l'appel système <code>fcntl(2)</code> pour\r
-         créer un fichier verrou ((dont la localisation est définie par la\r
-         directive <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code>.</p>\r
-        </dd>\r
-\r
-        <dt><code>AcceptMutex sysvsem</code></dt>\r
-\r
-        <dd>\r
-          <p>(Versions 1.3 ou supérieures) Cette méthode utilise les sémaphores\r
-         style SysV pour implémenter les mutex. Malheureusement, les\r
-         sémaphores style SysV ont quelques effets de bord néfastes. L'un\r
-         d'entre eux est la possibilité pour Apache de s'arrêter sans\r
-         "faire le ménage" dans les sémaphores (voir la page de manuel de\r
-         <code>ipcs(8)</code>). Un autre effet de bord est introduit par\r
-         l'API des sémaphores qui permet à tout CGI s'exécutant sous le même\r
-         uid que le serveur web d'effectuer une attaque par déni de service\r
-         (c'est à dire <em>tous</em> les CGIs, à moins que vous n'utilisiez\r
-         un programme comme <code class="program"><a href="../programs/suexec.html">suexec</a></code> ou\r
-         <code>cgiwrapper</code>)..</p>\r
-        </dd>\r
-\r
-        <dt><code>AcceptMutex pthread</code></dt>\r
-\r
-        <dd>\r
-          <p>(versions 1.3 ou supérieures) Cette méthode utilise les mutex\r
-         POSIX et devrait fonctionner sur toute architecture implémentant\r
-         de manière complète la spécification concernant les threads POSIX ;\r
-         il semble cependant qu'elle ne fonctionne que sur Solaris (versions\r
-         2.5 ou supérieures), et sous certaines configurations seulement. Si\r
-         vous tentez l'expérience, votre serveur risque de se bloquer et de ne\r
-         plus répondre à vos sollicitations. Par contre, les serveurs\r
-         n'hébergeant que du contenu statique devraient fonctionner\r
-         correctement.</p>\r
-        </dd>\r
-\r
-        <dt><code>AcceptMutex posixsem</code></dt>\r
-\r
-        <dd>\r
-          <p>(Versions 2.0 ou supérieures) Cette méthode utilise les sémaphores\r
-         POSIX. L'appartenance du sémaphore n'est pas récupérée quand un\r
-         thread du processus qui détient le mutex provoque une erreur de\r
-         segmentation, ce qui a pour effet de bloquer le serveur.</p>\r
-        </dd>\r
-\r
-      </dl>\r
-\r
-      <p>Si votre système propose une méthode de sérialisation différente de\r
-      celles de la liste ci-dessus, il pourrait être intéressant d'ajouter à\r
-      APR le code correspondant.</p>\r
-\r
-      <p>Une autre solution qui a été imaginée mais jamais implémentée, consiste\r
-      à sérialiser partiellement la boucle -- c'est à dire y faire entrer un\r
-      certain nombre de processus. Ceci ne présenterait un intérêt que sur les\r
-      machines multiprocesseurs où plusieurs processus enfants peuvent\r
-      s'exécuter simultanément, et encore, la sérialisation ne tire pas\r
-      vraiment parti de toute la bande passante. C'est une possibilité\r
-      d'investigation future, mais demeure de priorité basse car les serveurs\r
-      web à architecture hautement parallèle ne sont pas la norme.</p>\r
-\r
-      <p>Pour bien faire, vous devriez faire fonctionner votre serveur sans\r
-      directives <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> multiples\r
-      si vous visez les performances les plus élevées.\r
-      Mais lisez ce qui suit.</p>\r
-\r
-    \r
-\r
-    <h3>accept Serialization - point de connexion à un programme (sockets) unique</h3>\r
-\r
-      \r
-\r
-      <p>Ce qui précède convient pour les serveurs à sockets multiples, mais\r
-      qu'en est-il des serveurs à socket unique ? En théorie, ils ne\r
-      devraient pas rencontrer les mêmes problèmes car tous les processus\r
-      enfants peuvent se bloquer dans <code>accept(2)</code> jusqu'à ce qu'une\r
-      connexion arrive, et ils ne sont pas utilisés à ne rien faire. En\r
-      pratique, ceci dissimule un même comportement de bouclage\r
-      discuté plus haut dans la solution non-blocante. De la manière dont\r
-      sont implémentées les piles TCP, le noyau réactive véritablement tous les\r
-      processus bloqués dans <code>accept</code> quand une seule connexion\r
-      arrive. Un de ces processus prend la connexion en compte et retourne\r
-      dans l'espace utilisateur, les autres bouclant dans l'espace du\r
-      noyau et se désactivant quand ils s'aperçoivent qu'il n'y a pas de\r
-      connexion pour eux. Ce bouclage est invisible depuis le code de l'espace\r
-      utilisateur, mais il est quand-même présent. Ceci peut conduire à la\r
-      même augmentation de charge à perte que la solution non blocante au cas\r
-      des sockets multiples peut induire.</p>\r
-\r
-      <p>Pour cette raison, il apparaît que de nombreuses architectures se\r
-      comportent plus "proprement" si on sérialise même dans le cas d'une socket\r
-      unique. Il s'agit en fait du comportement par défaut dans la plupart des\r
-      cas. Des expériences poussées sous Linux (noyau 2.0.30 sur un\r
-      biprocesseur Pentium pro 166 avec 128 Mo de RAM) ont montré que la\r
-      sérialisation d'une socket unique provoque une diminution inférieure à 3%\r
-      du nombre de requêtes par secondes par rapport au traitement non\r
-      sérialisé. Mais le traitement non sérialisé des sockets uniques induit\r
-      un temps de réponse supplémentaire de 100 ms pour chaque requête. Ce\r
-      temps de réponse est probablement provoqué par une limitation sur les\r
-      lignes à haute charge, et ne constitue un problème que sur les réseaux\r
-      locaux. Si vous voulez vous passer de la sérialisation des sockets\r
-      uniques, vous pouvez définir\r
-      <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code> et les\r
-      serveurs à socket unique ne pratiqueront plus du tout la\r
-      sérialisation.</p>\r
-\r
-    \r
-\r
-    <h3>Fermeture en prenant son temps (Lingering close)</h3>\r
-\r
-      \r
-\r
-      <p>Comme discuté dans <a href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt">\r
-      draft-ietf-http-connection-00.txt</a> section 8, pour implémenter de\r
-      manière <strong>fiable</strong> le protocole, un serveur HTTP doit fermer\r
-      les deux directions d'une communication indépendamment (rappelez-vous\r
-      qu'une connexion TCP est bidirectionnelle, chaque direction étant\r
-      indépendante de l'autre). Ce fait, souvent ignoré par les autres\r
-      serveurs, est implémenté correctement dans Apache depuis la\r
-      version 1.2.</p>\r
-\r
-      <p>Quand cette fonctionnalité fut ajoutée à Apache, elle causa une\r
-      avalanche de problèmes sur plusieurs versions d'Unix à cause d'une\r
-      implémentation à courte vue. La spécification TCP ne précise pas que\r
-      l'état <code>FIN_WAIT_2</code> possède un temps de réponse mais elle ne\r
-      l'exclut pas. Sur les systèmes qui n'introduisent pas ce temps de\r
-      réponse, Apache 1.2 induit de nombreux blocages définitifs de socket\r
-      dans l'état <code>FIN_WAIT_2</code>. On peut eviter ceci dans de nombreux\r
-      cas tout simplement en mettant à jour TCP/IP avec le dernier patch mis à\r
-      disposition par le fournisseur. Dans les cas où le fournisseur n'a\r
-      jamais fourni de patch (par exemple, SunOS4 -- bien que les utilisateurs\r
-      possédant une license source puissent le patcher eux-mêmes), nous avons\r
-      décidé de désactiver cette fonctionnalité.</p>\r
-\r
-      <p>Il y a deux méthodes pour arriver à ce résultat. La première est\r
-      l'option de socket <code>SO_LINGER</code>. Mais le sort a voulu que cette\r
-      solution ne soit jamais implémentée correctement dans la plupart des\r
-      piles TCP/IP. Et même dans les rares cas où cette solution a été\r
-      implémentée correctement (par exemple Linux 2.0.31), elle se\r
-      montre beaucoup plus gourmande (en temps processeur) que la solution\r
-      suivante.</p>\r
-\r
-      <p>Pour la plus grande partie, Apache implémente cette solution à l'aide\r
-      d'une fonction appelée <code>lingering_close</code> (définie dans\r
-      <code>http_main.c</code>). La fonction ressemble approximativement à\r
-      ceci :</p>\r
-\r
-      <div class="example"><p><code>\r
-        void lingering_close (int s)<br />\r
-        {<br />\r
-        <span class="indent">\r
-          char junk_buffer[2048];<br />\r
-          <br />\r
-          /* shutdown the sending side */<br />\r
-          shutdown (s, 1);<br />\r
-          <br />\r
-          signal (SIGALRM, lingering_death);<br />\r
-          alarm (30);<br />\r
-          <br />\r
-          for (;;) {<br />\r
-          <span class="indent">\r
-            select (s for reading, 2 second timeout);<br />\r
-            if (error) break;<br />\r
-            if (s is ready for reading) {<br />\r
-            <span class="indent">\r
-              if (read (s, junk_buffer, sizeof (junk_buffer)) &lt;= 0) {<br />\r
-              <span class="indent">\r
-                break;<br />\r
-              </span>\r
-              }<br />\r
-              /* just toss away whatever is here */<br />\r
-            </span>\r
-            }<br />\r
-          </span>\r
-          }<br />\r
-          <br />\r
-          close (s);<br />\r
-        </span>\r
-        }\r
-      </code></p></div>\r
-\r
-      <p>Ceci ajoute naturellement un peu de charge à la fin d'une connexion,\r
-      mais s'avère nécessaire pour une implémentation fiable. Comme HTTP/1.1\r
-      est de plus en plus présent et que toutes les connexions sont\r
-      persistentes, la charge sera amortie par la multiplicité des requêtes.\r
-      Si vous voulez jouer avec le feu en désactivant cette fonctionnalité,\r
-      vous pouvez définir <code>NO_LINGCLOSE</code>, mais c'est fortement\r
-      déconseillé. En particulier, comme les connexions persistantes en\r
-      pipeline de HTTP/1.1 commencent à être utilisées,\r
-      <code>lingering_close</code> devient une absolue nécessité (et les\r
-      <a href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">\r
-      connexions en pipeline sont plus rapides</a> ; vous avez donc tout\r
-      intérêt à les supporter).</p>\r
-\r
-    \r
-\r
-    <h3>Fichier tableau de bord (Scoreboard file)</h3>\r
-\r
-      \r
-\r
-      <p>Les processus parent et enfants d'Apache communiquent entre eux à\r
-      l'aide d'un objet appelé "Tableau de bord" (Scoreboard). Idéalement, cet\r
-      échange devrait s'effectuer en mémoire partagée. Pour les systèmes\r
-      d'exploitation auxquels nous avons eu accès, ou pour lesquels nous avons\r
-      obtenu des informations suffisamment détaillées pour effectuer un\r
-      portage, cet échange est en général implémenté en utilisant la mémoire\r
-      partagée. Pour les autres, on utilise par défaut un fichier d'échange sur\r
-      disque. Le fichier d'échange sur disque est non seulement lent, mais\r
-      aussi peu fiable (et propose moins de fonctionnalités). Recherchez dans\r
-      le fichier <code>src/main/conf.h</code> correspondant à votre\r
-      architecture soit <code>USE_MMAP_SCOREBOARD</code>, soit\r
-      <code>USE_SHMGET_SCOREBOARD</code>. La définition de l'un des deux\r
-      (ainsi que leurs compagnons respectifs <code>HAVE_MMAP</code> et\r
-      <code>HAVE_SHMGET</code>), active le code fourni pour la mémoire\r
-      partagée. Si votre système propose une autre solution pour la gestion de\r
-      la mémoire partagée, éditez le fichier <code>src/main/http_main.c</code>\r
-      et ajoutez la portion de code nécessaire pour pouvoir l'utiliser dans\r
-      Apache (Merci de nous envoyer aussi le patch correspondant).</p>\r
-\r
-      <div class="note">Note à caractère historique : le portage d'Apache sous Linux\r
-      n'utilisait pas la mémoire partagée avant la version 1.2. Ceci entraînait\r
-      un comportement très rudimentaire et peu fiable des versions antérieures\r
-      d'Apache sous Linux.</div>\r
-\r
-    \r
-\r
-    <h3>DYNAMIC_MODULE_LIMIT</h3>\r
-\r
-      \r
-\r
-      <p>Si vous n'avez pas l'intention d'utiliser les modules chargés\r
-      dynamiquement (ce qui est probablement le cas si vous êtes en train de\r
-      lire ce document afin de personnaliser votre serveur en recherchant le\r
-      moindre des gains en performances), vous pouvez ajouter la définition\r
-      <code>-DDYNAMIC_MODULE_LIMIT=0</code> à la construction de votre serveur.\r
-      Ceci aura pour effet de libérer la mémoire RAM allouée pour le\r
-      chargement dynamique des modules.</p>\r
-\r
-    \r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="trace" id="trace">Appendice : Analyse détaillée d'une trace</a></h2>\r
-\r
-    \r
-\r
-    <p>Voici la trace d'un appel système d'Apache 2.0.38 avec le MPM worker\r
-    sous Solaris 8. Cette trace a été collectée à l'aide de la commande :</p>\r
-\r
-    <div class="example"><p><code>\r
-      truss -l -p <var>httpd_child_pid</var>.\r
-    </code></p></div>\r
-\r
-    <p>L'option <code>-l</code> demande à truss de tracer l'ID du LWP\r
-    (lightweight process--la version de Solaris des threads niveau noyau) qui\r
-    invoque chaque appel système.</p>\r
-\r
-    <p>Les autres systèmes peuvent proposer des utilitaires de traçage\r
-    des appels système différents comme <code>strace</code>,\r
-    <code>ktrace</code>, ou <code>par</code>. Ils produisent cependant tous une\r
-    trace similaire.</p>\r
-\r
-    <p>Dans cette trace, un client a demandé un fichier statique de 10 ko au\r
-    démon httpd. Le traçage des requêtes pour des contenus non statiques\r
-    ou comportant une négociation de contenu a une présentation\r
-    différente (et même assez laide dans certains cas).</p>\r
-\r
-    <div class="example"><pre>/67:    accept(3, 0x00200BEC, 0x00200C0C, 1) (sleeping...)\r
-/67:    accept(3, 0x00200BEC, 0x00200C0C, 1)            = 9</pre></div>\r
-\r
-    <p>Dans cette trace, le thread à l'écoute s'exécute à l'intérieur de\r
-    LWP #67.</p>\r
-\r
-    <div class="note">Notez l'absence de la sérialisation d'<code>accept(2)</code>. Sur\r
-    cette plateforme spécifique, le MPM worker utilise un accept non sérialisé\r
-    par défaut sauf s'il est en écoute sur des ports multiples.</div>\r
-\r
-    <div class="example"><pre>/65:    lwp_park(0x00000000, 0)                         = 0\r
-/67:    lwp_unpark(65, 1)                               = 0</pre></div>\r
-\r
-    <p>Après avoir accepté la connexion, le thread à l'écoute réactive un\r
-    thread du worker pour effectuer le traitement de la requête. Dans cette\r
-    trace, le thread du worker qui traite la requête est associé à\r
-    LWP #65.</p>\r
-\r
-    <div class="example"><pre>/65:    getsockname(9, 0x00200BA4, 0x00200BC4, 1)       = 0</pre></div>\r
-\r
-    <p>Afin de pouvoir implémenter les hôtes virtuels, Apache doit connaître\r
-    l'adresse du socket local utilisé pour accepter la connexion. On pourrait\r
-    supprimer cet appel dans de nombreuses situations (par exemple dans le cas\r
-    où il n'y a pas d'hôte virtuel ou dans le cas où les directives\r
-    <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> contiennent des adresses\r
-    sans caractères de substitution). Mais aucun effort n'a été accompli à ce\r
-    jour pour effectuer ces optimisations.</p>\r
-\r
-    <div class="example"><pre>/65:    brk(0x002170E8)                                 = 0\r
-/65:    brk(0x002190E8)                                 = 0</pre></div>\r
-\r
-    <p>L'appel <code>brk(2)</code> alloue de la mémoire dans le tas. Ceci est\r
-    rarement visible dans une trace d'appel système, car le démon httpd\r
-    utilise des allocateurs mémoire de son cru (<code>apr_pool</code> et\r
-    <code>apr_bucket_alloc</code>) pour la plupart des traitements de requêtes.\r
-    Dans cette trace, le démon httpd vient juste de démarrer, et il doit\r
-    appeler <code>malloc(3)</code> pour réserver les blocs de mémoire\r
-    nécessaires à la création de ses propres allocateurs de mémoire.</p>\r
-\r
-    <div class="example"><pre>/65:    fcntl(9, F_GETFL, 0x00000000)                   = 2\r
-/65:    fstat64(9, 0xFAF7B818)                          = 0\r
-/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B910, 2190656) = 0\r
-/65:    fstat64(9, 0xFAF7B818)                          = 0\r
-/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B914, 2190656) = 0\r
-/65:    setsockopt(9, 65535, 8192, 0xFAF7B918, 4, 2190656) = 0\r
-/65:    fcntl(9, F_SETFL, 0x00000082)                   = 0</pre></div>\r
-\r
-    <p>Ensuite, le thread de worker passe la connexion du client (descripteur\r
-    de fichier 9) en mode non blocant. Les appels <code>setsockopt(2)</code>\r
-    et <code>getsockopt(2)</code> constituent un effet de bord de la manière\r
-    dont la libc de Solaris utilise <code>fcntl(2)</code> pour les sockets.</p>\r
-\r
-    <div class="example"><pre>/65:    read(9, " G E T   / 1 0 k . h t m".., 8000)     = 97</pre></div>\r
-\r
-    <p>Le thread de worker lit la requête du client.</p>\r
-\r
-    <div class="example"><pre>/65:    stat("/var/httpd/apache/httpd-8999/htdocs/10k.html", 0xFAF7B978) = 0\r
-/65:    open("/var/httpd/apache/httpd-8999/htdocs/10k.html", O_RDONLY) = 10</pre></div>\r
-\r
-    <p>Ce démon httpd a été configuré avec les options\r
-    <code>Options FollowSymLinks</code> et <code>AllowOverride None</code>. Il\r
-    n'a donc ni besoin d'appeler <code>lstat(2)</code> pour chaque répertoire\r
-    du chemin du fichier demandé, ni besoin de vérifier la présence de fichiers\r
-    <code>.htaccess</code>. Il appelle simplement <code>stat(2)</code> pour\r
-    vérifier d'une part que le fichier existe, et d'autre part que c'est un\r
-    fichier régulier, et non un répertoire.</p>\r
-\r
-    <div class="example"><pre>/65:    sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C)      = 10269</pre></div>\r
-\r
-    <p>Dans cet exemple, le démon httpd peut envoyer l'en-tête de la réponse\r
-    HTTP et le fichier demandé à l'aide d'un seul appel système\r
-    <code>sendfilev(2)</code>. La sémantique de sendfile varie en fonction des\r
-    systèmes d'exploitation. Sur certains autres systèmes, il faut faire un\r
-    appel à <code>write(2)</code> ou <code>writev(2)</code> pour envoyer les\r
-    en-têtes avant d'appeler <code>sendfile(2)</code>.</p>\r
-\r
-    <div class="example"><pre>/65:    write(4, " 1 2 7 . 0 . 0 . 1   -  ".., 78)      = 78</pre></div>\r
-\r
-    <p>Cet appel à <code>write(2)</code> enregistre la requête dans le journal\r
-    des accès. Notez qu'une des choses manquant à cette trace est un appel à\r
-    <code>time(2)</code>. A la différence d'Apache 1.3, Apache 2.x utilise\r
-    <code>gettimeofday(3)</code> pour consulter l'heure. Sur certains systèmes\r
-    d'exploitation, comme Linux ou Solaris, <code>gettimeofday</code> est\r
-    implémenté de manière optimisée de telle sorte qu'il consomme moins de\r
-    ressources qu'un appel système habituel.</p>\r
-\r
-    <div class="example"><pre>/65:    shutdown(9, 1, 1)                               = 0\r
-/65:    poll(0xFAF7B980, 1, 2000)                       = 1\r
-/65:    read(9, 0xFAF7BC20, 512)                        = 0\r
-/65:    close(9)                                        = 0</pre></div>\r
-\r
-    <p>Le thread de worker effectue une fermeture "en prenant son temps"\r
-    (lingering close) de la connexion.</p>\r
-\r
-    <div class="example"><pre>/65:    close(10)                                       = 0\r
-/65:    lwp_park(0x00000000, 0)         (sleeping...)</pre></div>\r
-\r
-    <p>Enfin, le thread de worker ferme le fichier qu'il vient de délivrer et\r
-    se bloque jusqu'à ce que le thread en écoute lui assigne une autre\r
-    connexion.</p>\r
-\r
-    <div class="example"><pre>/67:    accept(3, 0x001FEB74, 0x001FEB94, 1) (sleeping...)</pre></div>\r
-\r
-    <p>Pendant ce temps, le thread à l'écoute peut accepter une autre connexion\r
-    à partir du moment où il a assigné la connexion présente à un thread de\r
-    worker (selon une certaine logique de contrôle de flux dans le MPM worker\r
-    qui impose des limites au thread à l'écoute si tous les threads de worker\r
-    sont occupés). Bien que cela n'apparaisse pas dans cette trace,\r
-    l'<code>accept(2)</code> suivant peut (et le fait en général, en situation\r
-    de charge élevée) s'exécuter en parallèle avec le traitement de la\r
-    connexion qui vient d'être acceptée par le thread de worker.</p>\r
-\r
-  </div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="../en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/misc/perf-tuning.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ko/misc/perf-tuning.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Optimisation des performances d'Apache - Serveur Apache HTTP</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Documentations diverses</a></div><div id="page-content"><div id="preamble"><h1>Optimisation des performances d'Apache</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="../en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/misc/perf-tuning.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ko/misc/perf-tuning.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div>
+
+
+    <p>Apache 2.x est un serveur web à usage général, conçu dans un but
+    d'équilibre entre souplesse, portabilité et performances. Bien que non
+    conçu dans le seul but d'établir une référence en la matière,
+    Apache 2.x est capable de hautes performances dans de nombreuses situations
+    du monde réel.</p>
+
+    <p>Comparée à Apache 1.3, la version 2.x comporte de nombreuses
+    optimisations supplémentaires permettant d'améliorer le débit du serveur
+    et sa personnalisation. La plupart de ces améliorations sont activées par
+    défaut. Cependant, certains choix de configuration à la compilation et à
+    l'exécution peuvent affecter les performances de manière significative. Ce
+    document décrit les options qu'un administrateur de serveur peut configurer
+    pour améliorer les performances d'une installation d'Apache 2.x. Certaines
+    de ces options de configuration permettent au démon httpd de mieux tirer
+    parti des possibilités du matériel et du système d'exploitation, tandis
+    que d'autres permettent à l'administrateur de privilégier la vitesse
+    par rapport aux fonctionnalités.</p>
+
+  </div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#hardware">Problèmes matériels et relatifs au système d'exploitation</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#runtime">Optimisation de la configuration à l'exécution</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#compiletime">Optimisation de la configuration à la compilation</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#trace">Appendice : Analyse détaillée d'une trace</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="hardware" id="hardware">Problèmes matériels et relatifs au système d'exploitation</a></h2>
+
+    
+
+    <p>Le principal problème matériel qui affecte les performances du serveur
+    web est la mémoire vive (RAM). Un serveur web ne devrait jamais avoir à
+    utiliser le swap, car le swapping augmente le temps de réponse de chaque
+    requête au delà du point que les utilisateurs considèrent comme
+    "trop lent". Ceci incite les utilisateurs à cliquer sur "Stop", puis
+    "Charger à nouveau", ce qui a pour effet d'augmenter encore la charge
+    du serveur. Vous pouvez, et même devez définir la valeur de la directive
+    <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> de façon à ce que
+    votre serveur ne lance pas un nombre de processus enfants tel qu'il
+    commence à faire du swapping. La méthode pour y parvenir est
+    simple : déterminez la taille de votre processus Apache standard en
+    consultant votre liste de processus à l'aide d'un outil tel que
+    <code>top</code>, et divisez votre quantité totale de mémoire disponible
+    par cette taille, tout en gardant un espace suffisant
+    pour les autres processus.</p>
+
+    <p>Hormis ce réglage relatif à la mémoire, le reste est trivial : le
+    processeur, la carte réseau et les disques doivent être suffisamment
+    rapides, où "suffisamment rapide" doit être déterminé par
+    l'expérience.</p>
+
+    <p>Le choix du système d'exploitation dépend principalement du
+    contexte local. Voici cependant quelques conseils qui se sont
+    généralement avérés utiles :</p>
+
+    <ul>
+      <li>
+        <p>Exécutez la dernière version stable et le niveau de patches le
+       plus haut du système d'exploitation que vous avez choisi. De nombreux
+       éditeurs de systèmes d'exploitation ont amélioré de manière
+       significative les performances de leurs piles TCP et de leurs
+       bibliothèques de thread ces dernières années.</p>
+      </li>
+
+      <li>
+        <p>Si votre système d'exploitation possède un appel système
+       <code>sendfile(2)</code>, assurez-vous d'avoir installé la version
+       et/ou les patches nécessaires à son activation. (Pour Linux, par
+       exemple, cela se traduit par Linux 2.4 ou plus. Pour les versions
+       anciennes de Solaris 8, vous pouvez être amené à appliquer un patch.)
+       Sur les systèmes où il est disponible, <code>sendfile</code> permet
+       à Apache 2 de servir les contenus statiques plus rapidement, tout en
+       induisant une charge CPU inférieure.</p>
+      </li>
+    </ul>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="runtime" id="runtime">Optimisation de la configuration à l'exécution</a></h2>
+
+    
+
+    <table class="related"><tr><th>Modules Apparentés</th><th>Directives Apparentées</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code></li><li><code class="module"><a href="../mod/mpm_common.html">mpm_common</a></code></li><li><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code></li><li><code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code></li><li><code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code></li><li><code class="directive"><a href="../mod/core.html#enablemmap">EnableMMAP</a></code></li><li><code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code></li><li><code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code></li><li><code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code></li><li><code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code></li><li><code class="directive"><a href="../mod/core.html#options">Options</a></code></li><li><code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code></li></ul></td></tr></table>
+
+    <h3><a name="dns" id="dns">HostnameLookups et autres considérations à propos du DNS</a></h3>
+
+      
+
+      <p>Avant Apache 1.3, la directive
+      <code class="directive"><a href="../mod/core.html#hostnamelookups">HostnameLookups</a></code> était positionnée
+      par défaut à <code>On</code>. Ce réglage augmente le temps de réponse de
+      chaque requête car il entraîne une recherche DNS et le traitement de la
+      requête ne pourra pas être achevé tant que cette recherche ne sera
+      pas terminée. Avec Apache 1.3, ce réglage est défini par défaut à
+      <code>Off</code>. Si vous souhaitez que les adresses dans vos fichiers
+      journaux soient résolues en noms d'hôtes, utilisez le programme
+      <code class="program"><a href="../programs/logresolve.html">logresolve</a></code> fourni avec Apache, ou un des nombreux
+      paquets générateurs de rapports sur les journaux disponibles.</p>
+
+      <p>Il est recommandé d'effectuer ce genre de traitement a posteriori
+      de vos fichiers journaux sur une autre machine que celle qui héberge le
+      serveur web en production, afin que cette activité n'affecte pas les
+      performances du serveur.</p>
+
+      <p>Si vous utilisez une directive
+      <code><code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code>from domain</code>
+      ou
+      <code><code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> from domain</code>
+      (ce qui signifie que vous utilisez un nom d'hôte ou un nom de domaine à
+      la place d'une adresse IP), vous devrez compter avec deux recherches
+      DNS (une recherche inverse suivie d'une recherche directe pour
+      s'assurer que l'adresse IP n'a pas été usurpée). C'est pourquoi il est
+      préférable, pour améliorer les performances, d'utiliser des adresses IP
+      plutôt que des noms lorsqu'on utilise ces directives, du moins chaque
+      fois que c'est possible.</p>
+
+      <p>Notez qu'il est possible de modifier la portée des directives, en les
+      plaçant par exemple à l'intérieur d'une section
+      <code>&lt;Location /server-status&gt;</code>. Les recherches DNS ne
+      seront alors effectuées que pour les requêtes qui satisfont aux critères.
+      Voici un exemple qui désactive les recherches DNS sauf pour les fichiers
+      <code>.html</code> et <code>.cgi</code> :</p>
+
+      <div class="example"><p><code>
+        HostnameLookups off<br />
+        &lt;Files ~ "\.(html|cgi)$"&gt;<br />
+        <span class="indent">
+          HostnameLookups on<br />
+        </span>
+        &lt;/Files&gt;
+      </code></p></div>
+
+      <p>Mais même dans ce cas, si vous n'avez besoin de noms DNS que dans
+      certains CGIs, vous pouvez effectuer l'appel à <code>gethostbyname</code>
+      dans les CGIs spécifiques qui en ont besoin.</p>
+
+    
+
+    <h3><a name="symlinks" id="symlinks">FollowSymLinks et SymLinksIfOwnerMatch</a></h3>
+
+      
+
+      <p>Chaque fois que la ligne <code>Options FollowSymLinks</code> sera
+      absente, ou que la ligne <code>Options SymLinksIfOwnerMatch</code> sera
+      présente dans votre espace d'adressage, Apache devra effectuer des
+      appels système supplémentaires pour vérifier la présence de liens
+      symboliques. Un appel supplémentaire par élément du chemin du fichier.
+      Par exemple, si vous avez :</p>
+
+      <div class="example"><p><code>
+        DocumentRoot /www/htdocs<br />
+        &lt;Directory /&gt;<br />
+        <span class="indent">
+          Options SymLinksIfOwnerMatch<br />
+        </span>
+        &lt;/Directory&gt;
+      </code></p></div>
+
+      <p>et si une requête demande l'URI <code>/index.html</code>, Apache
+      effectuera un appel à <code>lstat(2)</code> pour
+      <code>/www</code>, <code>/www/htdocs</code>, et
+      <code>/www/htdocs/index.html</code>. Les résultats de ces appels à
+      <code>lstat</code> ne sont jamais mis en cache, ils devront donc être
+      générés à nouveau pour chaque nouvelle requête. Si vous voulez absolument
+      vérifier la sécurité des liens symboliques, vous pouvez utiliser une
+      configuration du style :</p>
+
+      <div class="example"><p><code>
+        DocumentRoot /www/htdocs<br />
+        &lt;Directory /&gt;<br />
+        <span class="indent">
+          Options FollowSymLinks<br />
+        </span>
+        &lt;/Directory&gt;<br />
+        <br />
+        &lt;Directory /www/htdocs&gt;<br />
+        <span class="indent">
+          Options -FollowSymLinks +SymLinksIfOwnerMatch<br />
+        </span>
+        &lt;/Directory&gt;
+      </code></p></div>
+
+      <p>Ceci évite au moins les vérifications supplémentaires pour le chemin
+      défini par <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>. Notez que
+      vous devrez ajouter des sections similaires si vous avez des chemins
+      définis par les directives
+      <code class="directive"><a href="../mod/mod_alias.html#alias">Alias</a></code> ou
+      <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> en dehors de
+      la racine de vos documents. Pour améliorer les performances, et supprimer
+      toute protection des liens symboliques, ajoutez l'option
+      <code>FollowSymLinks</code> partout, et n'utilisez jamais l'option
+      <code>SymLinksIfOwnerMatch</code>.</p>
+
+    
+
+    <h3><a name="htacess" id="htacess">AllowOverride</a></h3>
+
+      
+
+      <p>Dans toute partie de votre espace d'adressage où vous autoriserez
+      la surcharge de la configuration (en général à l'aide de fichiers
+      <code>.htaccess</code>), Apache va tenter d'ouvrir <code>.htaccess</code>
+      pour chaque élément du chemin du fichier demandé. Par exemple, si vous
+      avez : </p>
+
+      <div class="example"><p><code>
+        DocumentRoot /www/htdocs<br />
+        &lt;Directory /&gt;<br />
+        <span class="indent">
+          AllowOverride all<br />
+        </span>
+        &lt;/Directory&gt;
+      </code></p></div>
+
+      <p>et qu'une requête demande l'URI <code>/index.html</code>, Apache
+      tentera d'ouvrir <code>/.htaccess</code>, <code>/www/.htaccess</code>,
+      et <code>/www/htdocs/.htaccess</code>. Les solutions sont similaires à
+      celles évoquées précédemment pour <code>Options FollowSymLinks</code>.
+      Pour améliorer les performances, utilisez <code>AllowOverride None</code>
+      pour tous les niveaux de votre espace d'adressage.</p>
+
+    
+
+    <h3><a name="negotiation" id="negotiation">Négociation</a></h3>
+
+      
+
+      <p>Dans la mesure du possible, évitez toute négociation de contenu si
+      vous tenez au moindre gain en performances. En pratique toutefois,
+      les bénéfices de la négociation l'emportent souvent sur la diminution
+      des performances.
+      Il y a cependant un cas dans lequel vous pouvez accélérer le serveur.
+      Au lieu d'utiliser une directive générique comme :</p>
+
+      <div class="example"><p><code>
+        DirectoryIndex index
+      </code></p></div>
+
+      <p>utilisez une liste explicite d'options :</p>
+
+      <div class="example"><p><code>
+        DirectoryIndex index.cgi index.pl index.shtml index.html
+      </code></p></div>
+
+      <p>où vous placez le choix courant en première position.</p>
+
+      <p>Notez aussi que créer explicitement un fichier de
+      <code>correspondances de type</code> fournit de meilleures performances
+      que l'utilisation des <code>MultiViews</code>, car les informations
+      nécessaires peuvent être simplement obtenues en lisant ce fichier, sans
+      avoir à parcourir le répertoire à la recherche de types de fichiers.</p>
+
+    <p>Par conséquent, si la négociation de contenu est nécessaire pour votre
+    site, préférez les fichiers de <code>correspondances de type</code> aux
+    directives <code>Options MultiViews</code> pour mener à bien cette
+    négociation. Se référer au document sur la
+    <a href="../content-negotiation.html">Négociation de contenu</a> pour une
+    description complète des méthodes de négociation, et les instructions
+    permettant de créer des fichiers de <code>correspondances de type</code>.</p>
+
+    
+
+    <h3>Transfert en mémoire</h3>
+
+      
+
+      <p>Dans les situations où Apache 2.x doit consulter le contenu d'un
+      fichier en train d'être servi - par exemple à l'occasion du traitement
+      d'une inclusion côté serveur - il transfère en général le fichier en
+      mémoire si le système d'exploitation supporte une forme quelconque
+      de <code>mmap(2)</code>.</p>
+
+      <p>Sur certains systèmes, ce transfert en mémoire améliore les
+      performances. Dans certains cas, ce transfert peut toutefois les dégrader
+      et même diminuer la stabilité du démon httpd :</p>
+
+      <ul>
+        <li>
+          <p>Dans certains systèmes d'exploitation, <code>mmap</code> devient
+         moins efficace que <code>read(2)</code> quand le nombre de
+         processeurs augmente. Sur les serveurs multiprocesseurs sous Solaris,
+         par exemple, Apache 2.x sert parfois les fichiers consultés par le
+         serveur plus rapidement quand <code>mmap</code> est désactivé.</p>
+        </li>
+
+        <li>
+          <p>Si vous transférez en mémoire un fichier localisé dans un système
+         de fichiers monté par NFS, et si un processus sur
+         une autre machine cliente NFS supprime ou tronque le fichier, votre
+         processus peut rencontrer une erreur de bus la prochaine fois qu'il
+         essaiera d'accéder au contenu du fichier en mémoire.</p>
+        </li>
+      </ul>
+
+      <p>Pour les installations où une de ces situations peut se produire,
+      vous devez utiliser <code>EnableMMAP off</code> afin de désactiver le
+      transfert en mémoire des fichiers servis. (Note : il est possible de
+      passer outre cette directive au niveau de chaque répertoire.)</p>
+
+    
+
+    <h3>Sendfile</h3>
+
+      
+
+      <p>Dans les cas où Apache peut se permettre d'ignorer le contenu du
+      fichier à servir - par exemple, lorsqu'il sert un contenu de fichier
+      statique - il utilise en général le support sendfile du noyau si le
+      système d'exploitation supporte l'opération <code>sendfile(2)</code>.</p>
+
+      <p>Sur la plupart des plateformes, l'utilisation de sendfile améliore
+      les performances en éliminant les mécanismes de lecture et envoi séparés.
+      Dans certains cas cependant, l'utilisation de sendfile peut nuire à la
+      stabilité du démon httpd :</p>
+
+      <ul>
+        <li>
+          <p>Certaines plateformes peuvent présenter un support de sendfile
+         défaillant que la construction du système n'a pas détecté, en
+         particulier si les binaires ont été construits sur une autre machine
+         et transférés sur la machine où le support de sendfile est
+         défaillant.</p>
+        </li>
+        <li>
+          <p>Dans le cas des fichiers montés sous NFS, le noyau peut s'avérer
+         incapable de servir les fichiers réseau de manière fiable depuis
+         son propre cache.</p>
+        </li>
+      </ul>
+
+      <p>Pour les installations où une de ces situations peut se produire,
+      vous devez utiliser <code>EnableSendfile off</code> afin de désactiver
+      la mise à disposition de contenus de fichiers par sendfile. (Note : il
+      est possible de passer outre cette directive au niveau de chaque
+      répertoire.)</p>
+
+    
+
+    <h3><a name="process" id="process">Process Creation</a></h3>
+
+      
+
+      <p>Avant Apache 1.3, les directives
+      <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>,
+      <code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code>, et
+      <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code> avaient des
+      effets drastiques sur les performances de référence. En particulier,
+      Apache avait besoin d'un délai de "montée en puissance" afin d'atteindre
+      un nombre de processus enfants suffisant pour supporter la charge qui lui
+      était appliquée. Après le lancement initial des processus enfants par
+      <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>, seulement un
+      processus enfant par seconde était créé afin d'atteindre la valeur de la
+      directive <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>. Ainsi,
+      un serveur accédé par 100 clients simultanés et utilisant la valeur par
+      défaut de <code>5</code> pour la directive
+      <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>, nécessitait
+      environ 95 secondes pour lancer suffisamment de processus enfants
+      permettant de faire face à la charge. Ceci fonctionne en pratique pour
+      les serveurs en production, car ils sont rarement redémarrés. Ce n'est
+      cependant pas le cas pour les tests de référence (benchmarks) où le
+      serveur ne fonctionne que 10 minutes.</p>
+
+      <p>La règle "un processus par seconde" avait été implémentée afin
+      d'éviter l'enlisement de la machine dans le démarrage de nouveaux
+      processus enfants. Pendant que la machine est occupée à lancer des
+      processus enfants, elle ne peut pas traiter les requêtes. Mais cette
+      règle impactait tellement la perception des performances d'Apache qu'elle
+      a dû être remplacée. A partir d'Apache 1.3, le code a assoupli la règle
+      "un processus par seconde". Il va en lancer un, attendre une seconde,
+      puis en lancer deux, attendre une seconde, puis en lancer quatre et
+      ainsi de suite jusqu'à lancer 32 processus. Il s'arrêtera lorsque le
+      nombre de processus aura atteint la valeur définie par la directive
+      <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>.</p>
+
+      <p>Ceci s'avère suffisamment réactif pour pouvoir en général se passer
+      de manipuler les valeurs des directives
+      <code class="directive"><a href="../mod/prefork.html#minspareservers">MinSpareServers</a></code>,
+      <code class="directive"><a href="../mod/prefork.html#maxspareservers">MaxSpareServers</a></code> et
+      <code class="directive"><a href="../mod/mpm_common.html#startservers">StartServers</a></code>. Lorsque plus de
+      4 processus enfants sont lancés par seconde, un message est émis vers
+      le journal des erreurs. Si vous voyez apparaître souvent ce genre de
+      message, vous devez vous pencher sur ces réglages. Pour vous guider,
+      utilisez les informations délivrées par le module
+      <code class="module"><a href="../mod/mod_status.html">mod_status</a></code>.</p>
+
+    <p>À mettre en relation avec la création de processus, leur destruction
+    est définie par la valeur de la directive
+    <code class="directive"><a href="../mod/mpm_common.html#maxrequestsperchild">MaxRequestsPerChild</a></code>. Sa valeur
+    par défaut est <code>0</code>, ce qui signifie qu'il n'y a pas de limite
+    au nombre de requêtes q'un processus enfant peut traiter. Si votre
+    configuration actuelle a cette directive réglée à une valeur très basse,
+    de l'ordre de <code>30</code>, il est conseillé de l'augmenter de manière
+    significative. Si vous utilisez SunOs ou une ancienne version de Solaris,
+    utilisez une valeur de l'ordre de <code>10000</code>  à cause des fuites
+    de mémoire.</p>
+
+    <p>Lorsqu'ils sont en mode "keep-alive", les processus enfants sont
+    maintenus et ne font rien sinon attendre la prochaine requête sur la
+    connexion déjà ouverte. La valeur par défaut de <code>5</code> de la
+    directive <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code> tend à
+    minimiser cet effet. Il faut trouver le bon compromis entre la bande
+    passante réseau et les ressources du serveur. En aucun cas vous ne devez
+    choisir une valeur supérieure à <code>60</code> seconds, car
+    <a href="http://www.research.digital.com/wrl/techreports/abstracts/95.4.html">
+    la plupart des bénéfices sont alors perdus</a>.</p>
+
+    
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="compiletime" id="compiletime">Optimisation de la configuration à la compilation</a></h2>
+
+    
+
+    <h3>Choisir un Module Multi-Processus (MPM)</h3>
+
+      
+
+      <p>Apache 2.x supporte les modèles simultanés enfichables, appelés
+      <a href="../mpm.html">Modules Multi-Processus</a> (MPMs). Vous devez
+      choisir un MPM au moment de la construction d'Apache. Certaines
+      plateformes ont des modules MPM spécifiques : 
+      <code class="module"><a href="../mod/mpm_netware.html">mpm_netware</a></code>, et
+      <code class="module"><a href="../mod/mpm_winnt.html">mpm_winnt</a></code>. Sur les systèmes de type Unix, vous avez le
+      choix entre un grand nombre de modules MPM. Le choix du MPM peut affecter
+      la vitesse et l'évolutivité du démon httpd :</p>
+
+      <ul>
+
+        <li>Le MPM <code class="module"><a href="../mod/worker.html">worker</a></code> utilise plusieurs processus
+       enfants possédant chacun de nombreux threads. Chaque thread gère une
+       seule connexion à la fois. Worker est en général un bon choix pour les
+       serveurs présentant un traffic important car il possède une empreinte
+       mémoire plus petite que le MPM prefork.</li>
+
+        <li>Le MPM <code class="module"><a href="../mod/prefork.html">prefork</a></code> utilise plusieurs processus enfants
+       possédant chacun un seul thread. Chaque processus gère une seule
+       connexion à la fois. Sur de nombreux systèmes, prefork est comparable
+       en matière de vitesse à worker, mais il utilise plus de mémoire. De par
+       sa conception sans thread, prefork présente des avantages par rapport à
+       worker dans certaines situations : il peut être utilisé avec les
+       modules tiers qui ne supportent pas le threading, et son débogage est plus
+       aisé sur les platesformes présentant un support du débogage des threads
+       rudimentaire.</li>
+
+      </ul>
+
+      <p>Pour plus d'informations sur ces deux MPMs et les autres, veuillez
+      vous référer à la <a href="../mpm.html">documentation sur les
+      MPM</a>.</p>
+
+    
+
+    <h3><a name="modules" id="modules">Modules</a></h3>
+
+        
+
+        <p>Comme le contrôle de l'utilisation de la mémoire est très important
+       en matière de performance, il est conseillé d'éliminer les modules que
+       vous n'utilisez pas vraiment. Si vous avez construit ces modules en
+       tant que <a href="../dso.html">DSOs</a>, leur élimination consiste
+       simplement à commenter la directive
+       <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code> associée à ce
+       module. Ceci vous permet de vérifier si votre site fonctionne toujours
+       après la suppression de tel ou tel module.</p>
+
+        <p>Par contre, si les modules que vous voulez supprimer sont liés
+       statiquement à votre binaire Apache, vous devrez recompiler ce dernier
+       afin de pouvoir les éliminer.</p>
+
+        <p>La question qui découle de ce qui précède est évidemment de
+       savoir de quels modules vous avez besoin et desquels vous pouvez vous
+       passer. La réponse sera bien entendu différente d'un site web à
+       l'autre. Cependant, la liste <em>minimale</em> de modules nécessaire à
+       la survie de votre site contiendra certainement
+       <code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>, <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code> et
+       <code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code>. <code>mod_log_config</code> est bien
+       entendu optionnel puisque vous pouvez faire fonctionner un site web
+       en se passant de fichiers journaux ; ceci est cependant
+       déconseillé.</p>
+
+    
+
+    <h3>Opérations atomiques</h3>
+
+      
+
+      <p>Certains modules, à l'instar de <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> et des
+      versions de développement récentes du MPM worker, utilisent l'API
+      atomique d'APR. Cette API propose des opérations atomiques que l'on
+      peut utiliser pour alléger la synchronisation des threads.</p>
+
+      <p>Par défaut, APR implémente ces opérations en utilisant les
+      mécanismes les plus efficaces disponibles sur chaque plateforme cible
+      (Système d'exploitation et processeur). De nombreux processeurs modernes,
+      par exemple, possèdent une instruction qui effectue une opération
+      atomique de type comparaison et échange ou compare-and-swap (CAS) au
+      niveau matériel. Sur certaines platesformes cependant, APR utilise par
+      défaut une implémentation de l'API atomique plus lente, basée sur les
+      mutex, afin d'assurer la compatibilité avec les anciens modèles de
+      processeurs qui ne possèdent pas ce genre d'instruction. Si vous
+      construisez Apache pour une de ces platesformes, et ne prévoyez de
+      l'exécuter que sur des processeurs récents, vous pouvez sélectionner une
+      implémentation atomique plus rapide à la compilation en utilisant
+      l'option <code>--enable-nonportable-atomics</code> du
+      script configure :</p>
+
+      <div class="example"><p><code>
+        ./buildconf<br />
+        ./configure --with-mpm=worker --enable-nonportable-atomics=yes
+      </code></p></div>
+
+      <p>L'option <code>--enable-nonportable-atomics</code> concerne les
+      platesformes suivantes :</p>
+
+      <ul>
+
+        <li>Solaris sur SPARC<br />
+            Sur Solaris/SPARC, APR utilise par défaut les opérations
+           atomiques basées sur les mutex. Cependant, si vous ajoutez l'option
+           <code>--enable-nonportable-atomics</code> au script configure, APR
+           génère un code qui utilise le code opération SPARC v8plus pour des
+           opérations de compare-and-swap matériel plus rapides. Si vous
+           utilisez cette option de configure avec Apache, les opérations
+           atomiques seront plus efficaces (permettant d'alléger la charge du
+           processeur et un plus haut niveau de simultanéité), mais
+           l'exécutable produit ne fonctionnera que sur les processeurs
+           UltraSPARC.
+       </li>
+
+        <li>Linux sur x86<br />
+            Sous Linux, APR utilise par défaut les opérations atomiques basées
+           sur les mutex. Cependant, si vous ajoutez l'option
+           <code>--enable-nonportable-atomics</code> au script configure,
+           APR générera un code qui utilise un code d'opération du 486
+           pour des opérations de compare-and-swap matériel plus rapides. Le
+           code résultant est plus efficace en matière d'opérations atomiques,
+           mais l'exécutable produit ne fonctionnera que sur des processeurs
+           486 et supérieurs (et non sur des 386).
+        </li>
+
+      </ul>
+
+    
+
+    <h3>Module mod_status et ExtendedStatus On</h3>
+
+      
+
+      <p>Si vous incluez le module <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> à la
+      construction d'Apache et ajoutez <code>ExtendedStatus On</code> à sa
+      configuration, Apache va effectuer pour chaque requête deux appels à
+      <code>gettimeofday(2)</code> (ou <code>times(2)</code> selon votre
+      système d'exploitation), et (pour les versions antérieures à 1.3) de
+      nombreux appels supplémentaires à <code>time(2)</code>. Tous ces
+      appels sont effectués afin que le rapport de statut puisse contenir
+      des indications temporelles. Pour améliorer les performances, utilisez
+      <code>ExtendedStatus off</code> (qui est le réglage par défaut).</p>
+
+    
+
+    <h3>accept Serialization - points de connexion à un programme (sockets) multiples</h3>
+
+      
+
+    <div class="warning"><h3>Mise en garde :</h3>
+      <p>Cette section n'a pas été totalement mise à jour car elle ne tient pas
+      compte des changements intervenus dans la version 2.x du Serveur HTTP
+      Apache. Certaines informations sont encore pertinentes, il vous est
+      cependant conseillé de les utiliser avec prudence.</p>
+    </div>
+
+      <p>Ce qui suit est une brève discussion à propos de l'API des sockets
+      Unix. Supposons que votre serveur web utilise plusieurs directives
+      <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> afin d'écouter
+      plusieurs ports ou de multiples adresses. Afin de tester chaque socket
+      pour voir s'il a une connexion en attente, Apache utilise
+      <code>select(2)</code>. <code>select(2)</code> indique si un socket a
+      <em>zéro</em> ou <em>au moins une</em> connexion en attente. Le modèle
+      d'Apache comporte plusieurs processus enfants, et tous ceux qui sont
+      inactifs testent la présence de nouvelles connexions au même moment.
+      Une implémentation rudimentaire de ceci pourrait ressembler à
+      l'exemple suivant
+      (ces exemples ne sont pas extraits du code d'Apache, ils ne sont
+      proposés qu'à des fins pédagogiques) :</p>
+
+      <div class="example"><p><code>
+        for (;;) {<br />
+        <span class="indent">
+          for (;;) {<br />
+          <span class="indent">
+            fd_set accept_fds;<br />
+            <br />
+            FD_ZERO (&amp;accept_fds);<br />
+            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
+            <span class="indent">
+              FD_SET (i, &amp;accept_fds);<br />
+            </span>
+            }<br />
+            rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />
+            if (rc &lt; 1) continue;<br />
+            new_connection = -1;<br />
+            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
+            <span class="indent">
+              if (FD_ISSET (i, &amp;accept_fds)) {<br />
+              <span class="indent">
+                new_connection = accept (i, NULL, NULL);<br />
+                if (new_connection != -1) break;<br />
+              </span>
+              }<br />
+            </span>
+            }<br />
+            if (new_connection != -1) break;<br />
+          </span>
+          }<br />
+          process the new_connection;<br />
+        </span>
+        }
+      </code></p></div>
+
+      <p>Mais cette implémentation rudimentaire présente une sérieuse lacune.
+      Rappelez-vous que les processus enfants exécutent cette boucle au même
+      moment ; ils vont ainsi bloquer sur <code>select</code> s'ils se trouvent
+      entre deux requêtes. Tous ces processus bloqués vont se réactiver et
+      sortir de <code>select</code> quand une requête va apparaître sur un des
+      sockets (le nombre de processus enfants qui se réactivent varie en
+      fonction du système d'exploitation et des réglages de synchronisation).
+      Ils vont alors tous entrer dans la boucle et tenter un
+      <code>"accept"</code> de la connexion. Mais seulement un d'entre eux y
+      parviendra (en supposant qu'il ne reste q'une seule connexion en
+      attente), les autres vont se bloquer au niveau de <code>accept</code>.
+      Ceci verrouille vraiment ces processus de telle sorte qu'ils ne peuvent
+      plus servir de requêtes que par cet unique socket, et il en sera ainsi
+      jusqu'à ce que suffisamment de nouvelles requêtes apparaissent sur ce
+      socket pour les réactiver tous. Cette lacune a été documentée pour la
+      première fois dans
+      <a href="http://bugs.apache.org/index/full/467">PR#467</a>. Il existe
+      au moins deux solutions.</p>
+
+      <p>La première consiste à rendre les sockets non blocants. Dans ce cas,
+      <code>accept</code> ne bloquera pas les processus enfants, et ils
+      pourront continuer à s'exécuter immédiatement. Mais ceci consomme des
+      ressources processeur. Supposons que vous ayez dix processus enfants
+      inactifs dans <code>select</code>, et qu'une connexion arrive.
+      Neuf des dix processus vont se réactiver, tenter un <code>accept</code>
+      de la connexion, échouer, et boucler dans <code>select</code>, tout en
+      n'ayant finalement rien accompli. Pendant ce temps, aucun de ces processus
+      ne traite les requêtes qui arrivent sur d'autres sockets jusqu'à ce
+      qu'ils retournent dans <code>select</code>. Finalement, cette solution
+      ne semble pas très efficace, à moins que vous ne disposiez d'autant de
+      processeurs inactifs (dans un serveur multiprocesseur) que de processus
+      enfants inactifs, ce qui n'est pas une situation très courante.</p>
+
+      <p>Une autre solution, celle qu'utilise Apache, consiste à sérialiser les
+      entrées dans la boucle interne. La boucle ressemble à ceci (les
+      différences sont mises en surbrillance) :</p>
+
+      <div class="example"><p><code>
+        for (;;) {<br />
+        <span class="indent">
+          <strong>accept_mutex_on ();</strong><br />
+          for (;;) {<br />
+          <span class="indent">
+            fd_set accept_fds;<br />
+            <br />
+            FD_ZERO (&amp;accept_fds);<br />
+            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
+            <span class="indent">
+              FD_SET (i, &amp;accept_fds);<br />
+            </span>
+            }<br />
+            rc = select (last_socket+1, &amp;accept_fds, NULL, NULL, NULL);<br />
+            if (rc &lt; 1) continue;<br />
+            new_connection = -1;<br />
+            for (i = first_socket; i &lt;= last_socket; ++i) {<br />
+            <span class="indent">
+              if (FD_ISSET (i, &amp;accept_fds)) {<br />
+              <span class="indent">
+                new_connection = accept (i, NULL, NULL);<br />
+                if (new_connection != -1) break;<br />
+              </span>
+              }<br />
+            </span>
+            }<br />
+            if (new_connection != -1) break;<br />
+          </span>
+          }<br />
+          <strong>accept_mutex_off ();</strong><br />
+          process the new_connection;<br />
+        </span>
+        }
+      </code></p></div>
+
+      <p><a id="serialize" name="serialize">Les fonctions</a>
+      <code>accept_mutex_on</code> et <code>accept_mutex_off</code>
+      implémentent un sémaphore permettant une exclusion mutuelle. Un seul
+      processus enfant à la fois peut posséder le mutex. Plusieurs choix se
+      présentent pour implémenter ces mutex. Ce choix est défini dans
+      <code>src/conf.h</code> (versions antérieures à 1.3) ou
+      <code>src/include/ap_config.h</code> (versions 1.3 ou supérieures).
+      Certaines architectures ne font pas ce choix du mode de verrouillage ;
+      l'utilisation de directives
+      <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> multiples sur ces
+      architectures est donc peu sûr.</p>
+
+      <p>On peut utiliser la directive
+      <code class="directive"><a href="../mod/mpm_common.html#acceptmutex">AcceptMutex</a></code> pour modifier
+      l'implémentation du mutex sélectionnée à l'exécution.</p>
+
+      <dl>
+        <dt><code>AcceptMutex flock</code></dt>
+
+        <dd>
+          <p>Cette méthode utilise l'appel système <code>flock(2)</code> pour
+         créer un fichier verrou (dont la localisation est définie par la
+         directive <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code>.</p>
+        </dd>
+
+        <dt><code>AcceptMutex fcntl</code></dt>
+
+        <dd>
+          <p>Cette méthode utilise l'appel système <code>fcntl(2)</code> pour
+         créer un fichier verrou ((dont la localisation est définie par la
+         directive <code class="directive"><a href="../mod/mpm_common.html#lockfile">LockFile</a></code>.</p>
+        </dd>
+
+        <dt><code>AcceptMutex sysvsem</code></dt>
+
+        <dd>
+          <p>(Versions 1.3 ou supérieures) Cette méthode utilise les sémaphores
+         style SysV pour implémenter les mutex. Malheureusement, les
+         sémaphores style SysV ont quelques effets de bord néfastes. L'un
+         d'entre eux est la possibilité pour Apache de s'arrêter sans
+         "faire le ménage" dans les sémaphores (voir la page de manuel de
+         <code>ipcs(8)</code>). Un autre effet de bord est introduit par
+         l'API des sémaphores qui permet à tout CGI s'exécutant sous le même
+         uid que le serveur web d'effectuer une attaque par déni de service
+         (c'est à dire <em>tous</em> les CGIs, à moins que vous n'utilisiez
+         un programme comme <code class="program"><a href="../programs/suexec.html">suexec</a></code> ou
+         <code>cgiwrapper</code>)..</p>
+        </dd>
+
+        <dt><code>AcceptMutex pthread</code></dt>
+
+        <dd>
+          <p>(versions 1.3 ou supérieures) Cette méthode utilise les mutex
+         POSIX et devrait fonctionner sur toute architecture implémentant
+         de manière complète la spécification concernant les threads POSIX ;
+         il semble cependant qu'elle ne fonctionne que sur Solaris (versions
+         2.5 ou supérieures), et sous certaines configurations seulement. Si
+         vous tentez l'expérience, votre serveur risque de se bloquer et de ne
+         plus répondre à vos sollicitations. Par contre, les serveurs
+         n'hébergeant que du contenu statique devraient fonctionner
+         correctement.</p>
+        </dd>
+
+        <dt><code>AcceptMutex posixsem</code></dt>
+
+        <dd>
+          <p>(Versions 2.0 ou supérieures) Cette méthode utilise les sémaphores
+         POSIX. L'appartenance du sémaphore n'est pas récupérée quand un
+         thread du processus qui détient le mutex provoque une erreur de
+         segmentation, ce qui a pour effet de bloquer le serveur.</p>
+        </dd>
+
+      </dl>
+
+      <p>Si votre système propose une méthode de sérialisation différente de
+      celles de la liste ci-dessus, il pourrait être intéressant d'ajouter à
+      APR le code correspondant.</p>
+
+      <p>Une autre solution qui a été imaginée mais jamais implémentée, consiste
+      à sérialiser partiellement la boucle -- c'est à dire y faire entrer un
+      certain nombre de processus. Ceci ne présenterait un intérêt que sur les
+      machines multiprocesseurs où plusieurs processus enfants peuvent
+      s'exécuter simultanément, et encore, la sérialisation ne tire pas
+      vraiment parti de toute la bande passante. C'est une possibilité
+      d'investigation future, mais demeure de priorité basse car les serveurs
+      web à architecture hautement parallèle ne sont pas la norme.</p>
+
+      <p>Pour bien faire, vous devriez faire fonctionner votre serveur sans
+      directives <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> multiples
+      si vous visez les performances les plus élevées.
+      Mais lisez ce qui suit.</p>
+
+    
+
+    <h3>accept Serialization - point de connexion à un programme (sockets) unique</h3>
+
+      
+
+      <p>Ce qui précède convient pour les serveurs à sockets multiples, mais
+      qu'en est-il des serveurs à socket unique ? En théorie, ils ne
+      devraient pas rencontrer les mêmes problèmes car tous les processus
+      enfants peuvent se bloquer dans <code>accept(2)</code> jusqu'à ce qu'une
+      connexion arrive, et ils ne sont pas utilisés à ne rien faire. En
+      pratique, ceci dissimule un même comportement de bouclage
+      discuté plus haut dans la solution non-blocante. De la manière dont
+      sont implémentées les piles TCP, le noyau réactive véritablement tous les
+      processus bloqués dans <code>accept</code> quand une seule connexion
+      arrive. Un de ces processus prend la connexion en compte et retourne
+      dans l'espace utilisateur, les autres bouclant dans l'espace du
+      noyau et se désactivant quand ils s'aperçoivent qu'il n'y a pas de
+      connexion pour eux. Ce bouclage est invisible depuis le code de l'espace
+      utilisateur, mais il est quand-même présent. Ceci peut conduire à la
+      même augmentation de charge à perte que la solution non blocante au cas
+      des sockets multiples peut induire.</p>
+
+      <p>Pour cette raison, il apparaît que de nombreuses architectures se
+      comportent plus "proprement" si on sérialise même dans le cas d'une socket
+      unique. Il s'agit en fait du comportement par défaut dans la plupart des
+      cas. Des expériences poussées sous Linux (noyau 2.0.30 sur un
+      biprocesseur Pentium pro 166 avec 128 Mo de RAM) ont montré que la
+      sérialisation d'une socket unique provoque une diminution inférieure à 3%
+      du nombre de requêtes par secondes par rapport au traitement non
+      sérialisé. Mais le traitement non sérialisé des sockets uniques induit
+      un temps de réponse supplémentaire de 100 ms pour chaque requête. Ce
+      temps de réponse est probablement provoqué par une limitation sur les
+      lignes à haute charge, et ne constitue un problème que sur les réseaux
+      locaux. Si vous voulez vous passer de la sérialisation des sockets
+      uniques, vous pouvez définir
+      <code>SINGLE_LISTEN_UNSERIALIZED_ACCEPT</code> et les
+      serveurs à socket unique ne pratiqueront plus du tout la
+      sérialisation.</p>
+
+    
+
+    <h3>Fermeture en prenant son temps (Lingering close)</h3>
+
+      
+
+      <p>Comme discuté dans <a href="http://www.ics.uci.edu/pub/ietf/http/draft-ietf-http-connection-00.txt">
+      draft-ietf-http-connection-00.txt</a> section 8, pour implémenter de
+      manière <strong>fiable</strong> le protocole, un serveur HTTP doit fermer
+      les deux directions d'une communication indépendamment (rappelez-vous
+      qu'une connexion TCP est bidirectionnelle, chaque direction étant
+      indépendante de l'autre). Ce fait, souvent ignoré par les autres
+      serveurs, est implémenté correctement dans Apache depuis la
+      version 1.2.</p>
+
+      <p>Quand cette fonctionnalité fut ajoutée à Apache, elle causa une
+      avalanche de problèmes sur plusieurs versions d'Unix à cause d'une
+      implémentation à courte vue. La spécification TCP ne précise pas que
+      l'état <code>FIN_WAIT_2</code> possède un temps de réponse mais elle ne
+      l'exclut pas. Sur les systèmes qui n'introduisent pas ce temps de
+      réponse, Apache 1.2 induit de nombreux blocages définitifs de socket
+      dans l'état <code>FIN_WAIT_2</code>. On peut eviter ceci dans de nombreux
+      cas tout simplement en mettant à jour TCP/IP avec le dernier patch mis à
+      disposition par le fournisseur. Dans les cas où le fournisseur n'a
+      jamais fourni de patch (par exemple, SunOS4 -- bien que les utilisateurs
+      possédant une license source puissent le patcher eux-mêmes), nous avons
+      décidé de désactiver cette fonctionnalité.</p>
+
+      <p>Il y a deux méthodes pour arriver à ce résultat. La première est
+      l'option de socket <code>SO_LINGER</code>. Mais le sort a voulu que cette
+      solution ne soit jamais implémentée correctement dans la plupart des
+      piles TCP/IP. Et même dans les rares cas où cette solution a été
+      implémentée correctement (par exemple Linux 2.0.31), elle se
+      montre beaucoup plus gourmande (en temps processeur) que la solution
+      suivante.</p>
+
+      <p>Pour la plus grande partie, Apache implémente cette solution à l'aide
+      d'une fonction appelée <code>lingering_close</code> (définie dans
+      <code>http_main.c</code>). La fonction ressemble approximativement à
+      ceci :</p>
+
+      <div class="example"><p><code>
+        void lingering_close (int s)<br />
+        {<br />
+        <span class="indent">
+          char junk_buffer[2048];<br />
+          <br />
+          /* shutdown the sending side */<br />
+          shutdown (s, 1);<br />
+          <br />
+          signal (SIGALRM, lingering_death);<br />
+          alarm (30);<br />
+          <br />
+          for (;;) {<br />
+          <span class="indent">
+            select (s for reading, 2 second timeout);<br />
+            if (error) break;<br />
+            if (s is ready for reading) {<br />
+            <span class="indent">
+              if (read (s, junk_buffer, sizeof (junk_buffer)) &lt;= 0) {<br />
+              <span class="indent">
+                break;<br />
+              </span>
+              }<br />
+              /* just toss away whatever is here */<br />
+            </span>
+            }<br />
+          </span>
+          }<br />
+          <br />
+          close (s);<br />
+        </span>
+        }
+      </code></p></div>
+
+      <p>Ceci ajoute naturellement un peu de charge à la fin d'une connexion,
+      mais s'avère nécessaire pour une implémentation fiable. Comme HTTP/1.1
+      est de plus en plus présent et que toutes les connexions sont
+      persistentes, la charge sera amortie par la multiplicité des requêtes.
+      Si vous voulez jouer avec le feu en désactivant cette fonctionnalité,
+      vous pouvez définir <code>NO_LINGCLOSE</code>, mais c'est fortement
+      déconseillé. En particulier, comme les connexions persistantes en
+      pipeline de HTTP/1.1 commencent à être utilisées,
+      <code>lingering_close</code> devient une absolue nécessité (et les
+      <a href="http://www.w3.org/Protocols/HTTP/Performance/Pipeline.html">
+      connexions en pipeline sont plus rapides</a> ; vous avez donc tout
+      intérêt à les supporter).</p>
+
+    
+
+    <h3>Fichier tableau de bord (Scoreboard file)</h3>
+
+      
+
+      <p>Les processus parent et enfants d'Apache communiquent entre eux à
+      l'aide d'un objet appelé "Tableau de bord" (Scoreboard). Idéalement, cet
+      échange devrait s'effectuer en mémoire partagée. Pour les systèmes
+      d'exploitation auxquels nous avons eu accès, ou pour lesquels nous avons
+      obtenu des informations suffisamment détaillées pour effectuer un
+      portage, cet échange est en général implémenté en utilisant la mémoire
+      partagée. Pour les autres, on utilise par défaut un fichier d'échange sur
+      disque. Le fichier d'échange sur disque est non seulement lent, mais
+      aussi peu fiable (et propose moins de fonctionnalités). Recherchez dans
+      le fichier <code>src/main/conf.h</code> correspondant à votre
+      architecture soit <code>USE_MMAP_SCOREBOARD</code>, soit
+      <code>USE_SHMGET_SCOREBOARD</code>. La définition de l'un des deux
+      (ainsi que leurs compagnons respectifs <code>HAVE_MMAP</code> et
+      <code>HAVE_SHMGET</code>), active le code fourni pour la mémoire
+      partagée. Si votre système propose une autre solution pour la gestion de
+      la mémoire partagée, éditez le fichier <code>src/main/http_main.c</code>
+      et ajoutez la portion de code nécessaire pour pouvoir l'utiliser dans
+      Apache (Merci de nous envoyer aussi le patch correspondant).</p>
+
+      <div class="note">Note à caractère historique : le portage d'Apache sous Linux
+      n'utilisait pas la mémoire partagée avant la version 1.2. Ceci entraînait
+      un comportement très rudimentaire et peu fiable des versions antérieures
+      d'Apache sous Linux.</div>
+
+    
+
+    <h3>DYNAMIC_MODULE_LIMIT</h3>
+
+      
+
+      <p>Si vous n'avez pas l'intention d'utiliser les modules chargés
+      dynamiquement (ce qui est probablement le cas si vous êtes en train de
+      lire ce document afin de personnaliser votre serveur en recherchant le
+      moindre des gains en performances), vous pouvez ajouter la définition
+      <code>-DDYNAMIC_MODULE_LIMIT=0</code> à la construction de votre serveur.
+      Ceci aura pour effet de libérer la mémoire RAM allouée pour le
+      chargement dynamique des modules.</p>
+
+    
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="trace" id="trace">Appendice : Analyse détaillée d'une trace</a></h2>
+
+    
+
+    <p>Voici la trace d'un appel système d'Apache 2.0.38 avec le MPM worker
+    sous Solaris 8. Cette trace a été collectée à l'aide de la commande :</p>
+
+    <div class="example"><p><code>
+      truss -l -p <var>httpd_child_pid</var>.
+    </code></p></div>
+
+    <p>L'option <code>-l</code> demande à truss de tracer l'ID du LWP
+    (lightweight process--la version de Solaris des threads niveau noyau) qui
+    invoque chaque appel système.</p>
+
+    <p>Les autres systèmes peuvent proposer des utilitaires de traçage
+    des appels système différents comme <code>strace</code>,
+    <code>ktrace</code>, ou <code>par</code>. Ils produisent cependant tous une
+    trace similaire.</p>
+
+    <p>Dans cette trace, un client a demandé un fichier statique de 10 ko au
+    démon httpd. Le traçage des requêtes pour des contenus non statiques
+    ou comportant une négociation de contenu a une présentation
+    différente (et même assez laide dans certains cas).</p>
+
+    <div class="example"><pre>/67:    accept(3, 0x00200BEC, 0x00200C0C, 1) (sleeping...)
+/67:    accept(3, 0x00200BEC, 0x00200C0C, 1)            = 9</pre></div>
+
+    <p>Dans cette trace, le thread à l'écoute s'exécute à l'intérieur de
+    LWP #67.</p>
+
+    <div class="note">Notez l'absence de la sérialisation d'<code>accept(2)</code>. Sur
+    cette plateforme spécifique, le MPM worker utilise un accept non sérialisé
+    par défaut sauf s'il est en écoute sur des ports multiples.</div>
+
+    <div class="example"><pre>/65:    lwp_park(0x00000000, 0)                         = 0
+/67:    lwp_unpark(65, 1)                               = 0</pre></div>
+
+    <p>Après avoir accepté la connexion, le thread à l'écoute réactive un
+    thread du worker pour effectuer le traitement de la requête. Dans cette
+    trace, le thread du worker qui traite la requête est associé à
+    LWP #65.</p>
+
+    <div class="example"><pre>/65:    getsockname(9, 0x00200BA4, 0x00200BC4, 1)       = 0</pre></div>
+
+    <p>Afin de pouvoir implémenter les hôtes virtuels, Apache doit connaître
+    l'adresse du socket local utilisé pour accepter la connexion. On pourrait
+    supprimer cet appel dans de nombreuses situations (par exemple dans le cas
+    où il n'y a pas d'hôte virtuel ou dans le cas où les directives
+    <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> contiennent des adresses
+    sans caractères de substitution). Mais aucun effort n'a été accompli à ce
+    jour pour effectuer ces optimisations.</p>
+
+    <div class="example"><pre>/65:    brk(0x002170E8)                                 = 0
+/65:    brk(0x002190E8)                                 = 0</pre></div>
+
+    <p>L'appel <code>brk(2)</code> alloue de la mémoire dans le tas. Ceci est
+    rarement visible dans une trace d'appel système, car le démon httpd
+    utilise des allocateurs mémoire de son cru (<code>apr_pool</code> et
+    <code>apr_bucket_alloc</code>) pour la plupart des traitements de requêtes.
+    Dans cette trace, le démon httpd vient juste de démarrer, et il doit
+    appeler <code>malloc(3)</code> pour réserver les blocs de mémoire
+    nécessaires à la création de ses propres allocateurs de mémoire.</p>
+
+    <div class="example"><pre>/65:    fcntl(9, F_GETFL, 0x00000000)                   = 2
+/65:    fstat64(9, 0xFAF7B818)                          = 0
+/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B910, 2190656) = 0
+/65:    fstat64(9, 0xFAF7B818)                          = 0
+/65:    getsockopt(9, 65535, 8192, 0xFAF7B918, 0xFAF7B914, 2190656) = 0
+/65:    setsockopt(9, 65535, 8192, 0xFAF7B918, 4, 2190656) = 0
+/65:    fcntl(9, F_SETFL, 0x00000082)                   = 0</pre></div>
+
+    <p>Ensuite, le thread de worker passe la connexion du client (descripteur
+    de fichier 9) en mode non blocant. Les appels <code>setsockopt(2)</code>
+    et <code>getsockopt(2)</code> constituent un effet de bord de la manière
+    dont la libc de Solaris utilise <code>fcntl(2)</code> pour les sockets.</p>
+
+    <div class="example"><pre>/65:    read(9, " G E T   / 1 0 k . h t m".., 8000)     = 97</pre></div>
+
+    <p>Le thread de worker lit la requête du client.</p>
+
+    <div class="example"><pre>/65:    stat("/var/httpd/apache/httpd-8999/htdocs/10k.html", 0xFAF7B978) = 0
+/65:    open("/var/httpd/apache/httpd-8999/htdocs/10k.html", O_RDONLY) = 10</pre></div>
+
+    <p>Ce démon httpd a été configuré avec les options
+    <code>Options FollowSymLinks</code> et <code>AllowOverride None</code>. Il
+    n'a donc ni besoin d'appeler <code>lstat(2)</code> pour chaque répertoire
+    du chemin du fichier demandé, ni besoin de vérifier la présence de fichiers
+    <code>.htaccess</code>. Il appelle simplement <code>stat(2)</code> pour
+    vérifier d'une part que le fichier existe, et d'autre part que c'est un
+    fichier régulier, et non un répertoire.</p>
+
+    <div class="example"><pre>/65:    sendfilev(0, 9, 0x00200F90, 2, 0xFAF7B53C)      = 10269</pre></div>
+
+    <p>Dans cet exemple, le démon httpd peut envoyer l'en-tête de la réponse
+    HTTP et le fichier demandé à l'aide d'un seul appel système
+    <code>sendfilev(2)</code>. La sémantique de sendfile varie en fonction des
+    systèmes d'exploitation. Sur certains autres systèmes, il faut faire un
+    appel à <code>write(2)</code> ou <code>writev(2)</code> pour envoyer les
+    en-têtes avant d'appeler <code>sendfile(2)</code>.</p>
+
+    <div class="example"><pre>/65:    write(4, " 1 2 7 . 0 . 0 . 1   -  ".., 78)      = 78</pre></div>
+
+    <p>Cet appel à <code>write(2)</code> enregistre la requête dans le journal
+    des accès. Notez qu'une des choses manquant à cette trace est un appel à
+    <code>time(2)</code>. A la différence d'Apache 1.3, Apache 2.x utilise
+    <code>gettimeofday(3)</code> pour consulter l'heure. Sur certains systèmes
+    d'exploitation, comme Linux ou Solaris, <code>gettimeofday</code> est
+    implémenté de manière optimisée de telle sorte qu'il consomme moins de
+    ressources qu'un appel système habituel.</p>
+
+    <div class="example"><pre>/65:    shutdown(9, 1, 1)                               = 0
+/65:    poll(0xFAF7B980, 1, 2000)                       = 1
+/65:    read(9, 0xFAF7BC20, 512)                        = 0
+/65:    close(9)                                        = 0</pre></div>
+
+    <p>Le thread de worker effectue une fermeture "en prenant son temps"
+    (lingering close) de la connexion.</p>
+
+    <div class="example"><pre>/65:    close(10)                                       = 0
+/65:    lwp_park(0x00000000, 0)         (sleeping...)</pre></div>
+
+    <p>Enfin, le thread de worker ferme le fichier qu'il vient de délivrer et
+    se bloque jusqu'à ce que le thread en écoute lui assigne une autre
+    connexion.</p>
+
+    <div class="example"><pre>/67:    accept(3, 0x001FEB74, 0x001FEB94, 1) (sleeping...)</pre></div>
+
+    <p>Pendant ce temps, le thread à l'écoute peut accepter une autre connexion
+    à partir du moment où il a assigné la connexion présente à un thread de
+    worker (selon une certaine logique de contrôle de flux dans le MPM worker
+    qui impose des limites au thread à l'écoute si tous les threads de worker
+    sont occupés). Bien que cela n'apparaisse pas dans cette trace,
+    l'<code>accept(2)</code> suivant peut (et le fait en général, en situation
+    de charge élevée) s'exécuter en parallèle avec le traitement de la
+    connexion qui vient d'être acceptée par le thread de worker.</p>
+
+  </div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="../en/misc/perf-tuning.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/misc/perf-tuning.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ko/misc/perf-tuning.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/misc/perf-tuning.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index 8d4803f0e3b53fce2d55aadc406e0fd9c700e4a4..d1f83a1e5b066830f47f7bd2de2b19e946432429 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Conseils sur la sécurité - Serveur Apache HTTP</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page"><div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Documentations diverses</a></div><div id="page-content"><div id="preamble"><h1>Conseils sur la sécurité</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="../en/misc/security_tips.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/misc/security_tips.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../tr/misc/security_tips.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div>\r
-\r
-    <p>Ce document propose quelques conseils et astuces concernant les\r
-    problèmes de sécurité liés\r
-    à l'installation d'un serveur web. Certaines suggestions seront à caractère\r
-    général, tandis que d'autres seront spécifiques à Apache.</p>\r
-  </div>\r
-<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#uptodate">Maintenez votre serveur à jour</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#dos">Attaques de type "Déni de service"\r
-    (Denial of Service - DoS)</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#serverroot">Permissions sur les répertoires de la racine du serveur</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#ssi">Inclusions côté serveur</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#cgi">Les CGI en général</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#nsaliasedcgi">CGI sans alias de script</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#saliasedcgi">CGI avec alias de script</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#dynamic">Autres sources de contenu dynamique</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#systemsettings">Protection de la configuration du système</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#protectserverfiles">Protection par défaut des fichiers du serveur</a></li>\r
-<li><img alt="" src="../images/down.gif" /> <a href="#watchyourlogs">Surveillez vos journaux</a></li>\r
-</ul></div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="uptodate" id="uptodate">Maintenez votre serveur à jour</a></h2>\r
-\r
-    <p>Le serveur HTTP Apache a une bonne réputation en matière de sécurité\r
-    et possède une communauté de développeurs très sensibilisés aux problèmes\r
-    de sécurité. Mais il est inévitable de trouver certains problèmes\r
-    -- petits ou grands -- une fois le logiciel mis à disposition. C'est pour\r
-    cette raison qu'il est crucial de se tenir informé des mises à jour. Si\r
-    vous avez obtenu votre version du serveur HTTP directement depuis Apache,\r
-    nous vous conseillons grandement de vous abonner à la <a href="http://httpd.apache.org/lists.html#http-announce">Liste de diffusion\r
-    des annonces du serveur HTTP</a> qui vous informera de\r
-    la parution des nouvelles versions et des mises à jour de sécurité. La\r
-    plupart des distributeurs tiers d'Apache fournissent des services\r
-    similaires.</p>\r
-\r
-    <p>Gardez cependant à l'esprit que lorsqu'un serveur web est compromis, le\r
-    code du serveur HTTP n'est la plupart du temps pas en cause. Les problèmes\r
-    proviennent plutôt de code ajouté, de scripts CGI, ou du système\r
-    d'exploitation sous-jacent. Vous devez donc vous tenir informé des\r
-    problèmes et mises à jour concernant tous les logiciels présents sur\r
-    votre système.</p>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="dos" id="dos">Attaques de type "Déni de service"\r
-    (Denial of Service - DoS)</a></h2>\r
-\r
-    \r
-\r
-    <p>Tous les services réseau peuvent faire l'objet d'attaques de type\r
-    "Déni de service" qui tentent de les empêcher de répondre aux clients en\r
-    saturant leurs ressources. Il est impossible de se prémunir totalement\r
-    contre ce type d'attaques, mais vous pouvez accomplir certaines actions\r
-    afin de minimiser les problèmes qu'elles créent.</p>\r
-\r
-    <p>Souvent, l'outil anti-DoS le plus efficace sera constitué par le\r
-    pare-feu ou certaines configurations du système d'exploitation. Par\r
-    exemple, la plupart des pare-feu peuvent être configurés de façon à\r
-    limiter le nombre de connexions simultanées depuis une adresse IP ou un\r
-    réseau, ce qui permet de prévenir toute une gamme d'attaques simples.\r
-    Bien sûr, ceci n'est d'aucun secours contre les attaques de type\r
-    "Déni de service" distribuées (DDoS).</p>\r
-\r
-    <p>Certains réglages de la configuration d'Apache peuvent aussi\r
-    minimiser les problèmes :</p>\r
-\r
-    <ul>\r
-      <li>La valeur de la directive\r
-      <code class="directive"><a href="../mod/core.html#timeout">TimeOut</a></code> doit être diminuée sur les\r
-      sites sujets aux attaques DoS. Une valeur de quelques secondes devrait\r
-      convenir. Cependant, comme <code class="directive"><a href="../mod/core.html#timeout">TimeOut</a></code>\r
-      est actuellement concerné par de nombreuses opérations différentes, lui\r
-      attribuer une valeur trop faible peut provoquer des problèmes avec les\r
-      scripts CGI qui présentent un long temps de réponse.</li>\r
-\r
-      <li>La valeur de la directive\r
-      <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code> doit aussi être\r
-      diminuée sur les sites sujets aux attaques DoS. Certains sites\r
-      désactivent même complètement le "maintien en vie" (keepalives)\r
-      à l'aide de la directive\r
-      <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code>, ce qui bien sûr\r
-      présente des inconvénients en matière de performances.</li>\r
-\r
-      <li>Les valeurs des différentes directives fournies par d'autres modules\r
-      et en rapport avec des délais doivent aussi être vérifiées.</li>\r
-\r
-      <li>Les directives\r
-      <code class="directive"><a href="../mod/core.html#limitrequestbody">LimitRequestBody</a></code>,\r
-      <code class="directive"><a href="../mod/core.html#limitrequestfields">LimitRequestFields</a></code>,\r
-      <code class="directive"><a href="../mod/core.html#limitrequestfieldsize">LimitRequestFieldSize</a></code>,\r
-      <code class="directive"><a href="../mod/core.html#limitrequestline">LimitRequestLine</a></code>, et\r
-      <code class="directive"><a href="../mod/core.html#limitxmlrequestbody">LimitXMLRequestBody</a></code> doivent être\r
-      configurées avec prudence afin de limiter la consommation de ressources\r
-      induite par les demandes des clients.\r
-      </li>\r
-\r
-      <li>Sur les systèmes d'exploitation qui le supportent, assurez-vous que\r
-      la directive <code class="directive"><a href="../mod/core.html#acceptfilter">AcceptFilter</a></code> est\r
-      activée afin de déléguer une partie du traitement des requêtes au\r
-      système d'exploitation. Elle est activée par défaut dans le démon httpd\r
-      d'Apache, mais peut nécessiter une reconfiguration de votre noyau.</li>\r
-\r
-      <li>Optimisez la directive <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> de façon à définir le nombre\r
-      maximum de connexions simultanées au dessus duquel les ressources\r
-      s'épuisent. Voir aussi la <a href="perf-tuning.html">documentation sur l'optimisation des\r
-      performances</a>.</li>\r
-\r
-      <li>L'utilisation d'un <a href="../mpm.html">module mpm</a> threadé\r
-      vous permet de traiter d'avantage de connexions simultanées, ce qui\r
-      minimise l'effet des attaques DoS. Dans le futur, le module mpm expérimental\r
-      <code class="module"><a href="../mod/event.html">event</a></code> utilisera un traitement asynchrone afin de ne pas\r
-      dédier un thread à chaque connexion. Il est en cours d'étude à\r
-      l'heure actuelle et n'est pas encore entièrement implémenté. En\r
-      particulier, le mpm <code class="module"><a href="../mod/event.html">event</a></code> est actuellement incompatible\r
-      avec le module <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> ainsi que d'autres filtres\r
-      en entrée.</li>\r
-\r
-      <li>Il existe de nombreux modules tiers disponibles à <a href="http://modules.apache.org/">http://modules.apache.org/</a> qui\r
-      peuvent retreindre les comportements de certains clients et ainsi\r
-      minimiser les problèmes de DoS.</li>\r
-\r
-    </ul>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="serverroot" id="serverroot">Permissions sur les répertoires de la racine du serveur</a></h2>\r
-\r
-    \r
-\r
-    <p>Typiquement, Apache est démarré par l'utilisateur root, puis il devient\r
-    la propriété de l'utilisateur défini par la directive <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> afin de répondre aux demandes. Comme\r
-    pour toutes les commandes exécutées par root, vous devez vous assurer\r
-    qu'elle n'est pas modifiable par les utilisateurs autres que root. Les\r
-    fichiers eux-mêmes, mais aussi les répertoires ainsi que leurs parents ne\r
-    doivent être modifiables que par root. Par exemple, si vous avez choisi de\r
-    placer la racine du serveur dans <code>/usr/local/apache</code>, il est conseillé de\r
-    créer le répertoire en tant que root, avec des commandes du style :</p>\r
-\r
-    <div class="example"><p><code>\r
-      mkdir /usr/local/apache <br />\r
-      cd /usr/local/apache <br />\r
-      mkdir bin conf logs <br />\r
-      chown 0 . bin conf logs <br />\r
-      chgrp 0 . bin conf logs <br />\r
-      chmod 755 . bin conf logs\r
-    </code></p></div>\r
-\r
-    <p>Nous supposerons que <code>/</code>, <code>/usr</code> et\r
-    <code>/usr/local</code> ne sont modifiables que par\r
-    root. Quand vous installez l'exécutable <code class="program"><a href="../programs/httpd.html">httpd</a></code>, vous\r
-    devez vous assurer qu'il possède des protections similaires :</p>\r
-\r
-    <div class="example"><p><code>\r
-      cp httpd /usr/local/apache/bin <br />\r
-      chown 0 /usr/local/apache/bin/httpd <br />\r
-      chgrp 0 /usr/local/apache/bin/httpd <br />\r
-      chmod 511 /usr/local/apache/bin/httpd\r
-    </code></p></div>\r
-\r
-    <p>Vous pouvez créer un sous-répertoire htdocs modifiable par d'autres\r
-    utilisateurs -- car root ne crée ni exécute aucun fichier dans ce\r
-    sous-répertoire.</p>\r
-\r
-    <p>Si vous permettez à des utilisateurs non root de modifier des fichiers\r
-    que root écrit ou exécute, vous exposez votre système à une compromission\r
-    de l'utilisateur root. Par exemple, quelqu'un pourrait remplacer le binaire\r
-    <code class="program"><a href="../programs/httpd.html">httpd</a></code> de façon à ce que la prochaine fois que vous le\r
-    redémarrerez, il exécutera un code arbitraire. Si le répertoire des\r
-    journaux a les droits en écriture (pour un utilisateur non root), quelqu'un\r
-    pourrait remplacer un fichier journal par un lien symbolique vers un autre\r
-    fichier système, et root pourrait alors écraser ce fichier avec des données\r
-    arbitraires. Si les fichiers journaux eux-mêmes ont des droits en\r
-    écriture (pour un utilisateur non root), quelqu'un pourrait\r
-    modifier les journaux eux-mêmes avec des données fausses.</p>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="ssi" id="ssi">Inclusions côté serveur</a></h2>\r
-\r
-    \r
-\r
-    <p>Les inclusions côté serveur (Server Side Includes - SSI) exposent\r
-    l'administrateur du serveur à de nombreux risques potentiels en matière de\r
-    sécurité.</p>\r
-\r
-    <p>Le premier risque est l'augmentation de la charge du serveur. Tous les\r
-    fichiers où SSI est activé doivent être analysés par Apache, qu'ils\r
-    contiennent des directives SSI ou non. L'augmentation de la charge induite\r
-    est minime, mais peut devenir significative dans le contexte d'un\r
-    serveur partagé.</p>\r
-\r
-    <p>Les fichiers SSI présentent les mêmes risques que les scripts CGI en\r
-    général. Les fichiers où SSI est activé peuvent exécuter tout script CGI\r
-    ou autre programme à l'aide de la commande <code>"exec cmd"</code> avec les permissions\r
-    des utilisateur et groupe sous lesquels Apache s'exécute, comme défini\r
-    dans <code>httpd.conf</code>.</p>\r
-\r
-    <p>Des méthodes existent pour améliorer la sécurité des fichiers SSI, tout\r
-    en tirant parti des bénéfices qu'ils apportent.</p>\r
-\r
-    <p>Pour limiter les dommages qu'un fichier SSI agressif pourrait causer,\r
-    l'administrateur du serveur peut activer<a href="../suexec.html">suexec</a>\r
-    comme décrit dans la section <a href="#cgi">Les CGI en général</a>.</p>\r
-\r
-    <p>L'activation des SSI pour des fichiers possédant des extensions\r
-    <code>.html</code> ou\r
-    <code>.htm</code> peut s'avérer dangereux. Ceci est particulièrement vrai dans un\r
-    environnement de serveur partagé ou étant le siège d'un traffic élevé. Les\r
-    fichiers où SSI est activé doivent posséder une extension spécifique, telle\r
-    que la conventionnelle <code>.shtml</code>. Ceci permet de limiter la charge du serveur\r
-    à un niveau minimum et de simplifier la gestion des risques.</p>\r
-\r
-    <p>Une autre solution consiste à interdire l'exécution de scripts et\r
-    programmes à partir de pages SSI. Pour ce faire, remplacez\r
-    <code>Includes</code> par <code>IncludesNOEXEC</code> dans la directive\r
-    <code class="directive"><a href="../mod/core.html#options">Options</a></code>. Notez que les utilisateurs\r
-    pourront encore utiliser <code>&lt;--#include virtual="..." --&gt;</code> pour exécuter\r
-    des scripts CGI si ces scripts sont situés dans des répertoires spécifiés\r
-    par une directive\r
-    <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>.</p>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="cgi" id="cgi">Les CGI en général</a></h2>\r
-\r
-    \r
-\r
-    <p>Tout d'abord, vous devez toujours garder à l'esprit que vous devez\r
-    faire confiance aux développeurs de scripts ou programmes CGI ainsi qu'à\r
-    vos compétences pour déceler les trous de sécurité potentiels dans les\r
-    CGI, que ceux-ci soient délibérés ou accidentels. Les scripts CGI peuvent\r
-    essentiellement exécuter des commandes arbitraires sur votre système avec\r
-    les droits de l'utilisateur du serveur web, et peuvent par conséquent être\r
-    extrèmement dangereux s'ils ne sont pas vérifiés avec soin.</p>\r
-\r
-    <p>Tous les scripts CGI s'exécutent sous le même utilisateur, il peuvent\r
-    donc entrer en conflit (accidentellement ou délibérément) avec d'autres\r
-    scripts. Par exemple, l'utilisateur A hait l'utilisateur B, il écrit donc\r
-    un script qui efface la base de données CGI de l'utilisateur B. Vous pouvez\r
-    utiliser le programme <a href="../suexec.html">suEXEC</a> pour faire en\r
-    sorte que les scripts s'exécutent sous des utilisateurs différents. Ce\r
-    programme est inclus dans la distribution d'Apache depuis la version 1.2\r
-    et est appelé à partir de certaines portions de code du serveur Apache. Une\r
-    autre méthode plus connue est l'utilisation de\r
-    <a href="http://cgiwrap.unixtools.org/">CGIWrap</a>.</p>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="nsaliasedcgi" id="nsaliasedcgi">CGI sans alias de script</a></h2>\r
-\r
-    \r
-\r
-    <p>Vous ne devez permettre aux utilisateurs d'exécuter des scripts CGI\r
-    depuis n'importe quel répertoire que dans l'éventualité où :</p>\r
-\r
-    <ul>\r
-      <li>Vous faites confiance à vos utilisateurs pour ne pas écrire de\r
-      scripts qui vont délibérément ou accidentellement exposer votre\r
-      système à une attaque.</li>\r
-      <li>Vous estimez que le niveau de sécurité dans les autres parties de\r
-      votre site est si faible qu'un trou de sécurité de plus ou de moins\r
-      n'est pas très important.</li>\r
-      <li>Votre système ne comporte aucun utilisateur, et personne ne visite\r
-      jamais votre site.</li>\r
-    </ul>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="saliasedcgi" id="saliasedcgi">CGI avec alias de script</a></h2>\r
-\r
-    \r
-\r
-    <p>Le confinement des CGI dans des répertoires spécifiques permet à\r
-    l'administrateur de contrôler ce que l'on met dans ces répertoires. Ceci\r
-    est bien entendu mieux sécurisé que les CGI sans alias de script, mais\r
-    seulement à condition que les utilisateurs avec les droits en écriture sur\r
-    les répertoires soient dignes de confiance, et que l'administrateur ait la\r
-    volonté de tester chaque programme ou script CGI à la recherche d'éventuels\r
-    trous de sécurité.</p>\r
-\r
-    <p>La plupart des sites choisissent cette approche au détriment des CGI\r
-    sans alias de script.</p>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="dynamic" id="dynamic">Autres sources de contenu dynamique</a></h2>\r
-\r
-  \r
-\r
-  <p>\r
-  Les options de scripting intégrées qui s'exécutent en tant que partie du\r
-  serveur lui-même, comme <code>mod_php</code>, <code>mod_perl</code>,\r
-  <code>mod_tcl</code>, et <code>mod_python</code>,\r
-  s'exécutent sous le même utilisateur que le serveur (voir la directive\r
-  <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>), et par conséquent,\r
-  les scripts que ces moteurs exécutent peuvent accéder aux mêmes ressources\r
-  que le serveur. Certains moteurs de scripting peuvent proposer des\r
-  restrictions, mais pour plus de sûreté, il vaut mieux partir du principe\r
-  que ce n'est pas le cas.</p>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="systemsettings" id="systemsettings">Protection de la configuration du système</a></h2>\r
-\r
-    \r
-\r
-    <p>Pour contrôler étroitement votre serveur, vous pouvez interdire\r
-    l'utilisation des fichiers <code>.htaccess</code> qui permettent de\r
-    passer outre les fonctionnalités de sécurité que vous avez configurées.\r
-    Voici un moyen pour y parvenir :</p>\r
-\r
-    <p>Ajoutez dans le fichier de configuration du serveur</p>\r
-\r
-    <div class="example"><p><code>\r
-      &lt;Directory /&gt; <br />\r
-        AllowOverride None <br />\r
-      &lt;/Directory&gt;\r
-    </code></p></div>\r
-\r
-    <p>Ceci interdit l'utilisation des fichiers <code>.htaccess</code> dans\r
-    tous les répertoires, sauf ceux pour lesquels c'est explicitement\r
-    autorisé.</p>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="protectserverfiles" id="protectserverfiles">Protection par défaut des fichiers du serveur</a></h2>\r
-\r
-    \r
-\r
-    <p>Le concept d'accès par défaut est un aspect d'Apache qui est parfois mal\r
-    compris. C'est à dire que, à moins que vous ne changiez explicitement ce\r
-    comportement, si le serveur trouve son chemin vers un fichier en suivant\r
-    les règles normales de correspondance URL - fichier, il peut le retourner\r
-    aux clients.</p>\r
-\r
-    <p>Considérons l'exemple suivant :</p>\r
-\r
-    <div class="example"><p><code>\r
-      # cd /; ln -s / public_html <br />\r
-      puis accès à <code>http://localhost/~root/</code>\r
-    </code></p></div>\r
-\r
-    <p>Ceci permettrait aux clients de parcourir l'ensemble du système de\r
-    fichiers. Pour l'éviter, ajoutez le bloc suivant à la configuration\r
-    de votre serveur :</p>\r
-\r
-    <div class="example"><p><code>\r
-      &lt;Directory /&gt; <br />\r
-      Order Deny,Allow <br />\r
-      Deny from all <br />\r
-      &lt;/Directory&gt;\r
-    </code></p></div>\r
-\r
-    <p>ceci va interdire l'accès par défaut à tous les fichiers du système de\r
-    fichiers. Vous devrez ensuite ajouter les blocs\r
-    <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> appropriés correspondant\r
-    aux répertoires auxquels vous voulez autorisez l'accès. Par exemple,</p>\r
-\r
-    <div class="example"><p><code>\r
-      &lt;Directory /usr/users/*/public_html&gt; <br />\r
-        Order Deny,Allow <br />\r
-        Allow from all <br />\r
-      &lt;/Directory&gt; <br />\r
-      &lt;Directory /usr/local/httpd&gt; <br />\r
-        Order Deny,Allow <br />\r
-        Allow from all <br />\r
-      &lt;/Directory&gt;\r
-    </code></p></div>\r
-\r
-    <p>Portez une attention particulière aux interactions entre les directives\r
-    <code class="directive"><a href="../mod/core.html#location">Location</a></code> et\r
-    <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> ; par exemple, si une\r
-    directive <code>&lt;Directory /&gt;</code> interdit un accès, une\r
-    directive <code>&lt;Location /&gt;</code> pourra passer outre.</p>\r
-\r
-    <p>De même, soyez méfiant en jouant avec la directive\r
-    <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> ; la positionner à\r
-    <code>"./"</code> aurait le même effet, pour root, que le premier exemple plus haut.\r
-    Si vous utilisez Apache version 1.3 ou supérieure, nous vous conseillons\r
-    fortement d'inclure la ligne suivante dans le fichier de configuration de\r
-    votre serveur :</p>\r
-\r
-    <div class="example"><p><code>\r
-      UserDir disabled root\r
-    </code></p></div>\r
-\r
-  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>\r
-<div class="section">\r
-<h2><a name="watchyourlogs" id="watchyourlogs">Surveillez vos journaux</a></h2>\r
-\r
-    \r
-\r
-    <p>Pour vous tenir informé de ce qui se passe réellement dans votre\r
-    serveur, vous devez consulter vos\r
-    <a href="../logs.html">fichiers journaux</a>. Même si les fichiers journaux\r
-    ne consignent que des évènements qui se sont déjà produits, ils vous\r
-    informeront sur la nature des attaques qui sont lancées contre le serveur\r
-    et vous permettront de vérifier si le niveau de sécurité nécessaire est\r
-    atteint.</p>\r
-\r
-    <p>Quelques exemples :</p>\r
-\r
-    <div class="example"><p><code>\r
-      grep -c "/jsp/source.jsp?/jsp/ /jsp/source.jsp??" access_log <br />\r
-      grep "client denied" error_log | tail -n 10\r
-    </code></p></div>\r
-\r
-    <p>Le premier exemple listera les attaques essayant d'exploiter la\r
-    <a href="http://online.securityfocus.com/bid/4876/info/">vulnérabilité\r
-    d'Apache Tomcat pouvant provoquer la divulgation d'informations par des\r
-    requêtes Source.JSP mal formées</a>, le second donnera la liste des dix\r
-    dernières interdictions client ; par exemple :</p>\r
-\r
-    <div class="example"><p><code>\r
-      [Thu Jul 11 17:18:39 2002] [error] [client foo.example.com] client denied\r
-      by server configuration: /usr/local/apache/htdocs/.htpasswd\r
-    </code></p></div>\r
-\r
-    <p>Comme vous le voyez, les fichiers journaux ne consignent que ce qui\r
-    s'est déjà produit ; ainsi, si le client a pu accéder au fichier\r
-    <code>.htpasswd</code>, vous devriez avoir quelque chose du style :</p>\r
-\r
-    <div class="example"><p><code>\r
-      foo.example.com - - [12/Jul/2002:01:59:13 +0200] "GET /.htpasswd HTTP/1.1"\r
-    </code></p></div>\r
-\r
-    <p>dans votre <a href="../logs.html#accesslog">journal des accès</a> ; ce\r
-    qui signifie que vous avez probablement mis en commentaire ce qui suit dans\r
-    le fichier de configuration de votre serveur :</p>\r
-\r
-    <div class="example"><p><code>\r
-      &lt;Files ~ "^\.ht"&gt; <br />\r
-        Order allow,deny <br />\r
-        Deny from all <br />\r
-      &lt;/Files&gt;\r
-    </code></p></div>\r
-\r
-  </div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="../en/misc/security_tips.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="../fr/misc/security_tips.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="../ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="../tr/misc/security_tips.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Conseils sur la sécurité - Serveur Apache HTTP</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page"><div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Documentations diverses</a></div><div id="page-content"><div id="preamble"><h1>Conseils sur la sécurité</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="../en/misc/security_tips.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/misc/security_tips.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/misc/security_tips.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div>
+
+    <p>Ce document propose quelques conseils et astuces concernant les
+    problèmes de sécurité liés
+    à l'installation d'un serveur web. Certaines suggestions seront à caractère
+    général, tandis que d'autres seront spécifiques à Apache.</p>
+  </div>
+<div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#uptodate">Maintenez votre serveur à jour</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#dos">Attaques de type "Déni de service"
+    (Denial of Service - DoS)</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#serverroot">Permissions sur les répertoires de la racine du serveur</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#ssi">Inclusions côté serveur</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#cgi">Les CGI en général</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#nsaliasedcgi">CGI sans alias de script</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#saliasedcgi">CGI avec alias de script</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#dynamic">Autres sources de contenu dynamique</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#systemsettings">Protection de la configuration du système</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#protectserverfiles">Protection par défaut des fichiers du serveur</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#watchyourlogs">Surveillez vos journaux</a></li>
+</ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="uptodate" id="uptodate">Maintenez votre serveur à jour</a></h2>
+
+    <p>Le serveur HTTP Apache a une bonne réputation en matière de sécurité
+    et possède une communauté de développeurs très sensibilisés aux problèmes
+    de sécurité. Mais il est inévitable de trouver certains problèmes
+    -- petits ou grands -- une fois le logiciel mis à disposition. C'est pour
+    cette raison qu'il est crucial de se tenir informé des mises à jour. Si
+    vous avez obtenu votre version du serveur HTTP directement depuis Apache,
+    nous vous conseillons grandement de vous abonner à la <a href="http://httpd.apache.org/lists.html#http-announce">Liste de diffusion
+    des annonces du serveur HTTP</a> qui vous informera de
+    la parution des nouvelles versions et des mises à jour de sécurité. La
+    plupart des distributeurs tiers d'Apache fournissent des services
+    similaires.</p>
+
+    <p>Gardez cependant à l'esprit que lorsqu'un serveur web est compromis, le
+    code du serveur HTTP n'est la plupart du temps pas en cause. Les problèmes
+    proviennent plutôt de code ajouté, de scripts CGI, ou du système
+    d'exploitation sous-jacent. Vous devez donc vous tenir informé des
+    problèmes et mises à jour concernant tous les logiciels présents sur
+    votre système.</p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="dos" id="dos">Attaques de type "Déni de service"
+    (Denial of Service - DoS)</a></h2>
+
+    
+
+    <p>Tous les services réseau peuvent faire l'objet d'attaques de type
+    "Déni de service" qui tentent de les empêcher de répondre aux clients en
+    saturant leurs ressources. Il est impossible de se prémunir totalement
+    contre ce type d'attaques, mais vous pouvez accomplir certaines actions
+    afin de minimiser les problèmes qu'elles créent.</p>
+
+    <p>Souvent, l'outil anti-DoS le plus efficace sera constitué par le
+    pare-feu ou certaines configurations du système d'exploitation. Par
+    exemple, la plupart des pare-feu peuvent être configurés de façon à
+    limiter le nombre de connexions simultanées depuis une adresse IP ou un
+    réseau, ce qui permet de prévenir toute une gamme d'attaques simples.
+    Bien sûr, ceci n'est d'aucun secours contre les attaques de type
+    "Déni de service" distribuées (DDoS).</p>
+
+    <p>Certains réglages de la configuration d'Apache peuvent aussi
+    minimiser les problèmes :</p>
+
+    <ul>
+      <li>La valeur de la directive
+      <code class="directive"><a href="../mod/core.html#timeout">TimeOut</a></code> doit être diminuée sur les
+      sites sujets aux attaques DoS. Une valeur de quelques secondes devrait
+      convenir. Cependant, comme <code class="directive"><a href="../mod/core.html#timeout">TimeOut</a></code>
+      est actuellement concerné par de nombreuses opérations différentes, lui
+      attribuer une valeur trop faible peut provoquer des problèmes avec les
+      scripts CGI qui présentent un long temps de réponse.</li>
+
+      <li>La valeur de la directive
+      <code class="directive"><a href="../mod/core.html#keepalivetimeout">KeepAliveTimeout</a></code> doit aussi être
+      diminuée sur les sites sujets aux attaques DoS. Certains sites
+      désactivent même complètement le "maintien en vie" (keepalives)
+      à l'aide de la directive
+      <code class="directive"><a href="../mod/core.html#keepalive">KeepAlive</a></code>, ce qui bien sûr
+      présente des inconvénients en matière de performances.</li>
+
+      <li>Les valeurs des différentes directives fournies par d'autres modules
+      et en rapport avec des délais doivent aussi être vérifiées.</li>
+
+      <li>Les directives
+      <code class="directive"><a href="../mod/core.html#limitrequestbody">LimitRequestBody</a></code>,
+      <code class="directive"><a href="../mod/core.html#limitrequestfields">LimitRequestFields</a></code>,
+      <code class="directive"><a href="../mod/core.html#limitrequestfieldsize">LimitRequestFieldSize</a></code>,
+      <code class="directive"><a href="../mod/core.html#limitrequestline">LimitRequestLine</a></code>, et
+      <code class="directive"><a href="../mod/core.html#limitxmlrequestbody">LimitXMLRequestBody</a></code> doivent être
+      configurées avec prudence afin de limiter la consommation de ressources
+      induite par les demandes des clients.
+      </li>
+
+      <li>Sur les systèmes d'exploitation qui le supportent, assurez-vous que
+      la directive <code class="directive"><a href="../mod/core.html#acceptfilter">AcceptFilter</a></code> est
+      activée afin de déléguer une partie du traitement des requêtes au
+      système d'exploitation. Elle est activée par défaut dans le démon httpd
+      d'Apache, mais peut nécessiter une reconfiguration de votre noyau.</li>
+
+      <li>Optimisez la directive <code class="directive"><a href="../mod/mpm_common.html#maxclients">MaxClients</a></code> de façon à définir le nombre
+      maximum de connexions simultanées au dessus duquel les ressources
+      s'épuisent. Voir aussi la <a href="perf-tuning.html">documentation sur l'optimisation des
+      performances</a>.</li>
+
+      <li>L'utilisation d'un <a href="../mpm.html">module mpm</a> threadé
+      vous permet de traiter d'avantage de connexions simultanées, ce qui
+      minimise l'effet des attaques DoS. Dans le futur, le module mpm expérimental
+      <code class="module"><a href="../mod/event.html">event</a></code> utilisera un traitement asynchrone afin de ne pas
+      dédier un thread à chaque connexion. Il est en cours d'étude à
+      l'heure actuelle et n'est pas encore entièrement implémenté. En
+      particulier, le mpm <code class="module"><a href="../mod/event.html">event</a></code> est actuellement incompatible
+      avec le module <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> ainsi que d'autres filtres
+      en entrée.</li>
+
+      <li>Il existe de nombreux modules tiers disponibles à <a href="http://modules.apache.org/">http://modules.apache.org/</a> qui
+      peuvent retreindre les comportements de certains clients et ainsi
+      minimiser les problèmes de DoS.</li>
+
+    </ul>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="serverroot" id="serverroot">Permissions sur les répertoires de la racine du serveur</a></h2>
+
+    
+
+    <p>Typiquement, Apache est démarré par l'utilisateur root, puis il devient
+    la propriété de l'utilisateur défini par la directive <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code> afin de répondre aux demandes. Comme
+    pour toutes les commandes exécutées par root, vous devez vous assurer
+    qu'elle n'est pas modifiable par les utilisateurs autres que root. Les
+    fichiers eux-mêmes, mais aussi les répertoires ainsi que leurs parents ne
+    doivent être modifiables que par root. Par exemple, si vous avez choisi de
+    placer la racine du serveur dans <code>/usr/local/apache</code>, il est conseillé de
+    créer le répertoire en tant que root, avec des commandes du style :</p>
+
+    <div class="example"><p><code>
+      mkdir /usr/local/apache <br />
+      cd /usr/local/apache <br />
+      mkdir bin conf logs <br />
+      chown 0 . bin conf logs <br />
+      chgrp 0 . bin conf logs <br />
+      chmod 755 . bin conf logs
+    </code></p></div>
+
+    <p>Nous supposerons que <code>/</code>, <code>/usr</code> et
+    <code>/usr/local</code> ne sont modifiables que par
+    root. Quand vous installez l'exécutable <code class="program"><a href="../programs/httpd.html">httpd</a></code>, vous
+    devez vous assurer qu'il possède des protections similaires :</p>
+
+    <div class="example"><p><code>
+      cp httpd /usr/local/apache/bin <br />
+      chown 0 /usr/local/apache/bin/httpd <br />
+      chgrp 0 /usr/local/apache/bin/httpd <br />
+      chmod 511 /usr/local/apache/bin/httpd
+    </code></p></div>
+
+    <p>Vous pouvez créer un sous-répertoire htdocs modifiable par d'autres
+    utilisateurs -- car root ne crée ni exécute aucun fichier dans ce
+    sous-répertoire.</p>
+
+    <p>Si vous permettez à des utilisateurs non root de modifier des fichiers
+    que root écrit ou exécute, vous exposez votre système à une compromission
+    de l'utilisateur root. Par exemple, quelqu'un pourrait remplacer le binaire
+    <code class="program"><a href="../programs/httpd.html">httpd</a></code> de façon à ce que la prochaine fois que vous le
+    redémarrerez, il exécutera un code arbitraire. Si le répertoire des
+    journaux a les droits en écriture (pour un utilisateur non root), quelqu'un
+    pourrait remplacer un fichier journal par un lien symbolique vers un autre
+    fichier système, et root pourrait alors écraser ce fichier avec des données
+    arbitraires. Si les fichiers journaux eux-mêmes ont des droits en
+    écriture (pour un utilisateur non root), quelqu'un pourrait
+    modifier les journaux eux-mêmes avec des données fausses.</p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="ssi" id="ssi">Inclusions côté serveur</a></h2>
+
+    
+
+    <p>Les inclusions côté serveur (Server Side Includes - SSI) exposent
+    l'administrateur du serveur à de nombreux risques potentiels en matière de
+    sécurité.</p>
+
+    <p>Le premier risque est l'augmentation de la charge du serveur. Tous les
+    fichiers où SSI est activé doivent être analysés par Apache, qu'ils
+    contiennent des directives SSI ou non. L'augmentation de la charge induite
+    est minime, mais peut devenir significative dans le contexte d'un
+    serveur partagé.</p>
+
+    <p>Les fichiers SSI présentent les mêmes risques que les scripts CGI en
+    général. Les fichiers où SSI est activé peuvent exécuter tout script CGI
+    ou autre programme à l'aide de la commande <code>"exec cmd"</code> avec les permissions
+    des utilisateur et groupe sous lesquels Apache s'exécute, comme défini
+    dans <code>httpd.conf</code>.</p>
+
+    <p>Des méthodes existent pour améliorer la sécurité des fichiers SSI, tout
+    en tirant parti des bénéfices qu'ils apportent.</p>
+
+    <p>Pour limiter les dommages qu'un fichier SSI agressif pourrait causer,
+    l'administrateur du serveur peut activer<a href="../suexec.html">suexec</a>
+    comme décrit dans la section <a href="#cgi">Les CGI en général</a>.</p>
+
+    <p>L'activation des SSI pour des fichiers possédant des extensions
+    <code>.html</code> ou
+    <code>.htm</code> peut s'avérer dangereux. Ceci est particulièrement vrai dans un
+    environnement de serveur partagé ou étant le siège d'un traffic élevé. Les
+    fichiers où SSI est activé doivent posséder une extension spécifique, telle
+    que la conventionnelle <code>.shtml</code>. Ceci permet de limiter la charge du serveur
+    à un niveau minimum et de simplifier la gestion des risques.</p>
+
+    <p>Une autre solution consiste à interdire l'exécution de scripts et
+    programmes à partir de pages SSI. Pour ce faire, remplacez
+    <code>Includes</code> par <code>IncludesNOEXEC</code> dans la directive
+    <code class="directive"><a href="../mod/core.html#options">Options</a></code>. Notez que les utilisateurs
+    pourront encore utiliser <code>&lt;--#include virtual="..." --&gt;</code> pour exécuter
+    des scripts CGI si ces scripts sont situés dans des répertoires spécifiés
+    par une directive
+    <code class="directive"><a href="../mod/mod_alias.html#scriptalias">ScriptAlias</a></code>.</p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="cgi" id="cgi">Les CGI en général</a></h2>
+
+    
+
+    <p>Tout d'abord, vous devez toujours garder à l'esprit que vous devez
+    faire confiance aux développeurs de scripts ou programmes CGI ainsi qu'à
+    vos compétences pour déceler les trous de sécurité potentiels dans les
+    CGI, que ceux-ci soient délibérés ou accidentels. Les scripts CGI peuvent
+    essentiellement exécuter des commandes arbitraires sur votre système avec
+    les droits de l'utilisateur du serveur web, et peuvent par conséquent être
+    extrèmement dangereux s'ils ne sont pas vérifiés avec soin.</p>
+
+    <p>Tous les scripts CGI s'exécutent sous le même utilisateur, il peuvent
+    donc entrer en conflit (accidentellement ou délibérément) avec d'autres
+    scripts. Par exemple, l'utilisateur A hait l'utilisateur B, il écrit donc
+    un script qui efface la base de données CGI de l'utilisateur B. Vous pouvez
+    utiliser le programme <a href="../suexec.html">suEXEC</a> pour faire en
+    sorte que les scripts s'exécutent sous des utilisateurs différents. Ce
+    programme est inclus dans la distribution d'Apache depuis la version 1.2
+    et est appelé à partir de certaines portions de code du serveur Apache. Une
+    autre méthode plus connue est l'utilisation de
+    <a href="http://cgiwrap.unixtools.org/">CGIWrap</a>.</p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="nsaliasedcgi" id="nsaliasedcgi">CGI sans alias de script</a></h2>
+
+    
+
+    <p>Vous ne devez permettre aux utilisateurs d'exécuter des scripts CGI
+    depuis n'importe quel répertoire que dans l'éventualité où :</p>
+
+    <ul>
+      <li>Vous faites confiance à vos utilisateurs pour ne pas écrire de
+      scripts qui vont délibérément ou accidentellement exposer votre
+      système à une attaque.</li>
+      <li>Vous estimez que le niveau de sécurité dans les autres parties de
+      votre site est si faible qu'un trou de sécurité de plus ou de moins
+      n'est pas très important.</li>
+      <li>Votre système ne comporte aucun utilisateur, et personne ne visite
+      jamais votre site.</li>
+    </ul>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="saliasedcgi" id="saliasedcgi">CGI avec alias de script</a></h2>
+
+    
+
+    <p>Le confinement des CGI dans des répertoires spécifiques permet à
+    l'administrateur de contrôler ce que l'on met dans ces répertoires. Ceci
+    est bien entendu mieux sécurisé que les CGI sans alias de script, mais
+    seulement à condition que les utilisateurs avec les droits en écriture sur
+    les répertoires soient dignes de confiance, et que l'administrateur ait la
+    volonté de tester chaque programme ou script CGI à la recherche d'éventuels
+    trous de sécurité.</p>
+
+    <p>La plupart des sites choisissent cette approche au détriment des CGI
+    sans alias de script.</p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="dynamic" id="dynamic">Autres sources de contenu dynamique</a></h2>
+
+  
+
+  <p>
+  Les options de scripting intégrées qui s'exécutent en tant que partie du
+  serveur lui-même, comme <code>mod_php</code>, <code>mod_perl</code>,
+  <code>mod_tcl</code>, et <code>mod_python</code>,
+  s'exécutent sous le même utilisateur que le serveur (voir la directive
+  <code class="directive"><a href="../mod/mpm_common.html#user">User</a></code>), et par conséquent,
+  les scripts que ces moteurs exécutent peuvent accéder aux mêmes ressources
+  que le serveur. Certains moteurs de scripting peuvent proposer des
+  restrictions, mais pour plus de sûreté, il vaut mieux partir du principe
+  que ce n'est pas le cas.</p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="systemsettings" id="systemsettings">Protection de la configuration du système</a></h2>
+
+    
+
+    <p>Pour contrôler étroitement votre serveur, vous pouvez interdire
+    l'utilisation des fichiers <code>.htaccess</code> qui permettent de
+    passer outre les fonctionnalités de sécurité que vous avez configurées.
+    Voici un moyen pour y parvenir :</p>
+
+    <p>Ajoutez dans le fichier de configuration du serveur</p>
+
+    <div class="example"><p><code>
+      &lt;Directory /&gt; <br />
+        AllowOverride None <br />
+      &lt;/Directory&gt;
+    </code></p></div>
+
+    <p>Ceci interdit l'utilisation des fichiers <code>.htaccess</code> dans
+    tous les répertoires, sauf ceux pour lesquels c'est explicitement
+    autorisé.</p>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="protectserverfiles" id="protectserverfiles">Protection par défaut des fichiers du serveur</a></h2>
+
+    
+
+    <p>Le concept d'accès par défaut est un aspect d'Apache qui est parfois mal
+    compris. C'est à dire que, à moins que vous ne changiez explicitement ce
+    comportement, si le serveur trouve son chemin vers un fichier en suivant
+    les règles normales de correspondance URL - fichier, il peut le retourner
+    aux clients.</p>
+
+    <p>Considérons l'exemple suivant :</p>
+
+    <div class="example"><p><code>
+      # cd /; ln -s / public_html <br />
+      puis accès à <code>http://localhost/~root/</code>
+    </code></p></div>
+
+    <p>Ceci permettrait aux clients de parcourir l'ensemble du système de
+    fichiers. Pour l'éviter, ajoutez le bloc suivant à la configuration
+    de votre serveur :</p>
+
+    <div class="example"><p><code>
+      &lt;Directory /&gt; <br />
+      Order Deny,Allow <br />
+      Deny from all <br />
+      &lt;/Directory&gt;
+    </code></p></div>
+
+    <p>ceci va interdire l'accès par défaut à tous les fichiers du système de
+    fichiers. Vous devrez ensuite ajouter les blocs
+    <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> appropriés correspondant
+    aux répertoires auxquels vous voulez autorisez l'accès. Par exemple,</p>
+
+    <div class="example"><p><code>
+      &lt;Directory /usr/users/*/public_html&gt; <br />
+        Order Deny,Allow <br />
+        Allow from all <br />
+      &lt;/Directory&gt; <br />
+      &lt;Directory /usr/local/httpd&gt; <br />
+        Order Deny,Allow <br />
+        Allow from all <br />
+      &lt;/Directory&gt;
+    </code></p></div>
+
+    <p>Portez une attention particulière aux interactions entre les directives
+    <code class="directive"><a href="../mod/core.html#location">Location</a></code> et
+    <code class="directive"><a href="../mod/core.html#directory">Directory</a></code> ; par exemple, si une
+    directive <code>&lt;Directory /&gt;</code> interdit un accès, une
+    directive <code>&lt;Location /&gt;</code> pourra passer outre.</p>
+
+    <p>De même, soyez méfiant en jouant avec la directive
+    <code class="directive"><a href="../mod/mod_userdir.html#userdir">UserDir</a></code> ; la positionner à
+    <code>"./"</code> aurait le même effet, pour root, que le premier exemple plus haut.
+    Si vous utilisez Apache version 1.3 ou supérieure, nous vous conseillons
+    fortement d'inclure la ligne suivante dans le fichier de configuration de
+    votre serveur :</p>
+
+    <div class="example"><p><code>
+      UserDir disabled root
+    </code></p></div>
+
+  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="watchyourlogs" id="watchyourlogs">Surveillez vos journaux</a></h2>
+
+    
+
+    <p>Pour vous tenir informé de ce qui se passe réellement dans votre
+    serveur, vous devez consulter vos
+    <a href="../logs.html">fichiers journaux</a>. Même si les fichiers journaux
+    ne consignent que des évènements qui se sont déjà produits, ils vous
+    informeront sur la nature des attaques qui sont lancées contre le serveur
+    et vous permettront de vérifier si le niveau de sécurité nécessaire est
+    atteint.</p>
+
+    <p>Quelques exemples :</p>
+
+    <div class="example"><p><code>
+      grep -c "/jsp/source.jsp?/jsp/ /jsp/source.jsp??" access_log <br />
+      grep "client denied" error_log | tail -n 10
+    </code></p></div>
+
+    <p>Le premier exemple listera les attaques essayant d'exploiter la
+    <a href="http://online.securityfocus.com/bid/4876/info/">vulnérabilité
+    d'Apache Tomcat pouvant provoquer la divulgation d'informations par des
+    requêtes Source.JSP mal formées</a>, le second donnera la liste des dix
+    dernières interdictions client ; par exemple :</p>
+
+    <div class="example"><p><code>
+      [Thu Jul 11 17:18:39 2002] [error] [client foo.example.com] client denied
+      by server configuration: /usr/local/apache/htdocs/.htpasswd
+    </code></p></div>
+
+    <p>Comme vous le voyez, les fichiers journaux ne consignent que ce qui
+    s'est déjà produit ; ainsi, si le client a pu accéder au fichier
+    <code>.htpasswd</code>, vous devriez avoir quelque chose du style :</p>
+
+    <div class="example"><p><code>
+      foo.example.com - - [12/Jul/2002:01:59:13 +0200] "GET /.htpasswd HTTP/1.1"
+    </code></p></div>
+
+    <p>dans votre <a href="../logs.html#accesslog">journal des accès</a> ; ce
+    qui signifie que vous avez probablement mis en commentaire ce qui suit dans
+    le fichier de configuration de votre serveur :</p>
+
+    <div class="example"><p><code>
+      &lt;Files ~ "^\.ht"&gt; <br />
+        Order allow,deny <br />
+        Deny from all <br />
+      &lt;/Files&gt;
+    </code></p></div>
+
+  </div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="../en/misc/security_tips.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="../fr/misc/security_tips.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="../ko/misc/security_tips.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="../tr/misc/security_tips.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossaire</a> | <a href="../sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file
index 33aeace0a058d2de94c77643d0d8886880606e0f..95b318b4deb22b83b835a4d9a215e18eaa648028 100644 (file)
@@ -1,80 +1,80 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>mod_plainmem - Apache HTTP Server</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body>\r
-<div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>\r
-<p class="apache">Apache HTTP Server Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Modules</a></div>\r
-<div id="page-content">\r
-<div id="preamble"><h1>Apache Module mod_plainmem</h1>\r
-<div class="toplang">\r
-<p><span>Available Languages: </span><a href="../en/mod/mod_plainmem.html" title="English">&nbsp;en&nbsp;</a></p>\r
-</div>\r
-<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Slot-based shared memory provider.</td></tr>\r
-<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>\r
-<tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>plainmem_module</td></tr>\r
-<tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_plainmem.c</td></tr></table>\r
-<h3>Summary</h3>\r
-\r
-    <p><code>mod_plainmem</code> is a memory provider which\r
-    provides for creation and access to a plain memory segment\r
-    in which the datasets are organized in "slots." Although\r
-    it can be used directly, normally <code class="module"><a href="../mod/mod_slotmem.html">mod_slotmem</a></code>\r
-    is used as a front-end.\r
-    </p>\r
-\r
-    <p>If the memory needs to be shared between threads and\r
-    processes, a better provider would be\r
-    <code class="module"><a href="../mod/mod_sharedmem.html">mod_sharedmem</a></code>.\r
-    </p>\r
-\r
-    <p><code>mod_plainmem</code> provides the following\r
-    API functions:\r
-    </p>\r
-\r
-    <dl>\r
-      <dt>apr_status_t slotmem_do(ap_slotmem_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)</dt>\r
-      <dd>call the callback on all worker slots</dd>\r
-\r
-      <dt>apr_status_t slotmem_create(ap_slotmem_t **new, const char *name, apr_size_t item_size, int item_num, apr_pool_t *pool)</dt>\r
-      <dd>create a new slotmem with each item size is item_size.</dd>\r
-\r
-      <dt>apr_status_t slotmem_attach(ap_slotmem_t **new, const char *name, apr_size_t *item_size, int *item_num, apr_pool_t *pool)</dt>\r
-      <dd>attach to an existing slotmem.</dd>\r
-\r
-      <dt>apr_status_t slotmem_mem(ap_slotmem_t *s, int item_id, void**mem)</dt>\r
-      <dd>get the memory associated with this worker slot.</dd>\r
-\r
-      <dt>apr_status_t slotmem_lock(ap_slotmem_t *s)</dt>\r
-      <dd>lock the memory segment</dd>\r
-\r
-      <dt>(apr_status_t slotmem_unlock(ap_slotmem_t *s)</dt>\r
-      <dd>unlock the memory segment</dd>\r
-    </dl>\r
-\r
-</div>\r
-<div id="quickview"><h3 class="directives">Directives</h3>\r
-<p>This module provides no\r
-            directives.</p>\r
-</div>\r
-\r
-</div>\r
-<div class="bottomlang">\r
-<p><span>Available Languages: </span><a href="../en/mod/mod_plainmem.html" title="English">&nbsp;en&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>mod_plainmem - Apache HTTP Server</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body>
+<div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
+<p class="apache">Apache HTTP Server Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Modules</a></div>
+<div id="page-content">
+<div id="preamble"><h1>Apache Module mod_plainmem</h1>
+<div class="toplang">
+<p><span>Available Languages: </span><a href="../en/mod/mod_plainmem.html" title="English">&nbsp;en&nbsp;</a></p>
+</div>
+<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Slot-based shared memory provider.</td></tr>
+<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
+<tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>plainmem_module</td></tr>
+<tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_plainmem.c</td></tr></table>
+<h3>Summary</h3>
+
+    <p><code>mod_plainmem</code> is a memory provider which
+    provides for creation and access to a plain memory segment
+    in which the datasets are organized in "slots." Although
+    it can be used directly, normally <code class="module"><a href="../mod/mod_slotmem.html">mod_slotmem</a></code>
+    is used as a front-end.
+    </p>
+
+    <p>If the memory needs to be shared between threads and
+    processes, a better provider would be
+    <code class="module"><a href="../mod/mod_sharedmem.html">mod_sharedmem</a></code>.
+    </p>
+
+    <p><code>mod_plainmem</code> provides the following
+    API functions:
+    </p>
+
+    <dl>
+      <dt>apr_status_t slotmem_do(ap_slotmem_t *s, ap_slotmem_callback_fn_t *func, void *data, apr_pool_t *pool)</dt>
+      <dd>call the callback on all worker slots</dd>
+
+      <dt>apr_status_t slotmem_create(ap_slotmem_t **new, const char *name, apr_size_t item_size, int item_num, apr_pool_t *pool)</dt>
+      <dd>create a new slotmem with each item size is item_size.</dd>
+
+      <dt>apr_status_t slotmem_attach(ap_slotmem_t **new, const char *name, apr_size_t *item_size, int *item_num, apr_pool_t *pool)</dt>
+      <dd>attach to an existing slotmem.</dd>
+
+      <dt>apr_status_t slotmem_mem(ap_slotmem_t *s, int item_id, void**mem)</dt>
+      <dd>get the memory associated with this worker slot.</dd>
+
+      <dt>apr_status_t slotmem_lock(ap_slotmem_t *s)</dt>
+      <dd>lock the memory segment</dd>
+
+      <dt>(apr_status_t slotmem_unlock(ap_slotmem_t *s)</dt>
+      <dd>unlock the memory segment</dd>
+    </dl>
+
+</div>
+<div id="quickview"><h3 class="directives">Directives</h3>
+<p>This module provides no
+            directives.</p>
+</div>
+
+</div>
+<div class="bottomlang">
+<p><span>Available Languages: </span><a href="../en/mod/mod_plainmem.html" title="English">&nbsp;en&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
 </body></html>
\ No newline at end of file
index 4dc32c34f30d3c09a9e3ffb5d346207d2cade5ec..63a8d129d5387e15900f86f6b1201ced594480c2 100644 (file)
@@ -1,68 +1,68 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>mod_proxy_fdpass - Apache HTTP Server</title>\r
-<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="../images/favicon.ico" rel="shortcut icon" /></head>\r
-<body>\r
-<div id="page-header">\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>\r
-<p class="apache">Apache HTTP Server Version 2.3</p>\r
-<img alt="" src="../images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Modules</a></div>\r
-<div id="page-content">\r
-<div id="preamble"><h1>Apache Module mod_proxy_fdpass</h1>\r
-<div class="toplang">\r
-<p><span>Available Languages: </span><a href="../en/mod/mod_proxy_fdpass.html" title="English">&nbsp;en&nbsp;</a></p>\r
-</div>\r
-<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>fdpass external process support module for\r
-<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td></tr>\r
-<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>\r
-<tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>proxy_fdpass_module</td></tr>\r
-<tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_proxy_fdpass.c</td></tr>\r
-<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available for unix in version 2.3 and later</td></tr></table>\r
-<h3>Summary</h3>\r
-\r
-    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. It provides support for the passing the socket of the\r
-    client to another process.</p>\r
-\r
-    <p><code>mod_proxy_fdpass</code> uses the ability of AF_UNIX domain \r
-    sockets to <a href="http://www.freebsd.org/cgi/man.cgi?query=recv">pass an \r
-    open file descriptor</a> to allow another process to finish handling a request.\r
-    </p>\r
-\r
-    <p>The module has a <code>proxy_fdpass_flusher</code> provider interface, \r
-    which allows another module to optionally send the response headers, or even\r
-    the start of the response body.  The default flush provider disables keep-alive,\r
-    and sends the response headers, letting the external process just send a\r
-    response body.</p>\r
-\r
-    <p>At this time the only data passed to the external process is the client \r
-    socket. To recieve a client socket, call recvfrom with the an allocated \r
-    <a href="http://www.kernel.org/doc/man-pages/online/pages/man3/cmsg.3.html"><code>struct cmsghdr</code></a>. Future versions of this module may include\r
-    more data after the client socket, but this is not implemented at this time.\r
-    </p>\r
-</div>\r
-<div id="quickview"><h3 class="directives">Directives</h3>\r
-<p>This module provides no\r
-            directives.</p>\r
-<h3>See also</h3>\r
-<ul class="seealso">\r
-<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>\r
-</ul></div>\r
-\r
-</div>\r
-<div class="bottomlang">\r
-<p><span>Available Languages: </span><a href="../en/mod/mod_proxy_fdpass.html" title="English">&nbsp;en&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>mod_proxy_fdpass - Apache HTTP Server</title>
+<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="../images/favicon.ico" rel="shortcut icon" /></head>
+<body>
+<div id="page-header">
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
+<p class="apache">Apache HTTP Server Version 2.3</p>
+<img alt="" src="../images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.3</a> &gt; <a href="./">Modules</a></div>
+<div id="page-content">
+<div id="preamble"><h1>Apache Module mod_proxy_fdpass</h1>
+<div class="toplang">
+<p><span>Available Languages: </span><a href="../en/mod/mod_proxy_fdpass.html" title="English">&nbsp;en&nbsp;</a></p>
+</div>
+<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>fdpass external process support module for
+<code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td></tr>
+<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
+<tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>proxy_fdpass_module</td></tr>
+<tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_proxy_fdpass.c</td></tr>
+<tr><th><a href="module-dict.html#Compatibility">Compatibility:</a></th><td>Available for unix in version 2.3 and later</td></tr></table>
+<h3>Summary</h3>
+
+    <p>This module <em>requires</em> the service of <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code>. It provides support for the passing the socket of the
+    client to another process.</p>
+
+    <p><code>mod_proxy_fdpass</code> uses the ability of AF_UNIX domain 
+    sockets to <a href="http://www.freebsd.org/cgi/man.cgi?query=recv">pass an 
+    open file descriptor</a> to allow another process to finish handling a request.
+    </p>
+
+    <p>The module has a <code>proxy_fdpass_flusher</code> provider interface, 
+    which allows another module to optionally send the response headers, or even
+    the start of the response body.  The default flush provider disables keep-alive,
+    and sends the response headers, letting the external process just send a
+    response body.</p>
+
+    <p>At this time the only data passed to the external process is the client 
+    socket. To recieve a client socket, call recvfrom with the an allocated 
+    <a href="http://www.kernel.org/doc/man-pages/online/pages/man3/cmsg.3.html"><code>struct cmsghdr</code></a>. Future versions of this module may include
+    more data after the client socket, but this is not implemented at this time.
+    </p>
+</div>
+<div id="quickview"><h3 class="directives">Directives</h3>
+<p>This module provides no
+            directives.</p>
+<h3>See also</h3>
+<ul class="seealso">
+<li><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></li>
+</ul></div>
+
+</div>
+<div class="bottomlang">
+<p><span>Available Languages: </span><a href="../en/mod/mod_proxy_fdpass.html" title="English">&nbsp;en&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
 </body></html>
\ No newline at end of file
index 136a244dddce19a27dd6ac6eaf9afecb9d8ad6dc..3b1194d118687a5edf803a256500cbcb83766c35 100644 (file)
-<?xml version="1.0" encoding="ISO-8859-1"?>\r
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">\r
-<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-              This file is generated from xml source: DO NOT EDIT\r
-        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\r
-      -->\r
-<title>Plan du site - Serveur Apache HTTP</title>\r
-<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />\r
-<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />\r
-<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />\r
-<link href="./images/favicon.ico" rel="shortcut icon" /></head>\r
-<body id="manual-page">\r
-<div id="page-header">\r
-<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>\r
-<p class="apache">Serveur Apache HTTP Version 2.3</p>\r
-<img alt="" src="./images/feather.gif" /></div>\r
-<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>\r
-<div id="path">\r
-<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.3</a></div>\r
-<div id="page-content"><div id="preamble"><h1>Plan du site</h1>\r
-<div class="toplang">\r
-<p><span>Langues Disponibles: </span><a href="./de/sitemap.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |\r
-<a href="./en/sitemap.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="./es/sitemap.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |\r
-<a href="./fr/sitemap.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="./ja/sitemap.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="./ko/sitemap.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="./tr/sitemap.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div>\r
-\r
-<p>Cette page contient la liste des éléments actuellement disponibles de\r
-la <a href="./">Documentation du serveur HTTP Apache Version\r
-2.3</a>.</p>\r
-</div>\r
-<div id="quickview"><ul id="toc">\r
-<li><img alt="" src="./images/down.gif" /> <a href="#release">Notes de version</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#using">Utilisation du serveur HTTP Apache</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#vhosts">Documentation des serveurs virtuels Apache</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#rewrite">Guide de réécriture d'URLs</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#ssl">Chiffrement SSL/TLS avec Apache</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#howto">Guides, Tutoriels, and Recettes</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#platform">Notes spécifiques à certains systèmes</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#programs">Le serveur HTTP Apache et ses programmes associés</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#misc">Documentations diverses sur Apache</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#modules">Modules Apache</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#developer">Documentation du développeur</a></li>\r
-<li><img alt="" src="./images/down.gif" /> <a href="#index">Glossaire et Index</a></li>\r
-</ul>\r
-</div>\r
-<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="release" id="release">Notes de version</a></h2>\r
-<ul><li><a href="upgrading.html">Mise à jour vers 2.4 depuis 2.2</a></li>\r
-<li><a href="new_features_2_4.html">Nouvelles fonctionnalités d'Apache 2.3/2.4</a></li>\r
-<li><a href="new_features_2_2.html">Nouvelles fonctionnalités d'Apache 2.1/2.2</a></li>\r
-<li><a href="new_features_2_0.html">Nouvelles fonctionnalités d'Apache 2.0</a></li>\r
-<li><a href="license.html">License Apache</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="using" id="using">Utilisation du serveur HTTP Apache</a></h2>\r
-<ul><li><a href="install.html">Compilation et installation</a></li>\r
-<li><a href="invoking.html">Démarrage</a></li>\r
-<li><a href="stopping.html">Arrêt ou redémarrage</a></li>\r
-<li><a href="configuring.html">Fichiers de configuration</a></li>\r
-<li><a href="sections.html">Comment fonctionnent les sections Directory,\r
-Location et Files</a></li>\r
-<li><a href="caching.html">Mise en cache du contenu</a></li>\r
-<li><a href="server-wide.html">Configuration niveau serveur</a></li>\r
-<li><a href="logs.html">Fichiers de traces</a></li>\r
-<li><a href="urlmapping.html">Mise en correspondance des URLs avec le système de fichiers</a></li>\r
-<li><a href="misc/security_tips.html">Conseils sur la sécurité</a></li>\r
-<li><a href="dso.html">Objets Dynamiques Partagés (DSO)</a></li>\r
-<li><a href="content-negotiation.html">Négociation sur le contenu</a></li>\r
-<li><a href="custom-error.html">Messages d'erreur personnalisés</a></li>\r
-<li><a href="bind.html">Définition des adresses et ports qu'utilise\r
-Apache</a></li>\r
-<li><a href="mpm.html">Modules multi-processus (MPMs)</a></li>\r
-<li><a href="env.html">Les variables d'environnement d'Apache</a></li>\r
-<li><a href="handler.html">Utilisation des gestionnaires d'Apache</a></li>\r
-<li><a href="filter.html">Filtres</a></li>\r
-<li><a href="suexec.html">Support de suEXEC</a></li>\r
-<li><a href="misc/perf-tuning.html">Optimisation des performances</a></li>\r
-<li><a href="faq/">Frequently Asked Questions</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="vhosts" id="vhosts">Documentation des serveurs virtuels Apache</a></h2>\r
-<ul><li class="separate"><a href="vhosts/">Aperçu</a></li>\r
-<li><a href="vhosts/name-based.html">Serveurs virtuels basés sur le nom</a></li>\r
-<li><a href="vhosts/ip-based.html">Support des serveurs virtuels basés\r
-sur l'adresse IP</a></li>\r
-<li><a href="vhosts/mass.html">Configuration dynamique de l'hébergement\r
-virtuel de masse</a></li>\r
-<li><a href="vhosts/examples.html">Exemples de serveurs virtuels</a></li>\r
-<li><a href="vhosts/details.html">Discussion approfondie à propos de la\r
-sélection d'un serveur virtuel</a></li>\r
-<li><a href="vhosts/fd-limits.html">Limitations inhérentes aux\r
-descripteurs de fichiers</a></li>\r
-<li><a href="dns-caveats.html">Problèmes avec DNS et Apache</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="rewrite" id="rewrite">Guide de réécriture d'URLs</a></h2>\r
-<ul><li class="separate"><a href="rewrite/">Survol</a></li>\r
-<li><a href="mod/mod_rewrite.html">Documentation de référence de mod_rewrite</a></li>\r
-<li><a href="rewrite/rewrite_intro.html">Introduction</a></li>\r
-<li><a href="rewrite/rewrite_flags.html">Drapeaux</a></li>\r
-<li><a href="rewrite/rewrite_tech.html">Détails techniques</a></li>\r
-<li><a href="rewrite/rewrite_guide.html">Guide de réécriture - exemples utiles</a></li>\r
-<li><a href="rewrite/rewrite_guide_advanced.html">Guide de réécriture avancée -\r
-autres exemples utiles</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="ssl" id="ssl">Chiffrement SSL/TLS avec Apache</a></h2>\r
-<ul><li class="separate"><a href="ssl/">Aperçu</a></li>\r
-<li><a href="ssl/ssl_intro.html">Chiffrement SSL/TLS :\r
-Introduction</a></li>\r
-<li><a href="ssl/ssl_compat.html">Chiffrement SSL/TLS :\r
-Compatibilité</a></li>\r
-<li><a href="ssl/ssl_howto.html">Chiffrement SSL/TLS : Recettes</a></li>\r
-<li><a href="ssl/ssl_faq.html">Chiffrement SSL/TLS : FAQ</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="howto" id="howto">Guides, Tutoriels, and Recettes</a></h2>\r
-<ul><li class="separate"><a href="howto/">Aperçu</a></li>\r
-<li><a href="howto/auth.html">Authentification</a></li>\r
-<li><a href="howto/cgi.html">Contenu dynamique avec CGI</a></li>\r
-<li><a href="howto/ssi.html">Introduction aux Inclusions côté serveur\r
-(Server Side Includes - SSI)</a></li>\r
-<li><a href="howto/htaccess.html">Fichiers .htaccess</a></li>\r
-<li><a href="howto/public_html.html">Répertoires web des\r
-utilisateurs</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="platform" id="platform">Notes spécifiques à certains systèmes</a></h2>\r
-<ul><li class="separate"><a href="platform/">Aperçu</a></li>\r
-<li><a href="platform/windows.html">Utiliser Apache avec Microsoft\r
-Windows</a></li>\r
-<li><a href="platform/win_compiling.html">Compiler Apache pour\r
-Microsoft Windows</a></li>\r
-<li><a href="platform/netware.html">Utiliser Apache avec Novell\r
-NetWare</a></li>\r
-<li><a href="platform/perf-hp.html">Mise en oeuvre d'un serveur web\r
-hautes performances sous HPUX</a></li>\r
-<li><a href="platform/ebcdic.html">Le portage EBCDIC d'Apache</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="programs" id="programs">Le serveur HTTP Apache et ses programmes associés</a></h2>\r
-<ul><li class="separate"><a href="programs/">Aperçu</a></li>\r
-<li><a href="programs/httpd.html">Page de manuel : httpd</a></li>\r
-<li><a href="programs/ab.html">Page de manuel : ab</a></li>\r
-<li><a href="programs/apachectl.html">Page de manuel : apachectl</a></li>\r
-<li><a href="programs/apxs.html">Page de manuel : apxs</a></li>\r
-<li><a href="programs/configure.html">Page de manuel : configure</a></li>\r
-<li><a href="programs/dbmmanage.html">Page de manuel : dbmmanage</a></li>\r
-<li><a href="programs/htcacheclean.html">Page de manuel : htcacheclean</a></li>\r
-<li><a href="programs/htdbm.html">Page de manuel : htdbm</a></li>\r
-<li><a href="programs/htdigest.html">Page de manuel : htdigest</a></li>\r
-<li><a href="programs/htpasswd.html">Page de manuel : htpasswd</a></li>\r
-<li><a href="programs/logresolve.html">Page de manuel : logresolve</a></li>\r
-<li><a href="programs/rotatelogs.html">Page de manuel : rotatelogs</a></li>\r
-<li><a href="programs/suexec.html">Page de manuel : suexec</a></li>\r
-<li><a href="programs/other.html">Autres programmes</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="misc" id="misc">Documentations diverses sur Apache</a></h2>\r
-<ul><li class="separate"><a href="misc/">Aperçu</a></li>\r
-<li><a href="misc/relevant_standards.html">Standards concernés</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="modules" id="modules">Modules Apache</a></h2>\r
-<ul><li><a href="mod/module-dict.html">Définitions des termes utilisés pour\r
-décrire les modules Apache</a></li>\r
-<li><a href="mod/directive-dict.html">Définitions des termes utilisés\r
-pour décrire les directives Apache</a></li>\r
-</ul><ul><li><a href="mod/core.html">Fonctionalités de Base Apache</a></li>\r
-<li><a href="mod/mpm_common.html">Apache MPM: Directives Communes</a></li>\r
-<li><a href="mod/event.html">Apache MPM event</a></li>\r
-<li><a href="mod/mpm_netware.html">Apache MPM netware</a></li>\r
-<li><a href="mod/prefork.html">Apache MPM prefork</a></li>\r
-<li><a href="mod/mpm_winnt.html">Apache MPM winnt</a></li>\r
-<li><a href="mod/worker.html">Apache MPM worker</a></li>\r
-</ul><ul><li><a href="mod/mod_access_compat.html">Mudule Apache mod_access_compat</a></li>\r
-<li><a href="mod/mod_actions.html">Mudule Apache mod_actions</a></li>\r
-<li><a href="mod/mod_alias.html">Mudule Apache mod_alias</a></li>\r
-<li><a href="mod/mod_asis.html">Mudule Apache mod_asis</a></li>\r
-<li><a href="mod/mod_auth_basic.html">Mudule Apache mod_auth_basic</a></li>\r
-<li><a href="mod/mod_auth_digest.html">Mudule Apache mod_auth_digest</a></li>\r
-<li><a href="mod/mod_auth_form.html">Mudule Apache mod_auth_form</a></li>\r
-<li><a href="mod/mod_authn_anon.html">Mudule Apache mod_authn_anon</a></li>\r
-<li><a href="mod/mod_authn_core.html">Mudule Apache mod_authn_core</a></li>\r
-<li><a href="mod/mod_authn_dbd.html">Mudule Apache mod_authn_dbd</a></li>\r
-<li><a href="mod/mod_authn_dbm.html">Mudule Apache mod_authn_dbm</a></li>\r
-<li><a href="mod/mod_authn_file.html">Mudule Apache mod_authn_file</a></li>\r
-<li><a href="mod/mod_authnz_ldap.html">Mudule Apache mod_authnz_ldap</a></li>\r
-<li><a href="mod/mod_authz_core.html">Mudule Apache mod_authz_core</a></li>\r
-<li><a href="mod/mod_authz_dbd.html">Mudule Apache mod_authz_dbd</a></li>\r
-<li><a href="mod/mod_authz_dbm.html">Mudule Apache mod_authz_dbm</a></li>\r
-<li><a href="mod/mod_authz_groupfile.html">Mudule Apache mod_authz_groupfile</a></li>\r
-<li><a href="mod/mod_authz_host.html">Mudule Apache mod_authz_host</a></li>\r
-<li><a href="mod/mod_authz_owner.html">Mudule Apache mod_authz_owner</a></li>\r
-<li><a href="mod/mod_authz_user.html">Mudule Apache mod_authz_user</a></li>\r
-<li><a href="mod/mod_autoindex.html">Mudule Apache mod_autoindex</a></li>\r
-<li><a href="mod/mod_buffer.html">Mudule Apache mod_buffer</a></li>\r
-<li><a href="mod/mod_cache.html">Mudule Apache mod_cache</a></li>\r
-<li><a href="mod/mod_cern_meta.html">Mudule Apache mod_cern_meta</a></li>\r
-<li><a href="mod/mod_cgi.html">Mudule Apache mod_cgi</a></li>\r
-<li><a href="mod/mod_cgid.html">Mudule Apache mod_cgid</a></li>\r
-<li><a href="mod/mod_charset_lite.html">Mudule Apache mod_charset_lite</a></li>\r
-<li><a href="mod/mod_dav.html">Mudule Apache mod_dav</a></li>\r
-<li><a href="mod/mod_dav_fs.html">Mudule Apache mod_dav_fs</a></li>\r
-<li><a href="mod/mod_dav_lock.html">Mudule Apache mod_dav_lock</a></li>\r
-<li><a href="mod/mod_dbd.html">Mudule Apache mod_dbd</a></li>\r
-<li><a href="mod/mod_deflate.html">Mudule Apache mod_deflate</a></li>\r
-<li><a href="mod/mod_dir.html">Mudule Apache mod_dir</a></li>\r
-<li><a href="mod/mod_disk_cache.html">Mudule Apache mod_disk_cache</a></li>\r
-<li><a href="mod/mod_dumpio.html">Mudule Apache mod_dumpio</a></li>\r
-<li><a href="mod/mod_echo.html">Mudule Apache mod_echo</a></li>\r
-<li><a href="mod/mod_env.html">Mudule Apache mod_env</a></li>\r
-<li><a href="mod/mod_example.html">Mudule Apache mod_example</a></li>\r
-<li><a href="mod/mod_expires.html">Mudule Apache mod_expires</a></li>\r
-<li><a href="mod/mod_ext_filter.html">Mudule Apache mod_ext_filter</a></li>\r
-<li><a href="mod/mod_file_cache.html">Mudule Apache mod_file_cache</a></li>\r
-<li><a href="mod/mod_filter.html">Mudule Apache mod_filter</a></li>\r
-<li><a href="mod/mod_headers.html">Mudule Apache mod_headers</a></li>\r
-<li><a href="mod/mod_heartbeat.html">Mudule Apache mod_heartbeat</a></li>\r
-<li><a href="mod/mod_heartmonitor.html">Mudule Apache mod_heartmonitor</a></li>\r
-<li><a href="mod/mod_ident.html">Mudule Apache mod_ident</a></li>\r
-<li><a href="mod/mod_imagemap.html">Mudule Apache mod_imagemap</a></li>\r
-<li><a href="mod/mod_include.html">Mudule Apache mod_include</a></li>\r
-<li><a href="mod/mod_info.html">Mudule Apache mod_info</a></li>\r
-<li><a href="mod/mod_isapi.html">Mudule Apache mod_isapi</a></li>\r
-<li><a href="mod/mod_lbmethod_bybusyness.html">Mudule Apache mod_lbmethod_bybusyness</a></li>\r
-<li><a href="mod/mod_lbmethod_byrequests.html">Mudule Apache mod_lbmethod_byrequests</a></li>\r
-<li><a href="mod/mod_lbmethod_bytraffic.html">Mudule Apache mod_lbmethod_bytraffic</a></li>\r
-<li><a href="mod/mod_lbmethod_heartbeat.html">Mudule Apache mod_lbmethod_heartbeat</a></li>\r
-<li><a href="mod/mod_ldap.html">Mudule Apache mod_ldap</a></li>\r
-<li><a href="mod/mod_log_config.html">Mudule Apache mod_log_config</a></li>\r
-<li><a href="mod/mod_log_forensic.html">Mudule Apache mod_log_forensic</a></li>\r
-<li><a href="mod/mod_logio.html">Mudule Apache mod_logio</a></li>\r
-<li><a href="mod/mod_mime.html">Mudule Apache mod_mime</a></li>\r
-<li><a href="mod/mod_mime_magic.html">Mudule Apache mod_mime_magic</a></li>\r
-<li><a href="mod/mod_negotiation.html">Mudule Apache mod_negotiation</a></li>\r
-<li><a href="mod/mod_nw_ssl.html">Mudule Apache mod_nw_ssl</a></li>\r
-<li><a href="mod/mod_plainmem.html">Mudule Apache mod_plainmem</a></li>\r
-<li><a href="mod/mod_privileges.html">Mudule Apache mod_privileges</a></li>\r
-<li><a href="mod/mod_proxy.html">Mudule Apache mod_proxy</a></li>\r
-<li><a href="mod/mod_proxy_ajp.html">Mudule Apache mod_proxy_ajp</a></li>\r
-<li><a href="mod/mod_proxy_balancer.html">Mudule Apache mod_proxy_balancer</a></li>\r
-<li><a href="mod/mod_proxy_connect.html">Mudule Apache mod_proxy_connect</a></li>\r
-<li><a href="mod/mod_proxy_fcgi.html">Mudule Apache mod_proxy_fcgi</a></li>\r
-<li><a href="mod/mod_proxy_fdpass.html">Mudule Apache mod_proxy_fdpass</a></li>\r
-<li><a href="mod/mod_proxy_ftp.html">Mudule Apache mod_proxy_ftp</a></li>\r
-<li><a href="mod/mod_proxy_http.html">Mudule Apache mod_proxy_http</a></li>\r
-<li><a href="mod/mod_proxy_scgi.html">Mudule Apache mod_proxy_scgi</a></li>\r
-<li><a href="mod/mod_remoteip.html">Mudule Apache mod_remoteip</a></li>\r
-<li><a href="mod/mod_request.html">Mudule Apache mod_request</a></li>\r
-<li><a href="mod/mod_rewrite.html">Mudule Apache mod_rewrite</a></li>\r
-<li><a href="mod/mod_sed.html">Mudule Apache mod_sed</a></li>\r
-<li><a href="mod/mod_session.html">Mudule Apache mod_session</a></li>\r
-<li><a href="mod/mod_session_cookie.html">Mudule Apache mod_session_cookie</a></li>\r
-<li><a href="mod/mod_session_crypto.html">Mudule Apache mod_session_crypto</a></li>\r
-<li><a href="mod/mod_session_dbd.html">Mudule Apache mod_session_dbd</a></li>\r
-<li><a href="mod/mod_setenvif.html">Mudule Apache mod_setenvif</a></li>\r
-<li><a href="mod/mod_sharedmem.html">Mudule Apache mod_sharedmem</a></li>\r
-<li><a href="mod/mod_slotmem.html">Mudule Apache mod_slotmem</a></li>\r
-<li><a href="mod/mod_so.html">Mudule Apache mod_so</a></li>\r
-<li><a href="mod/mod_speling.html">Mudule Apache mod_speling</a></li>\r
-<li><a href="mod/mod_ssl.html">Mudule Apache mod_ssl</a></li>\r
-<li><a href="mod/mod_status.html">Mudule Apache mod_status</a></li>\r
-<li><a href="mod/mod_substitute.html">Mudule Apache mod_substitute</a></li>\r
-<li><a href="mod/mod_suexec.html">Mudule Apache mod_suexec</a></li>\r
-<li><a href="mod/mod_unique_id.html">Mudule Apache mod_unique_id</a></li>\r
-<li><a href="mod/mod_unixd.html">Mudule Apache mod_unixd</a></li>\r
-<li><a href="mod/mod_userdir.html">Mudule Apache mod_userdir</a></li>\r
-<li><a href="mod/mod_usertrack.html">Mudule Apache mod_usertrack</a></li>\r
-<li><a href="mod/mod_version.html">Mudule Apache mod_version</a></li>\r
-<li><a href="mod/mod_vhost_alias.html">Mudule Apache mod_vhost_alias</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="developer" id="developer">Documentation du développeur</a></h2>\r
-<ul><li class="separate"><a href="developer/">Aperçu</a></li>\r
-<li><a href="developer/API.html">Notes sur l'API Apache</a></li>\r
-<li><a href="developer/debugging.html">Débogage de l'allocation mémoire\r
-dans APR</a></li>\r
-<li><a href="developer/documenting.html">Documenter Apache 2.0</a></li>\r
-<li><a href="developer/hooks.html">Fonctions d'accroche (Hook Functions)\r
-d'Apache 2.0</a></li>\r
-<li><a href="developer/modules.html">Convertir un module depuis Apache\r
-1.3 vers Apache 2.0</a></li>\r
-<li><a href="developer/request.html">Traitement des requêtes avec Apache\r
-2.0</a></li>\r
-<li><a href="developer/filters.html">Fonctionnement des filtres dans\r
-Apache 2.0</a></li>\r
-</ul>\r
-</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>\r
-<div class="section"><h2><a name="index" id="index">Glossaire et Index</a></h2>\r
-<ul><li><a href="glossary.html">Glossaire</a></li>\r
-<li><a href="mod/">Index des modules</a></li>\r
-<li><a href="mod/directives.html">Index des directives</a></li>\r
-<li><a href="mod/quickreference.html">Référence rapide des directives</a></li>\r
-</ul>\r
-</div></div>\r
-<div class="bottomlang">\r
-<p><span>Langues Disponibles: </span><a href="./de/sitemap.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |\r
-<a href="./en/sitemap.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |\r
-<a href="./es/sitemap.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |\r
-<a href="./fr/sitemap.html" title="Français">&nbsp;fr&nbsp;</a> |\r
-<a href="./ja/sitemap.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |\r
-<a href="./ko/sitemap.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |\r
-<a href="./tr/sitemap.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>\r
-</div><div id="footer">\r
-<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>\r
-<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div>\r
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"><head><!--
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+              This file is generated from xml source: DO NOT EDIT
+        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+      -->
+<title>Plan du site - Serveur Apache HTTP</title>
+<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
+<link href="./style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
+<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
+<link href="./images/favicon.ico" rel="shortcut icon" /></head>
+<body id="manual-page">
+<div id="page-header">
+<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p>
+<p class="apache">Serveur Apache HTTP Version 2.3</p>
+<img alt="" src="./images/feather.gif" /></div>
+<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="./images/left.gif" /></a></div>
+<div id="path">
+<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Serveur HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="./">Version 2.3</a></div>
+<div id="page-content"><div id="preamble"><h1>Plan du site</h1>
+<div class="toplang">
+<p><span>Langues Disponibles: </span><a href="./de/sitemap.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
+<a href="./en/sitemap.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="./es/sitemap.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
+<a href="./fr/sitemap.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="./ja/sitemap.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="./ko/sitemap.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="./tr/sitemap.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div>
+
+<p>Cette page contient la liste des éléments actuellement disponibles de
+la <a href="./">Documentation du serveur HTTP Apache Version
+2.3</a>.</p>
+</div>
+<div id="quickview"><ul id="toc">
+<li><img alt="" src="./images/down.gif" /> <a href="#release">Notes de version</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#using">Utilisation du serveur HTTP Apache</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#vhosts">Documentation des serveurs virtuels Apache</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#rewrite">Guide de réécriture d'URLs</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#ssl">Chiffrement SSL/TLS avec Apache</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#howto">Guides, Tutoriels, and Recettes</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#platform">Notes spécifiques à certains systèmes</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#programs">Le serveur HTTP Apache et ses programmes associés</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#misc">Documentations diverses sur Apache</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#modules">Modules Apache</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#developer">Documentation du développeur</a></li>
+<li><img alt="" src="./images/down.gif" /> <a href="#index">Glossaire et Index</a></li>
+</ul>
+</div>
+<div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="release" id="release">Notes de version</a></h2>
+<ul><li><a href="upgrading.html">Mise à jour vers 2.4 depuis 2.2</a></li>
+<li><a href="new_features_2_4.html">Nouvelles fonctionnalités d'Apache 2.3/2.4</a></li>
+<li><a href="new_features_2_2.html">Nouvelles fonctionnalités d'Apache 2.1/2.2</a></li>
+<li><a href="new_features_2_0.html">Nouvelles fonctionnalités d'Apache 2.0</a></li>
+<li><a href="license.html">License Apache</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="using" id="using">Utilisation du serveur HTTP Apache</a></h2>
+<ul><li><a href="install.html">Compilation et installation</a></li>
+<li><a href="invoking.html">Démarrage</a></li>
+<li><a href="stopping.html">Arrêt ou redémarrage</a></li>
+<li><a href="configuring.html">Fichiers de configuration</a></li>
+<li><a href="sections.html">Comment fonctionnent les sections Directory,
+Location et Files</a></li>
+<li><a href="caching.html">Mise en cache du contenu</a></li>
+<li><a href="server-wide.html">Configuration niveau serveur</a></li>
+<li><a href="logs.html">Fichiers de traces</a></li>
+<li><a href="urlmapping.html">Mise en correspondance des URLs avec le système de fichiers</a></li>
+<li><a href="misc/security_tips.html">Conseils sur la sécurité</a></li>
+<li><a href="dso.html">Objets Dynamiques Partagés (DSO)</a></li>
+<li><a href="content-negotiation.html">Négociation sur le contenu</a></li>
+<li><a href="custom-error.html">Messages d'erreur personnalisés</a></li>
+<li><a href="bind.html">Définition des adresses et ports qu'utilise
+Apache</a></li>
+<li><a href="mpm.html">Modules multi-processus (MPMs)</a></li>
+<li><a href="env.html">Les variables d'environnement d'Apache</a></li>
+<li><a href="handler.html">Utilisation des gestionnaires d'Apache</a></li>
+<li><a href="filter.html">Filtres</a></li>
+<li><a href="suexec.html">Support de suEXEC</a></li>
+<li><a href="misc/perf-tuning.html">Optimisation des performances</a></li>
+<li><a href="faq/">Frequently Asked Questions</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="vhosts" id="vhosts">Documentation des serveurs virtuels Apache</a></h2>
+<ul><li class="separate"><a href="vhosts/">Aperçu</a></li>
+<li><a href="vhosts/name-based.html">Serveurs virtuels basés sur le nom</a></li>
+<li><a href="vhosts/ip-based.html">Support des serveurs virtuels basés
+sur l'adresse IP</a></li>
+<li><a href="vhosts/mass.html">Configuration dynamique de l'hébergement
+virtuel de masse</a></li>
+<li><a href="vhosts/examples.html">Exemples de serveurs virtuels</a></li>
+<li><a href="vhosts/details.html">Discussion approfondie à propos de la
+sélection d'un serveur virtuel</a></li>
+<li><a href="vhosts/fd-limits.html">Limitations inhérentes aux
+descripteurs de fichiers</a></li>
+<li><a href="dns-caveats.html">Problèmes avec DNS et Apache</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="rewrite" id="rewrite">Guide de réécriture d'URLs</a></h2>
+<ul><li class="separate"><a href="rewrite/">Survol</a></li>
+<li><a href="mod/mod_rewrite.html">Documentation de référence de mod_rewrite</a></li>
+<li><a href="rewrite/rewrite_intro.html">Introduction</a></li>
+<li><a href="rewrite/rewrite_flags.html">Drapeaux</a></li>
+<li><a href="rewrite/rewrite_tech.html">Détails techniques</a></li>
+<li><a href="rewrite/rewrite_guide.html">Guide de réécriture - exemples utiles</a></li>
+<li><a href="rewrite/rewrite_guide_advanced.html">Guide de réécriture avancée -
+autres exemples utiles</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="ssl" id="ssl">Chiffrement SSL/TLS avec Apache</a></h2>
+<ul><li class="separate"><a href="ssl/">Aperçu</a></li>
+<li><a href="ssl/ssl_intro.html">Chiffrement SSL/TLS :
+Introduction</a></li>
+<li><a href="ssl/ssl_compat.html">Chiffrement SSL/TLS :
+Compatibilité</a></li>
+<li><a href="ssl/ssl_howto.html">Chiffrement SSL/TLS : Recettes</a></li>
+<li><a href="ssl/ssl_faq.html">Chiffrement SSL/TLS : FAQ</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="howto" id="howto">Guides, Tutoriels, and Recettes</a></h2>
+<ul><li class="separate"><a href="howto/">Aperçu</a></li>
+<li><a href="howto/auth.html">Authentification</a></li>
+<li><a href="howto/cgi.html">Contenu dynamique avec CGI</a></li>
+<li><a href="howto/ssi.html">Introduction aux Inclusions côté serveur
+(Server Side Includes - SSI)</a></li>
+<li><a href="howto/htaccess.html">Fichiers .htaccess</a></li>
+<li><a href="howto/public_html.html">Répertoires web des
+utilisateurs</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="platform" id="platform">Notes spécifiques à certains systèmes</a></h2>
+<ul><li class="separate"><a href="platform/">Aperçu</a></li>
+<li><a href="platform/windows.html">Utiliser Apache avec Microsoft
+Windows</a></li>
+<li><a href="platform/win_compiling.html">Compiler Apache pour
+Microsoft Windows</a></li>
+<li><a href="platform/netware.html">Utiliser Apache avec Novell
+NetWare</a></li>
+<li><a href="platform/perf-hp.html">Mise en oeuvre d'un serveur web
+hautes performances sous HPUX</a></li>
+<li><a href="platform/ebcdic.html">Le portage EBCDIC d'Apache</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="programs" id="programs">Le serveur HTTP Apache et ses programmes associés</a></h2>
+<ul><li class="separate"><a href="programs/">Aperçu</a></li>
+<li><a href="programs/httpd.html">Page de manuel : httpd</a></li>
+<li><a href="programs/ab.html">Page de manuel : ab</a></li>
+<li><a href="programs/apachectl.html">Page de manuel : apachectl</a></li>
+<li><a href="programs/apxs.html">Page de manuel : apxs</a></li>
+<li><a href="programs/configure.html">Page de manuel : configure</a></li>
+<li><a href="programs/dbmmanage.html">Page de manuel : dbmmanage</a></li>
+<li><a href="programs/htcacheclean.html">Page de manuel : htcacheclean</a></li>
+<li><a href="programs/htdbm.html">Page de manuel : htdbm</a></li>
+<li><a href="programs/htdigest.html">Page de manuel : htdigest</a></li>
+<li><a href="programs/htpasswd.html">Page de manuel : htpasswd</a></li>
+<li><a href="programs/logresolve.html">Page de manuel : logresolve</a></li>
+<li><a href="programs/rotatelogs.html">Page de manuel : rotatelogs</a></li>
+<li><a href="programs/suexec.html">Page de manuel : suexec</a></li>
+<li><a href="programs/other.html">Autres programmes</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="misc" id="misc">Documentations diverses sur Apache</a></h2>
+<ul><li class="separate"><a href="misc/">Aperçu</a></li>
+<li><a href="misc/relevant_standards.html">Standards concernés</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="modules" id="modules">Modules Apache</a></h2>
+<ul><li><a href="mod/module-dict.html">Définitions des termes utilisés pour
+décrire les modules Apache</a></li>
+<li><a href="mod/directive-dict.html">Définitions des termes utilisés
+pour décrire les directives Apache</a></li>
+</ul><ul><li><a href="mod/core.html">Fonctionalités de Base Apache</a></li>
+<li><a href="mod/mpm_common.html">Apache MPM: Directives Communes</a></li>
+<li><a href="mod/event.html">Apache MPM event</a></li>
+<li><a href="mod/mpm_netware.html">Apache MPM netware</a></li>
+<li><a href="mod/prefork.html">Apache MPM prefork</a></li>
+<li><a href="mod/mpm_winnt.html">Apache MPM winnt</a></li>
+<li><a href="mod/worker.html">Apache MPM worker</a></li>
+</ul><ul><li><a href="mod/mod_access_compat.html">Mudule Apache mod_access_compat</a></li>
+<li><a href="mod/mod_actions.html">Mudule Apache mod_actions</a></li>
+<li><a href="mod/mod_alias.html">Mudule Apache mod_alias</a></li>
+<li><a href="mod/mod_asis.html">Mudule Apache mod_asis</a></li>
+<li><a href="mod/mod_auth_basic.html">Mudule Apache mod_auth_basic</a></li>
+<li><a href="mod/mod_auth_digest.html">Mudule Apache mod_auth_digest</a></li>
+<li><a href="mod/mod_auth_form.html">Mudule Apache mod_auth_form</a></li>
+<li><a href="mod/mod_authn_anon.html">Mudule Apache mod_authn_anon</a></li>
+<li><a href="mod/mod_authn_core.html">Mudule Apache mod_authn_core</a></li>
+<li><a href="mod/mod_authn_dbd.html">Mudule Apache mod_authn_dbd</a></li>
+<li><a href="mod/mod_authn_dbm.html">Mudule Apache mod_authn_dbm</a></li>
+<li><a href="mod/mod_authn_file.html">Mudule Apache mod_authn_file</a></li>
+<li><a href="mod/mod_authnz_ldap.html">Mudule Apache mod_authnz_ldap</a></li>
+<li><a href="mod/mod_authz_core.html">Mudule Apache mod_authz_core</a></li>
+<li><a href="mod/mod_authz_dbd.html">Mudule Apache mod_authz_dbd</a></li>
+<li><a href="mod/mod_authz_dbm.html">Mudule Apache mod_authz_dbm</a></li>
+<li><a href="mod/mod_authz_groupfile.html">Mudule Apache mod_authz_groupfile</a></li>
+<li><a href="mod/mod_authz_host.html">Mudule Apache mod_authz_host</a></li>
+<li><a href="mod/mod_authz_owner.html">Mudule Apache mod_authz_owner</a></li>
+<li><a href="mod/mod_authz_user.html">Mudule Apache mod_authz_user</a></li>
+<li><a href="mod/mod_autoindex.html">Mudule Apache mod_autoindex</a></li>
+<li><a href="mod/mod_buffer.html">Mudule Apache mod_buffer</a></li>
+<li><a href="mod/mod_cache.html">Mudule Apache mod_cache</a></li>
+<li><a href="mod/mod_cern_meta.html">Mudule Apache mod_cern_meta</a></li>
+<li><a href="mod/mod_cgi.html">Mudule Apache mod_cgi</a></li>
+<li><a href="mod/mod_cgid.html">Mudule Apache mod_cgid</a></li>
+<li><a href="mod/mod_charset_lite.html">Mudule Apache mod_charset_lite</a></li>
+<li><a href="mod/mod_dav.html">Mudule Apache mod_dav</a></li>
+<li><a href="mod/mod_dav_fs.html">Mudule Apache mod_dav_fs</a></li>
+<li><a href="mod/mod_dav_lock.html">Mudule Apache mod_dav_lock</a></li>
+<li><a href="mod/mod_dbd.html">Mudule Apache mod_dbd</a></li>
+<li><a href="mod/mod_deflate.html">Mudule Apache mod_deflate</a></li>
+<li><a href="mod/mod_dir.html">Mudule Apache mod_dir</a></li>
+<li><a href="mod/mod_disk_cache.html">Mudule Apache mod_disk_cache</a></li>
+<li><a href="mod/mod_dumpio.html">Mudule Apache mod_dumpio</a></li>
+<li><a href="mod/mod_echo.html">Mudule Apache mod_echo</a></li>
+<li><a href="mod/mod_env.html">Mudule Apache mod_env</a></li>
+<li><a href="mod/mod_example.html">Mudule Apache mod_example</a></li>
+<li><a href="mod/mod_expires.html">Mudule Apache mod_expires</a></li>
+<li><a href="mod/mod_ext_filter.html">Mudule Apache mod_ext_filter</a></li>
+<li><a href="mod/mod_file_cache.html">Mudule Apache mod_file_cache</a></li>
+<li><a href="mod/mod_filter.html">Mudule Apache mod_filter</a></li>
+<li><a href="mod/mod_headers.html">Mudule Apache mod_headers</a></li>
+<li><a href="mod/mod_heartbeat.html">Mudule Apache mod_heartbeat</a></li>
+<li><a href="mod/mod_heartmonitor.html">Mudule Apache mod_heartmonitor</a></li>
+<li><a href="mod/mod_ident.html">Mudule Apache mod_ident</a></li>
+<li><a href="mod/mod_imagemap.html">Mudule Apache mod_imagemap</a></li>
+<li><a href="mod/mod_include.html">Mudule Apache mod_include</a></li>
+<li><a href="mod/mod_info.html">Mudule Apache mod_info</a></li>
+<li><a href="mod/mod_isapi.html">Mudule Apache mod_isapi</a></li>
+<li><a href="mod/mod_lbmethod_bybusyness.html">Mudule Apache mod_lbmethod_bybusyness</a></li>
+<li><a href="mod/mod_lbmethod_byrequests.html">Mudule Apache mod_lbmethod_byrequests</a></li>
+<li><a href="mod/mod_lbmethod_bytraffic.html">Mudule Apache mod_lbmethod_bytraffic</a></li>
+<li><a href="mod/mod_lbmethod_heartbeat.html">Mudule Apache mod_lbmethod_heartbeat</a></li>
+<li><a href="mod/mod_ldap.html">Mudule Apache mod_ldap</a></li>
+<li><a href="mod/mod_log_config.html">Mudule Apache mod_log_config</a></li>
+<li><a href="mod/mod_log_forensic.html">Mudule Apache mod_log_forensic</a></li>
+<li><a href="mod/mod_logio.html">Mudule Apache mod_logio</a></li>
+<li><a href="mod/mod_mime.html">Mudule Apache mod_mime</a></li>
+<li><a href="mod/mod_mime_magic.html">Mudule Apache mod_mime_magic</a></li>
+<li><a href="mod/mod_negotiation.html">Mudule Apache mod_negotiation</a></li>
+<li><a href="mod/mod_nw_ssl.html">Mudule Apache mod_nw_ssl</a></li>
+<li><a href="mod/mod_plainmem.html">Mudule Apache mod_plainmem</a></li>
+<li><a href="mod/mod_privileges.html">Mudule Apache mod_privileges</a></li>
+<li><a href="mod/mod_proxy.html">Mudule Apache mod_proxy</a></li>
+<li><a href="mod/mod_proxy_ajp.html">Mudule Apache mod_proxy_ajp</a></li>
+<li><a href="mod/mod_proxy_balancer.html">Mudule Apache mod_proxy_balancer</a></li>
+<li><a href="mod/mod_proxy_connect.html">Mudule Apache mod_proxy_connect</a></li>
+<li><a href="mod/mod_proxy_fcgi.html">Mudule Apache mod_proxy_fcgi</a></li>
+<li><a href="mod/mod_proxy_fdpass.html">Mudule Apache mod_proxy_fdpass</a></li>
+<li><a href="mod/mod_proxy_ftp.html">Mudule Apache mod_proxy_ftp</a></li>
+<li><a href="mod/mod_proxy_http.html">Mudule Apache mod_proxy_http</a></li>
+<li><a href="mod/mod_proxy_scgi.html">Mudule Apache mod_proxy_scgi</a></li>
+<li><a href="mod/mod_remoteip.html">Mudule Apache mod_remoteip</a></li>
+<li><a href="mod/mod_request.html">Mudule Apache mod_request</a></li>
+<li><a href="mod/mod_rewrite.html">Mudule Apache mod_rewrite</a></li>
+<li><a href="mod/mod_sed.html">Mudule Apache mod_sed</a></li>
+<li><a href="mod/mod_session.html">Mudule Apache mod_session</a></li>
+<li><a href="mod/mod_session_cookie.html">Mudule Apache mod_session_cookie</a></li>
+<li><a href="mod/mod_session_crypto.html">Mudule Apache mod_session_crypto</a></li>
+<li><a href="mod/mod_session_dbd.html">Mudule Apache mod_session_dbd</a></li>
+<li><a href="mod/mod_setenvif.html">Mudule Apache mod_setenvif</a></li>
+<li><a href="mod/mod_sharedmem.html">Mudule Apache mod_sharedmem</a></li>
+<li><a href="mod/mod_slotmem.html">Mudule Apache mod_slotmem</a></li>
+<li><a href="mod/mod_so.html">Mudule Apache mod_so</a></li>
+<li><a href="mod/mod_speling.html">Mudule Apache mod_speling</a></li>
+<li><a href="mod/mod_ssl.html">Mudule Apache mod_ssl</a></li>
+<li><a href="mod/mod_status.html">Mudule Apache mod_status</a></li>
+<li><a href="mod/mod_substitute.html">Mudule Apache mod_substitute</a></li>
+<li><a href="mod/mod_suexec.html">Mudule Apache mod_suexec</a></li>
+<li><a href="mod/mod_unique_id.html">Mudule Apache mod_unique_id</a></li>
+<li><a href="mod/mod_unixd.html">Mudule Apache mod_unixd</a></li>
+<li><a href="mod/mod_userdir.html">Mudule Apache mod_userdir</a></li>
+<li><a href="mod/mod_usertrack.html">Mudule Apache mod_usertrack</a></li>
+<li><a href="mod/mod_version.html">Mudule Apache mod_version</a></li>
+<li><a href="mod/mod_vhost_alias.html">Mudule Apache mod_vhost_alias</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="developer" id="developer">Documentation du développeur</a></h2>
+<ul><li class="separate"><a href="developer/">Aperçu</a></li>
+<li><a href="developer/API.html">Notes sur l'API Apache</a></li>
+<li><a href="developer/debugging.html">Débogage de l'allocation mémoire
+dans APR</a></li>
+<li><a href="developer/documenting.html">Documenter Apache 2.0</a></li>
+<li><a href="developer/hooks.html">Fonctions d'accroche (Hook Functions)
+d'Apache 2.0</a></li>
+<li><a href="developer/modules.html">Convertir un module depuis Apache
+1.3 vers Apache 2.0</a></li>
+<li><a href="developer/request.html">Traitement des requêtes avec Apache
+2.0</a></li>
+<li><a href="developer/filters.html">Fonctionnement des filtres dans
+Apache 2.0</a></li>
+</ul>
+</div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif" /></a></div>
+<div class="section"><h2><a name="index" id="index">Glossaire et Index</a></h2>
+<ul><li><a href="glossary.html">Glossaire</a></li>
+<li><a href="mod/">Index des modules</a></li>
+<li><a href="mod/directives.html">Index des directives</a></li>
+<li><a href="mod/quickreference.html">Référence rapide des directives</a></li>
+</ul>
+</div></div>
+<div class="bottomlang">
+<p><span>Langues Disponibles: </span><a href="./de/sitemap.html" hreflang="de" rel="alternate" title="Deutsch">&nbsp;de&nbsp;</a> |
+<a href="./en/sitemap.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
+<a href="./es/sitemap.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
+<a href="./fr/sitemap.html" title="Français">&nbsp;fr&nbsp;</a> |
+<a href="./ja/sitemap.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
+<a href="./ko/sitemap.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
+<a href="./tr/sitemap.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
+</div><div id="footer">
+<p class="apache">Copyright 2009 The Apache Software Foundation.<br />Authorisé sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
+<p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/directives.html">Directives</a> | <a href="./faq/">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a></p></div>
 </body></html>
\ No newline at end of file