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 fonctionner
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#mimemagicfiles">MimeMagicFiles</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>
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>
<div class="example"><p><code>
<IfVersion >= 2.1><br />
<span class="indent">
# les directives situΘes ici ne s'appliquent que si la version <br />
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.
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>
<div class="example"><p><code>
<Directory /var/web/dir1><br />
Options +Indexes<br />
</Directory>
</code></p></div>
<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>
<div class="example"><p><code>
<Files private.html><br />
Order allow,deny<br />
Deny from all<br />
</Files>
</code></p></div>
<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
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
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>
<div class="example"><p><code>
<Directory /home/*/public_html><br />
Options Indexes<br />
</Directory>
</code></p></div>
<p>Avec les conteneurs utilisant les expressions rationnelles,
on peut interdire l'accΦs α de nombreux types de fichiers d'images
simultanΘment :</p>
<div class="example"><p><code>
<FilesMatch \.(?i:gif|jpe?g|png)$><br />
Order allow,deny<br />
Deny from all<br />
</FilesMatch>
</code></p></div>
<h3><a name="whichwhen" id="whichwhen">Que faut-il utiliser et quand ?</a></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 localisations de
l'arborescence du site web (URLs) peuvent correspondre α la mΩme localisation
du systΦme de fichier, ce qui peut permettre de contourner vos restrictions.
Par exemple, imaginez la configuration suivante :</p>
<div class="example"><p><code>
<Location /dir/><br />
Order allow,deny<br />
Deny from all<br />
</Location>
</code></p></div>
<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 cette localisation,
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
et <code class="directive"><a href="./mod/core.html#locationmatch"><LocationMatch></a></code> sont appliquΘes
simultanΘment</li>
</ol>
<p>Mises α part les sections <code class="directive"><a href="./mod/core.html#directory"><Directory></a></code>, chaque groupe est traitΘ selon
l'ordre dans lequel il apparaεt dans les fichiers de configuration.
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.
Par exemple, <code><Directory /var/web/dir></code> sera
traitΘ avant <code><Directory
/var/web/dir/subdir></code>. 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.
Les sections de configuration incluses via 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
<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>
<div class="example"><p><code>
<Location /><br />
E<br />
</Location><br />
<br />
<Files f.html><br />
D<br />
</Files><br />
<br />
<VirtualHost *><br />
<Directory /a/b><br />
B<br />
</Directory><br />
</VirtualHost><br />
<br />
<DirectoryMatch "^.*b$"><br />
C<br />
</DirectoryMatch><br />
<br />
<Directory /a/b><br />
A<br />
</Directory><br />
<br />
</code></p></div>
<p>Pour un exemple plus concret, considΘrez ce qui suit. Sans tenir compte
de toute 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,
<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></p>
</div><div id="footer">
<p class="apache">Copyright 2007 The Apache Software Foundation.<br />AuthorisΘ sous <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>