| <!DOCTYPE html SYSTEM "about:legacy-compat"> | |
| <html lang="fr"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
| <meta content="width=device-width, initial-scale=1" name="viewport"> | |
| <!-- | |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | |
| This file is generated from xml source: DO NOT EDIT | |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | |
| --> | |
| <title>Sections de configuration - Serveur HTTP Apache Version 2.5</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 rel="stylesheet" type="text/css" href="./style/css/prettify.css"> | |
| <script src="./style/scripts/prettify.min.js"> | |
| </script> | |
| <link href="./images/favicon.png" rel="shortcut icon"></head> | |
| <body id="manual-page"><div id="page-header"> | |
| <p class="menu"><a href="./mod/">Modules</a> | <a href="./mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p> | |
| <p class="apache">Serveur HTTP Apache Version 2.5</p> | |
| <img alt="" src="./images/feather.png"></div> | |
| <div class="up"><a href="./"><img title="<-" alt="<-" src="./images/left.gif"></a></div> | |
| <div id="path"> | |
| <a href="https://www.apache.org/">Apache</a> > <a href="https://httpd.apache.org/">Serveur HTTP</a> > <a href="https://httpd.apache.org/docs/">Documentation</a> > <a href="./">Version 2.5</a></div><div id="page-content"><div id="preamble"><h1>Sections de configuration</h1> | |
| <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button> | |
| <div class="toplang"> | |
| <p><span>Langues Disponibles: </span><a href="./en/sections.html" hreflang="en" rel="alternate" title="English"> en </a> | | |
| <a href="./fr/sections.html" title="Français"> fr </a> | | |
| <a href="./ja/sections.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | | |
| <a href="./ko/sections.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | | |
| <a href="./tr/sections.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> | |
| </div> | |
| <p>Les directives des <a href="configuring.html">fichiers de configuration</a> peuvent s'appliquer | |
| au serveur dans son ensemble, ou seulement à des répertoires, fichiers, hôtes, | |
| ou URLs particuliers. Ce document décrit comment utiliser les conteneurs de | |
| sections de configuration ou les fichiers <code>.htaccess</code> pour | |
| modifier la portée des directives de configuration.</p> | |
| </div> | |
| <div id="quickview"><ul id="toc"><li><img alt="" src="./images/down.gif"> <a href="#types">Types de conteneurs de sections de | |
| configuration</a></li> | |
| <li><img alt="" src="./images/down.gif"> <a href="#file-and-web">Système de fichiers, | |
| arborescence du site web et expressions booléennes</a></li> | |
| <li><img alt="" src="./images/down.gif"> <a href="#virtualhost">Serveurs virtuels</a></li> | |
| <li><img alt="" src="./images/down.gif"> <a href="#proxy">Mandataire</a></li> | |
| <li><img alt="" src="./images/down.gif"> <a href="#whatwhere">Quelles sont les directives autorisées ?</a></li> | |
| <li><img alt="" src="./images/down.gif"> <a href="#merging">Comment les sections sont combinées entre elles</a></li> | |
| </ul></div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div> | |
| <div class="section"> | |
| <h2 id="types">Types de conteneurs de sections de | |
| configuration <a title="Lien permanent" href="#types" class="permalink">¶</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_version.html">mod_version</a></code></li><li><code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code></li></ul></td><td><ul><li><code class="directive"><a href="./mod/core.html#directory"><Directory></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#files"><Files></a></code></li><li><code class="directive"><a href="./mod/core.html#filesmatch"><FilesMatch></a></code></li><li><code class="directive"><a href="./mod/core.html#if"><If></a></code></li><li><code class="directive"><a href="./mod/core.html#ifdefine"><IfDefine></a></code></li><li><code class="directive"><a href="./mod/core.html#ifmodule"><IfModule></a></code></li><li><code class="directive"><a href="./mod/mod_version.html#ifversion"><IfVersion></a></code></li><li><code class="directive"><a href="./mod/core.html#location"><Location></a></code></li><li><code class="directive"><a href="./mod/core.html#locationmatch"><LocationMatch></a></code></li><li><code class="directive"><a href="./mod/mod_md.html#mdomainsetsection"><MDomainSet></a></code></li><li><code class="directive"><a href="./mod/mod_proxy.html#proxy"><Proxy></a></code></li><li><code class="directive"><a href="./mod/mod_proxy.html#proxymatch"><ProxyMatch></a></code></li><li><code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code></li></ul></td></tr></table> | |
| <p>Il existe deux grands types de conteneurs. La plupart des conteneurs sont | |
| évalués pour chaque requête. Les directives qu'ils contiennent s'appliquent | |
| seulement aux requêtes qui sont concernées par le conteneur. En revanche, | |
| les conteneurs | |
| <code class="directive"><a href="./mod/core.html#ifdefine"><IfDefine></a></code>, <code class="directive"><a href="./mod/core.html#ifmodule"><IfModule></a></code> et | |
| <code class="directive"><a href="./mod/mod_version.html#ifversion"><IfVersion></a></code> sont | |
| évalués seulement au démarrage et au redémarrage du serveur. | |
| Si leurs conditions sont vérifiées au démarrage, les directives qu'ils contiennent | |
| s'appliqueront à toutes les requêtes. Si leurs conditions ne sont pas vérifiées, les | |
| directives qu'ils contiennent seront ignorées.</p> | |
| <p>Le conteneur <code class="directive"><a href="./mod/core.html#ifdefine"><IfDefine></a></code> | |
| contient des directives qui ne seront appliquées que si un paramètre approprié a | |
| été défini dans la ligne de commande de <code class="program"><a href="./programs/httpd.html">httpd</a></code> ou à l'aide d'une | |
| directive <code class="directive"><a href="./mod/core.html#define">Define</a></code>. Par exemple, avec la | |
| configuration suivante, toutes les requêtes seront redirigées vers un autre site | |
| si le serveur est démarré en utilisant la ligne de commande : <code>httpd | |
| -DClosedForNow</code> :</p> | |
| <pre class="prettyprint lang-config"><IfDefine ClosedForNow> | |
| Redirect "/" "http://otherserver.example.com/" | |
| </IfDefine></pre> | |
| <p>Le conteneur <code class="directive"><a href="./mod/core.html#ifmodule"><IfModule></a></code> | |
| est similaire ; les directives qu'il contient ne s'appliqueront que si | |
| un module particulier est disponible au niveau du serveur. | |
| Le module doit être soit compilé statiquement dans le serveur, soit | |
| dynamiquement et dans ce cas, la ligne <code class="directive"><a href="./mod/mod_so.html#loadmodule">LoadModule</a></code> correspondante doit apparaître | |
| plus haut dans le fichier de configuration. Ce conteneur ne doit être | |
| utilisé que dans le cas où votre fichier de configuration doit être valable | |
| indépendamment de la présence ou de l'absence de certains modules. | |
| Il ne doit pas contenir de directives que vous souhaitez voir s'appliquer | |
| systématiquement, car vous pouvez perdre ainsi de précieux messages d'erreur | |
| à propos de modules manquants.</p> | |
| <p>Dans l'exemple suivant, la directive <code class="directive"><a href="./mod/mod_mime_magic.html#mimemagicfile">MimeMagicFile</a></code> ne s'appliquera que si le | |
| module <code class="module"><a href="./mod/mod_mime_magic.html">mod_mime_magic</a></code> est disponible.</p> | |
| <pre class="prettyprint lang-config"><IfModule mod_mime_magic.c> | |
| MimeMagicFile "conf/magic" | |
| </IfModule></pre> | |
| <p>Le conteneur | |
| <code class="directive"><a href="./mod/mod_version.html#ifversion"><IfVersion></a></code> | |
| est similaire aux conteneurs <code class="directive"><a href="./mod/core.html#ifdefine"><IfDefine></a></code> et <code class="directive"><a href="./mod/core.html#ifmodule"><IfModule></a></code> ; les directives qu'il contient ne | |
| s'appliqueront que si une version particulière du serveur s'exécute. Ce | |
| conteneur a été conçu pour une utilisation dans les suites de tests | |
| et les grands réseaux qui doivent prendre en compte différentes versions | |
| et configurations de httpd.</p> | |
| <pre class="prettyprint lang-config"><IfVersion >= 2.4> | |
| # les directives situées ici ne s'appliquent que si la version <br> | |
| # est supérieure ou égale à 2.4.0. | |
| </IfVersion></pre> | |
| <p><code class="directive"><a href="./mod/core.html#ifdefine"><IfDefine></a></code>, | |
| <code class="directive"><a href="./mod/core.html#ifmodule"><IfModule></a></code> et | |
| <code class="directive"><a href="./mod/mod_version.html#ifversion"><IfVersion></a></code> | |
| peuvent inverser leur test conditionnel en le faisant précéder d'un « ! ». | |
| De plus, ces sections peuvent être imbriquées afin de définir des restrictions | |
| plus complexes.</p> | |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div> | |
| <div class="section"> | |
| <h2 id="file-and-web">Système de fichiers, | |
| arborescence du site web et expressions booléennes <a title="Lien permanent" href="#file-and-web" class="permalink">¶</a></h2> | |
| <p>Les conteneurs de sections de configuration les plus couramment utilisés | |
| sont ceux qui modifient la configuration de points particuliers du système de | |
| fichiers ou de l'arborescence du site web. Tout d'abord, il est important de | |
| comprendre la différence entre les deux. Le système de fichiers est une vue de | |
| vos disques tels qu'ils sont perçus par votre système d'exploitation. Par | |
| exemple, avec une installation par défaut, Apache httpd est situé dans | |
| <code>/usr/local/apache2</code> pour le système de fichiers UNIX, ou | |
| <code>"c:/Program Files/Apache Group/Apache2"</code> pour le système de | |
| fichiers Windows (notez que des slashes directs doivent toujours être utilisés | |
| comme séparateur de chemin dans les fichiers de configuration d'Apache httpd, | |
| même sous Windows). Quant à l'arborescence du site web, il s'agit d'une vue de | |
| votre site telle que présentée par le serveur web et perçue par le client. | |
| Ainsi le chemin <code>/dir/</code> dans l'arborescence du site web correspond | |
| au chemin <code>/usr/local/apache2/htdocs/dir/</code> dans le système de | |
| fichiers pour une installation d'Apache httpd par défaut sous UNIX. En outre, | |
| l'arborescence du site web n'a pas besoin de correspondre en permanence au | |
| système de fichiers, car les pages web peuvent être générées dynamiquement à | |
| partir de bases de données ou d'autres emplacements.</p> | |
| <h3 id="filesystem">Conteneurs de système de fichiers</h3> | |
| <p>Les conteneurs <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> | |
| et <code class="directive"><a href="./mod/core.html#files"><Files></a></code>, | |
| ainsi que leurs équivalents acceptant les | |
| <a class="glossarylink" href="./glossary.html#regex" title="voir glossaire">expressions rationnelles</a>, | |
| appliquent des directives à certaines parties du système de fichiers. | |
| Les directives contenues dans une section <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> s'appliquent au répertoire | |
| précisé, ainsi qu'à tous ses sous-répertoires et aux fichiers que ces | |
| derniers contiennent. | |
| Le même effet peut être obtenu en utilisant les <a href="howto/htaccess.html">fichiers .htaccess</a>. Par exemple, avec la | |
| configuration suivante, l'indexation sera activée pour le répertoire | |
| <code>/var/web/dir1</code> et tous ses sous-répertoires.</p> | |
| <pre class="prettyprint lang-config"><Directory "/var/web/dir1"> | |
| Options +Indexes | |
| </Directory></pre> | |
| <p>Les directives contenues dans une section <code class="directive"><a href="./mod/core.html#files"><Files></a></code> s'appliquent à tout fichier | |
| avec le nom spécifié, quel que soit le répertoire dans lequel il se trouve. | |
| Ainsi par exemple, les directives de configuration suivantes, si elles sont | |
| placées dans la section principale du fichier de configuration, vont interdire | |
| l'accès à tout fichier nommé <code>private.html</code> quel que soit | |
| l'endroit où il se trouve.</p> | |
| <pre class="prettyprint lang-config"><Files "private.html"> | |
| Require all denied | |
| </Files></pre> | |
| <p>Pour faire référence à des fichiers qui se trouvent en des points | |
| particuliers du système de fichiers, les sections | |
| <code class="directive"><a href="./mod/core.html#files"><Files></a></code> et | |
| <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> | |
| peuvent être combinées. Par exemple, la configuration suivante va interdire | |
| l'accès à <code>/var/web/dir1/private.html</code>, | |
| <code>/var/web/dir1/subdir2/private.html</code>, | |
| <code>/var/web/dir1/subdir3/private.html</code>, ainsi que toute instance de | |
| <code>private.html</code> qui se trouve dans l'arborescence | |
| <code>/var/web/dir1/</code>.</p> | |
| <pre class="prettyprint lang-config"><Directory "/var/web/dir1"> | |
| <Files "private.html"> | |
| Require all denied | |
| </Files> | |
| </Directory></pre> | |
| <h3 id="webspace">Conteneurs de l'arborescence du site web</h3> | |
| <p>le conteneur <code class="directive"><a href="./mod/core.html#location"><Location></a></code> | |
| et son équivalent acceptant les | |
| <a class="glossarylink" href="./glossary.html#regex" title="voir glossaire">expressions rationnelles</a> modifient quant à eux la | |
| configuration de parties de l'arborescence du site web. Par exemple, la | |
| configuration suivante interdit l'accès à toute URL dont la partie chemin | |
| commence par /private. | |
| En particulier, l'interdiction s'appliquera aux requêtes pour : | |
| <code>http://yoursite.example.com/private</code>, | |
| <code>http://yoursite.example.com/private123</code>, et | |
| <code>http://yoursite.example.com/private/dir/file.html</code> ainsi qu'à | |
| toute requête commençant par la chaîne de caractères <code>/private</code>.</p> | |
| <pre class="prettyprint lang-config"><LocationMatch "^/private"> | |
| Require all denied | |
| </LocationMatch></pre> | |
| <p>Le conteneur <code class="directive"><a href="./mod/core.html#location"><Location></a></code> | |
| n'a pas besoin de faire référence à un élément du système de fichiers. | |
| À ce titre, l'exemple suivant montre comment faire correspondre une URL | |
| particulière à un gestionnaire interne fourni par le module | |
| <code class="module"><a href="./mod/mod_status.html">mod_status</a></code>. | |
| Il n'est pas nécessaire de trouver un fichier nommé <code>server-status</code> | |
| dans le système de fichiers.</p> | |
| <pre class="prettyprint lang-config"># Un URL vers un gestionnaire interne : | |
| <Location "/server-status"> | |
| SetHandler server-status | |
| </Location> | |
| # Un chemin d’URL vers un dorsal de mandataire inverse : | |
| <Location "/app"> | |
| ProxyPass "http://backend.example.com/" | |
| ProxyPassReverse "http://backend.example.com/" | |
| </Location> | |
| # Interdire l’accès à un chemin d’URL sans tenir compte de ce qui le traite : | |
| <Location "/private"> | |
| Require all denied | |
| </Location></pre> | |
| <p>Étant donné que la section <code class="directive"><a href="./mod/core.html#location"><Location></a></code> opère sur des URLs, et non sur des chemins du | |
| système de fichiers, il s'agit du conteneur approprié pour la configuration du | |
| mandataire et les points de terminaison fournis par les modules.</p> | |
| <h3 id="overlapping-webspace">Espace web imbriqué</h3> | |
| <p>Pour contrôler deux URLs imbriquées, on doit tenir compte de l'ordre | |
| dans lequel certaines sections ou directives sont évaluées. Pour | |
| <code class="directive"><a href="./mod/core.html#location"><Location></a></code>, on doit | |
| avoir :</p> | |
| <pre class="prettyprint lang-config"><Location "/foo"> | |
| </Location> | |
| <Location "/foo/bar"> | |
| </Location></pre> | |
| <p>Les directives <code class="directive"><a href="./mod/mod_alias.html#alias"><Alias></a></code>, quant à elles, sont évaluées vice-versa :</p> | |
| <pre class="prettyprint lang-config">Alias "/foo/bar" "/srv/www/uncommon/bar" | |
| Alias "/foo" "/srv/www/common/foo"</pre> | |
| <p>Ceci est aussi vrai pour les directives <code class="directive"><a href="./mod/mod_proxy.html#proxypass">ProxyPass</a></code> :</p> | |
| <pre class="prettyprint lang-config">ProxyPass "/special-area" "http://special.example.com" smax=5 max=10 | |
| ProxyPass "/" "balancer://mycluster/" stickysession=JSESSIONID|jsessionid nofailover=On</pre> | |
| <h3 id="wildcards">Caractères de remplacement | |
| et expressions rationnelles</h3> | |
| <p>Les conteneurs <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>, <code class="directive"><a href="./mod/core.html#files"><Files></a></code> et <code class="directive"><a href="./mod/core.html#location"><Location></a></code> peuvent utiliser des caractères de | |
| remplacement de style shell comme dans la fonction <code>fnmatch</code> de la | |
| bibliothèque C standard. Le caractère « * » correspond à toute séquence de | |
| caractères, « ? » à un caractère seul, et « [<em>seq</em>] » à tout caractère | |
| contenu dans <em>seq</em>. Le caractère « / » ne peut pas faire l'objet d'un | |
| remplacement ; il doit être spécifié explicitement.</p> | |
| <p>Si une définition des critères de correspondance encore plus souple est | |
| nécessaire, chaque conteneur possède son équivalent acceptant les expressions | |
| rationnelles : <code class="directive"><a href="./mod/core.html#directorymatch"><DirectoryMatch></a></code>, <code class="directive"><a href="./mod/core.html#filesmatch"><FilesMatch></a></code> et <code class="directive"><a href="./mod/core.html#locationmatch"><LocationMatch></a></code> acceptent les <a class="glossarylink" href="./glossary.html#regex" title="voir glossaire">expressions rationnelles</a> compatibles Perl pour définir | |
| les critères de correspondance. Mais voyez plus loin la section à propos de la | |
| combinaison des sections de configuration pour comprendre comment l'utilisation | |
| de conteneurs avec des expressions rationnelles va modifier la manière dont les | |
| directives sont appliquées.</p> | |
| <p>Un conteneur qui modifie la configuration de tous les répertoires | |
| utilisateurs à l'aide de caractères de remplacement mais sans utiliser les | |
| expressions rationnelles pourrait ressembler à ceci :</p> | |
| <pre class="prettyprint lang-config"><Directory "/home/*/public_html"> | |
| Options Indexes | |
| </Directory></pre> | |
| <p>Avec les conteneurs utilisant les expressions rationnelles, | |
| on peut interdire l'accès à de nombreux types de fichiers d'images | |
| simultanément :</p> | |
| <pre class="prettyprint lang-config">+<FilesMatch "\.(?i:gif|jpe?g|png)$"> | |
| Require all denied | |
| </FilesMatch></pre> | |
| <p>Les expressions rationnelles contenant des <strong>groupes nommés et | |
| des références arrières</strong> sont ajoutées à l'environnement avec | |
| leur nom en majuscules. Cela permet de référencer des éléments de | |
| chemins de fichiers et d'URLs depuis une <a href="expr.html">expression</a> et au sein de modules comme | |
| <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code>.</p> | |
| <pre class="prettyprint lang-config"><DirectoryMatch "^/var/www/combined/(?<SITENAME>[^/]+)"> | |
| Require ldap-group "cn=%{env:MATCH_SITENAME},ou=combined,o=Example" | |
| </DirectoryMatch></pre> | |
| <h3 id="expressions">Expressions booléennes</h3> | |
| <p>La directive <code class="directive"><a href="./mod/core.html#if"><If></a></code> | |
| permet de modifier la configuration en fonction d'une condition qui peut | |
| être définie sous la forme d'une expression booléenne. Dans l'exemple | |
| suivant, l'accès est interdit si l'en-tête HTTP Referer ne commence pas | |
| par « http://www.example.com/ ».</p> | |
| <pre class="prettyprint lang-config"><If "!(%{HTTP_REFERER} -strmatch 'http://www.example.com/*')"> | |
| Require all denied | |
| </If></pre> | |
| <h3 id="whichwhen">Que faut-il utiliser et quand ?</h3> | |
| <p>Choisir entre des conteneurs de système de fichiers et des conteneurs | |
| d'arborescence du site web est vraiment très simple. | |
| Pour appliquer des directives à des objets qui résident dans le système de | |
| fichiers, utilisez toujours un conteneur <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> ou <code class="directive"><a href="./mod/core.html#files"><Files></a></code>. Pour appliquer des directives à des objets | |
| qui ne résident pas dans le système de fichiers (comme une page web générée | |
| par une base de données), utilisez un conteneur <code class="directive"><a href="./mod/core.html#location"><Location></a></code>.</p> | |
| <p>Il ne faut jamais utiliser un conteneur <code class="directive"><a href="./mod/core.html#location"><Location></a></code> pour restreindre l'accès à des | |
| objets du système de fichiers, car plusieurs emplacements de | |
| l'arborescence du site web (URLs) peuvent correspondre au même emplacement | |
| du système de fichier, ce qui peut permettre de contourner vos restrictions. | |
| Par exemple, imaginez la configuration suivante :</p> | |
| <pre class="prettyprint lang-config"><Location "/dir/"> | |
| Require all denied | |
| </Location></pre> | |
| <p>Elle fonctionne correctement si la requête appelle | |
| <code>http://yoursite.example.com/dir/</code>. Mais que va-t-il se passer si | |
| votre système de fichiers est insensible à la casse ? Votre restriction va | |
| pouvoir être tout simplement contournée en envoyant une requête sur | |
| <code>http://yoursite.example.com/DIR/</code>. Le conteneur <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>, quant à lui, s'appliquera à | |
| tout contenu servi à partir de cet emplacement, sans tenir compte de la manière | |
| dont il est appelé. Les liens du système de fichiers constituent une exception. | |
| Le même répertoire peut être placé dans plusieurs parties du système de fichiers | |
| en utilisant des liens symboliques. Le conteneur <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> va suivre le lien symbolique sans modifier | |
| le nom du chemin. Par conséquent, pour plus de sécurité, les liens symboliques | |
| doivent être désactivés à l'aide de la directive <code class="directive"><a href="./mod/core.html#options">Options</a></code> appropriée.</p> | |
| <p>Si vous pensez que vous n'êtes pas concerné par ce problème | |
| parce que vous utilisez un système de fichiers sensible à la casse, | |
| gardez à l'esprit qu'il y a de nombreuses autres manières pour faire | |
| correspondre plusieurs emplacements de l'arborescence du site web au même | |
| emplacement du système de fichiers. C'est pourquoi vous devez autant que | |
| possible toujours utiliser les conteneurs de système de fichiers. | |
| Il y a cependant une exception à cette règle. Placer des restrictions de | |
| configuration dans un conteneur <code><Location | |
| "/"></code> est absolument sans rique car ce conteneur va s'appliquer à | |
| toutes les requêtes sans tenir compte de l'URL spécifique.</p> | |
| <h3 id="nesting">Imbrication des sections</h3> | |
| <p>Certains types de sections peuvent être imbriqués : d'une part, on peut | |
| utiliser les sections <code class="directive"><a href="./mod/core.html#files"><Files></a></code> | |
| à l'intérieur des sections <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>, d'autre part, on peut utiliser les | |
| directives <code class="directive"><a href="./mod/core.html#if"><If></a></code> à l'intérieur | |
| des sections <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>, | |
| <code class="directive"><a href="./mod/core.html#location"><Location></a></code> et <code class="directive"><a href="./mod/core.html#files"><Files></a></code> (mais pas à l'intérieur d'une | |
| autre section <code class="directive"><a href="./mod/core.html#if"><If></a></code>). Les | |
| valeurs des expressions rationnelles correspondant aux sections citées se | |
| comportent de manière identique.</p> | |
| <p>Les sections imbriquées sont fusionnées après les sections | |
| non-imbriquées de même type.</p> | |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div> | |
| <div class="section"> | |
| <h2 id="virtualhost">Serveurs virtuels <a title="Lien permanent" href="#virtualhost" class="permalink">¶</a></h2> | |
| <p>Le conteneur <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> | |
| contient des directives qui s'appliquent à des serveurs virtuels spécifiques. | |
| Cela s'avère utile pour servir les contenus de plusieurs serveurs virtuels à | |
| partir de la même machine, chacun d'entre eux possédant une configuration | |
| différente. Pour de plus amples informations, voir la <a href="vhosts/">Documentation sur les serveurs virtuels</a>.</p> | |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div> | |
| <div class="section"> | |
| <h2 id="proxy">Mandataire <a title="Lien permanent" href="#proxy" class="permalink">¶</a></h2> | |
| <p>Les conteneurs | |
| <code class="directive"><a href="./mod/mod_proxy.html#proxy"><Proxy></a></code> | |
| et <code class="directive"><a href="./mod/mod_proxy.html#proxymatch"><ProxyMatch></a></code> | |
| appliquent les directives de configuration qu'ils contiennent uniquement aux | |
| sites qui correspondent à l'URL spécifiée et auxquels on a | |
| accédé à l'aide du serveur mandataire du module <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>. | |
| Par exemple, la configuration suivante n'autorisera qu'un sous-ensemble de | |
| clients à accéder au site <code>www.example.com</code> en passant par le serveur | |
| mandataire :</p> | |
| <pre class="prettyprint lang-config"><Proxy "http://www.example.com/*"> | |
| Require host yournetwork.example.com | |
| </Proxy></pre> | |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div> | |
| <div class="section"> | |
| <h2 id="whatwhere">Quelles sont les directives autorisées ? <a title="Lien permanent" href="#whatwhere" class="permalink">¶</a></h2> | |
| <p>Pour déterminer quelles sont les directives autorisées pour tel type de | |
| section de configuration, vérifiez le <a href="mod/directive-dict.html#Context">Contexte</a> de la directive. | |
| Tout ce qui est autorisé dans les sections | |
| <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> | |
| l'est aussi d'un point de vue syntaxique dans les sections | |
| <code class="directive"><a href="./mod/core.html#directorymatch"><DirectoryMatch></a></code>, | |
| <code class="directive"><a href="./mod/core.html#files"><Files></a></code>, | |
| <code class="directive"><a href="./mod/core.html#filesmatch"><FilesMatch></a></code>, | |
| <code class="directive"><a href="./mod/core.html#location"><Location></a></code>, | |
| <code class="directive"><a href="./mod/core.html#locationmatch"><LocationMatch></a></code>, | |
| <code class="directive"><a href="./mod/mod_proxy.html#proxy"><Proxy></a></code> | |
| et <code class="directive"><a href="./mod/mod_proxy.html#proxymatch"><ProxyMatch></a></code>. | |
| Il y a cependant quelques exceptions :</p> | |
| <ul> | |
| <li>La directive <code class="directive"><a href="./mod/core.html#allowoverride">AllowOverride</a></code> | |
| ne fonctionne que dans les sections | |
| <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>.</li> | |
| <li>Les <code class="directive"><a href="./mod/core.html#options">Options</a></code> <code>FollowSymLinks</code> et | |
| <code>SymLinksIfOwnerMatch</code> ne fonctionnent que dans les sections | |
| <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> ou les fichiers | |
| <code>.htaccess</code>.</li> | |
| <li>La directive <code class="directive"><a href="./mod/core.html#options">Options</a></code> ne peut pas être | |
| utilisée dans les sections | |
| <code class="directive"><a href="./mod/core.html#files"><Files></a></code> | |
| et <code class="directive"><a href="./mod/core.html#filesmatch"><FilesMatch></a></code>.</li> | |
| </ul> | |
| </div><div class="top"><a href="#page-header"><img alt="top" src="./images/up.gif"></a></div> | |
| <div class="section"> | |
| <h2 id="merging">Comment les sections sont combinées entre elles <a title="Lien permanent" href="#merging" class="permalink">¶</a></h2> | |
| <p>Les sections de configuration sont appliquées dans un ordre très particulier. | |
| Il est important de savoir comment cet ordre est défini car il peut avoir | |
| des effets importants sur la manière dont les directives de configuration | |
| sont interprétées.</p> | |
| <p>L'ordre dans lequel les sections sont appliquées est :</p> | |
| <ol> | |
| <li> Les sections <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> (à l'exception des expressions | |
| rationnelles) et les fichiers <code>.htaccess</code> sont appliquées | |
| simultanément (avec la possibilité pour <code>.htaccess</code>, s'il y est | |
| autorisé, de prévaloir sur <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>)</li> | |
| <li>Les sections <code class="directive"><a href="./mod/core.html#directorymatch"><DirectoryMatch></a></code> (et <code><Directory | |
| "~"></code>)</li> | |
| <li>Les sections <code class="directive"><a href="./mod/core.html#files"><Files></a></code> | |
| et <code class="directive"><a href="./mod/core.html#filesmatch"><FilesMatch></a></code> sont | |
| appliquées simultanément</li> | |
| <li>Les sections <code class="directive"><a href="./mod/core.html#location"><Location></a></code> et <code class="directive"><a href="./mod/core.html#locationmatch"><LocationMatch></a></code> sont appliquées simultanément</li> | |
| <li>Les sections <code class="directive"><a href="./mod/core.html#if"><If></a></code>, | |
| même si elles sont incluses dans un des contextes précédents. </li> | |
| </ol> | |
| <p>Quelques remarques importantes :</p> | |
| <ul> | |
| <li>Mises à part les sections <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>, dans chaque groupe, les sections sont | |
| traitées selon | |
| l'ordre dans lequel elles apparaissent dans les fichiers de configuration. | |
| Par exemple, une requête pour <em>/foo/bar</em> correspondra à | |
| <code><Location "/foo/bar"></code> et <code><Location | |
| "/foo"></code> (dans ce cas le groupe 4) : les deux sections seront | |
| évaluées mais selon l'ordre dans lequel elles apparaissent dans le fichier | |
| de configuration.</li> | |
| <li>Les sections <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> (groupe 1 ci-dessus) | |
| sont traitées dans l'ordre du répertoire le plus court vers le plus long | |
| (sans tenir compte de leur ordre d’apparition dans le fichier de | |
| configuration). | |
| Par exemple, <code><Directory "/var/web/dir"></code> sera | |
| traitée avant <code><Directory | |
| "/var/web/dir/subdir"></code>.</li> | |
| <li>Si plusieurs sections <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> s'appliquent au même répertoire, elles | |
| sont traitées selon l'ordre dans lequel elles apparaissent dans le fichier | |
| de configuration. La même règle s’applique lorsque plusieurs sections | |
| <code class="directive"><a href="./mod/core.html#directorymatch"><DirectoryMatch></a></code>, | |
| <code class="directive"><a href="./mod/core.html#files"><Files></a></code>, <code class="directive"><a href="./mod/core.html#filesmatch"><FilesMatch></a></code>, <code class="directive"><a href="./mod/core.html#location"><Location></a></code> ou <code class="directive"><a href="./mod/core.html#locationmatch"><LocationMatch></a></code> ciblent à la même | |
| ressource.</li> | |
| <li>Les sections de configuration incluses à laide de la directive <code class="directive"><a href="./mod/core.html#include">Include</a></code> sont traitées comme si elles se | |
| trouvaient réellement dans le fichier qui les inclut à la position de la | |
| directive | |
| <code class="directive"><a href="./mod/core.html#include">Include</a></code>.</li> | |
| <li>Les sections situées à l'intérieur de sections <code class="directive"><a href="./mod/core.html#virtualhost"><VirtualHost></a></code> | |
| sont appliquées <em>après</em> les sections correspondantes situées en | |
| dehors de la définition du serveur virtuel, ce qui permet au serveur virtuel | |
| de prévaloir sur la configuration du serveur global. Notez qu’à la | |
| différence des autres types de section, un seul <code class="directive"><a href="./mod/core.html#serveur virtuel"><serveur virtuel></a></code> est sélectionné pour une requête | |
| — les directives de plusieurs serveurs virtuels correspondants ne sont | |
| jamais fusionnées. Voir <a href="vhosts/details.html">Correspondance des | |
| serveurs virtuels</a> pour des détails à propos de la manière dont les | |
| serveurs virtuels sont sélectionnés.</li> | |
| <li>Quand la requête est servie par le module <code class="module"><a href="./mod/mod_proxy.html">mod_proxy</a></code>, | |
| le conteneur <code class="directive"><a href="./mod/mod_proxy.html#proxy"><Proxy></a></code> | |
| prend la place du conteneur <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> dans l'ordre de traitement.</li> | |
| <li>Il faut être très prudent lorsqu'on mélange des directives de | |
| configuration similaires à l'intérieur et à l'extérieur d'une section | |
| <code class="directive"><a href="./mod/core.html#if"><If></a></code> car leur ordre | |
| d'apparition a de l'importance. A cet effet, l'utilisation explicite de la | |
| directive <code class="directive"><a href="./mod/core.html#else"><Else></a></code> | |
| peut vous y aider. | |
| </li> | |
| <li>Lorsqu'une section <code class="directive"><a href="./mod/core.html#if"><If></a></code> est utilisée dans un fichier <code>.htaccess</code>, les | |
| directives incluses dans un "directory" parent seront fusionnées | |
| <em>après</em> les directives non-incluses dans un "directory" enfant. | |
| </li> | |
| <li><div class="warning"><h3>Avertissement : une directive | |
| <Limit> au sein d’une section <Location> peut accorder un | |
| accès silencieusement</h3> | |
| <p>Utiliser la directive <code class="directive"><a href="./mod/core.html#limit"><Limit></a></code> au sein d’une section <code class="directive"><a href="./mod/core.html#location"><Location></a></code> pour restreindre | |
| la liste des méthodes HTTP autorisées peut donner des résultats | |
| inattendus. Pour les méthodes non spécifiées par la directive <code class="directive"><a href="./mod/core.html#limit"><Limit></a></code>, la section <code class="directive"><a href="./mod/core.html#location"><Location></a></code> hôte est traitée comme | |
| n’imposant aucune condition d’autorisation, ce qui a effectivement pour | |
| effet d’accorder l’accès et outrepasse toute éventuelle restriction | |
| d’une section <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code> qui, autrement, aurait dû s’appliquer. | |
| C’est pourquoi il est préférable d’utiliser la directive <code class="directive"><a href="./mod/core.html#limitexcept"><LimitExcept></a></code> ou de définir les | |
| autorisations sans restriction sur les méthodes.</p> | |
| </div></li> | |
| </ul> | |
| <div class="note"><h3>Note technique</h3> | |
| Une séquence <code><Location></code>/<code><LocationMatch></code> | |
| est réellement traitée juste avant la phase de traduction du nom | |
| (où <code>Aliases</code> et <code>DocumentRoots</code> | |
| sont utilisés pour faire correspondre les URLs aux noms de fichiers). | |
| Les effets de cette séquence disparaissent totalement lorsque | |
| la traduction est terminée. | |
| </div> | |
| <h3 id="relationship-module-configuration">Interactions entre | |
| modules et sections de configuration</h3> | |
| <p>Une question se pose souvent après avoir lu comment les sections de | |
| configuration sont fusionnées : comment et quand les directives de modules | |
| particuliers comme <code class="module"><a href="./mod/mod_rewrite.html">mod_rewrite</a></code> sont-elles interprétées ? La | |
| réponse n'est pas triviale et nécessite un approfondissement. Chaque module | |
| httpd gère sa propre configuration, et chacune de ses directives dans | |
| httpd.conf définit un élément de configuration dans un contexte particulier. | |
| httpd n'exécute pas une commande au moment où elle est lue.</p> | |
| <p>A l'exécution, le noyau de httpd parcourt les sections de configuration | |
| dans l'ordre décrit ci-dessus afin de déterminer lesquelles s'appliquent à | |
| la requête actuelle. Lorsqu'une première section s'applique, elle est | |
| considérée comme la configuration actuelle pour cette requête. Si une | |
| section suivante s'applique aussi, chaque module qui possède des directives | |
| dans chacune de ces sections a la possibilité de fusionner sa configuration | |
| entre ces deux sections. Il en résulte une troisième configuration et le | |
| processus de fusion se poursuit jusqu'à ce que toutes les sections de | |
| configuration aient été évaluées.</p> | |
| <p>Après l'étape précédente, le traitement proprement dit de la requête HTTP | |
| peut commencer : chaque module peut effectuer toute tâche qui lui incombe, | |
| et pour déterminer de quelle manière il doit agir, il peut s'appuyer | |
| sur le noyau de httpd pour retrouver sa configuration globale issue de la | |
| fusion précédente.</p> | |
| <p>Un exemple permet de mieux visualiser l'ensemble du processus. La | |
| configuration suivante utilise la directive <code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code> du module | |
| <code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code> pour définir un en-tête HTTP spécifique. Quelle | |
| valeur httpd va-t-il affecter à l'en-tête <code>CustomHeaderName</code> pour | |
| une requête vers <code>/example/index.html</code> ? | |
| </p> | |
| <pre class="prettyprint lang-config"><Directory "/"> | |
| Header set CustomHeaderName one | |
| <FilesMatch ".*"> | |
| Header set CustomHeaderName three | |
| </FilesMatch> | |
| </Directory> | |
| <Directory "/example"> | |
| Header set CustomHeaderName two | |
| </Directory></pre> | |
| <ul> | |
| <li><code class="directive">Directory</code> "/" s'applique, et une configuration | |
| initiale est créée qui définit l'en-tête <code>CustomHeaderName</code> | |
| avec la valeur <code>one</code>.</li> | |
| <li><code class="directive">Directory</code> "/example" s'applique, et comme | |
| <code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code> spécifie dans son code que | |
| la valeur d'un en-tête doit être écrasée si ce dernier est défini à | |
| nouveau, une nouvelle configuration est créée qui définit l'en-tête | |
| <code>CustomHeaderName</code> avec la valeur <code>two</code>.</li> | |
| <li><code class="directive">FilesMatch</code> ".*" s'applique, une nouvelle | |
| opportunité de fusion survient, et l'en-tête <code>CustomHeaderName</code> | |
| est défini à la valeur <code>three</code>.</li> | |
| <li>Finalement, au cours des étapes suivantes du traitement de la | |
| requête HTTP, <code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code> sera sollicité, et il se | |
| basera sur la configuration qui a défini l'en-tête | |
| <code>CustomHeaderName</code> à la valeur <code>three</code>. | |
| <code class="module"><a href="./mod/mod_headers.html">mod_headers</a></code> utilise normalement cette configuration pour | |
| accomplir sa tâche, à savoir définir des en-têtes HTTP. Cela ne veut | |
| cependant pas dire qu'un module ne peut pas effectuer des actions plus | |
| complexes comme désactiver des directives car elle ne sont pas | |
| nécessaires ou obsolètes, etc.</li> | |
| </ul> | |
| <p>Ceci est aussi vrai pour les fichiers .htaccess car ils possèdent la même | |
| priorité que les sections <code class="directive">Directory</code> dans l'ordre de | |
| fusion. Il faut bien comprendre que les sections de configuration comme | |
| <code class="directive">Directory</code> et <code class="directive">FilesMatch</code> ne | |
| sont pas comparables avec les directives spécifiques de modules comme | |
| <code class="directive"><a href="./mod/mod_headers.html#header">Header</a></code> ou <code class="directive"><a href="./mod/mod_rewrite.html#rewriterule">RewriteRule</a></code> car elles agissent à des | |
| niveaux différents. | |
| </p> | |
| <h3 id="merge-examples">Quelques exemples utiles</h3> | |
| <p>Voici un exemple imaginaire qui montre l'ordre de combinaison des sections. | |
| En supposant qu'elles s'appliquent toutes à la requête, les directives de | |
| cet exemple seront appliquées dans l'ordre suivant : A > B > C > D > | |
| E.</p> | |
| <pre class="prettyprint lang-config"><Location "/"> | |
| E | |
| </Location> | |
| <Files "f.html"> | |
| D | |
| </Files> | |
| <VirtualHost *> | |
| <Directory "/a/"> | |
| B | |
| </Directory> | |
| </VirtualHost> | |
| <DirectoryMatch "^.*b$"> | |
| C | |
| </DirectoryMatch> | |
| <Directory "/a/b"> | |
| A | |
| </Directory></pre> | |
| <p>Pour un exemple plus concret, considérez ce qui suit. Sans tenir compte | |
| d'une quelconque restriction d'accès placée dans les sections <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>, la section <code class="directive"><a href="./mod/core.html#location"><Location></a></code> sera | |
| évaluée en dernier et permettra un accès au serveur sans aucune restriction. | |
| En d'autres termes, l'ordre de la combinaison des sections est important ; | |
| soyez donc prudent !</p> | |
| <pre class="prettyprint lang-config"><Location "/"> | |
| Require all granted | |
| </Location> | |
| # Grrrr ! Cette section <Directory> n'aura aucun effet | |
| <Directory "/"> | |
| <RequireAll> | |
| Require all granted | |
| Require not host badguy.example.com | |
| </RequireAll> | |
| </Directory></pre> | |
| </div></div> | |
| <div class="bottomlang"> | |
| <p><span>Langues Disponibles: </span><a href="./en/sections.html" hreflang="en" rel="alternate" title="English"> en </a> | | |
| <a href="./fr/sections.html" title="Français"> fr </a> | | |
| <a href="./ja/sections.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | | |
| <a href="./ko/sections.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | | |
| <a href="./tr/sections.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p> | |
| </div><div id="footer"> | |
| <p class="apache">Copyright 2026 The Apache Software Foundation.<br>Autorisé sous <a href="https://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/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="./glossary.html">Glossaire</a> | <a href="./sitemap.html">Plan du site</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Signaler un bug</a></p></div><script><!--//--><![CDATA[//><!-- | |
| if (typeof(prettyPrint) !== 'undefined') { | |
| prettyPrint(); | |
| } | |
| var langToggle = document.querySelector('.lang-toggle'); | |
| var topLang = document.querySelector('.toplang'); | |
| if (langToggle && topLang) { | |
| langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); }); | |
| } | |
| var qv = document.getElementById('quickview'); | |
| if (qv) { | |
| document.body.appendChild(qv); | |
| var qvBtn = document.createElement('button'); | |
| qvBtn.className = 'qv-toggle'; | |
| qvBtn.setAttribute('aria-label', 'Toggle page navigation'); | |
| qvBtn.innerHTML = '☰'; | |
| document.body.appendChild(qvBtn); | |
| qvBtn.addEventListener('click', function() { | |
| var isOpen = qv.classList.toggle('open'); | |
| if (isOpen) { | |
| qv.style.top = window.scrollY + 10 + 'px'; | |
| } | |
| }); | |
| window.addEventListener('scroll', function() { qv.classList.remove('open'); }); | |
| } | |
| //--><!]]></script> | |
| </body></html> |