From: Lucien Gentis Les directives des fichiers de configuration 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
+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 .htaccess
pour
-modifier la portée des directives de configuration.
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,
+é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
Le conteneur httpd -DClosedForNow
:
Le conteneur
Dans l'exemple suivant, la directive
Le conteneur
Les conteneurs de sections de configuration les plus couramment utilisés -sont ceux qui modifient la configuration de points particuliers du système de +
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 est situé dans /usr/local/apache2
pour le système 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 est situé dans /usr/local/apache2
pour le système de
fichiers UNIX, ou "c:/Program Files/Apache Group/Apache2"
pour
-le système de fichiers Windows. (Notez que des slashes directs doivent
-toujours être utilisés comme séparateur de chemin dans Apache, même sous
-Windows.) Quant à
+le système de fichiers Windows. (Notez que des slashes directs doivent
+toujours être utilisés comme séparateur de chemin dans Apache, même sous
+Windows.) Quant Ã
l'arborescence du site web, il s'agit d'une vue de votre site
-tel que présenté par le
-serveur web et perçue par le client. Ainsi le chemin /dir/
dans
+tel que présenté par le
+serveur web et perçue par le client. Ainsi le chemin /dir/
dans
l'arborescence du site web correspond au chemin
-/usr/local/apache2/htdocs/dir/
dans le système de fichiers pour
-une installation d'Apache par défaut sous UNIX.
+/usr/local/apache2/htdocs/dir/
dans le système de fichiers pour
+une installation d'Apache 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.
Les conteneurs /var/web/dir1
et tous ses sous-répertoires.
/var/web/dir1
et tous ses sous-répertoires.
-Les directives contenues dans une section private.html
quel que soit
-l'endroit où il se trouve.
private.html
quel que soit
+l'endroit où il se trouve.
+
+Pour faire référence à des fichiers qui se trouvent en des points -particuliers du système de fichiers, les sections +
Pour faire référence à des fichiers qui se trouvent en des points
+particuliers du système de fichiers, les sections
/var/web/dir1/private.html
,
+peuvent être combinées. Par exemple, la configuration suivante va interdire
+l'accès à /var/web/dir1/private.html
,
/var/web/dir1/subdir2/private.html
,
/var/web/dir1/subdir3/private.html
, ainsi que toute instance de
private.html
qui se trouve dans l'arborescence
/var/web/dir1/
.
le conteneur http://yoursite.example.com/private
,
http://yoursite.example.com/private123
, et
-http://yoursite.example.com/private/dir/file.html
ainsi qu'à
-toute requête commençant par la chaîne de caractères /private
.
http://yoursite.example.com/private/dir/file.html
ainsi qu'Ã
+toute requête commençant par la chaîne de caractères /private
.
-Le conteneur server-status
-dans le système de fichiers.
server-status
+dans le système de fichiers.
-Les conteneurs
fnmatch
de la bibliothèque C standard.
-Le caractère "*"
-correspond à toute séquence de caractères, "?" à un caractère seul,
-et "[seq]" à tout caractère contenu dans seq.
-Le caractère "/"
+peuvent utiliser des caractères de remplacement de style shell comme dans
+la fonction fnmatch
de la bibliothèque C standard.
+Le caractère "*"
+correspond à toute séquence de caractères, "?" à un caractère seul,
+et "[seq]" à tout caractère contenu dans seq.
+Le caractère "/"
ne peut pas faire l'objet d'un remplacement;
-il doit être spécifié explicitement.
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 :
Un conteneur qui modifie la configuration de tous les -répertoires utilisateurs à l'aide de caractères de remplacement +répertoires utilisateurs à l'aide de caractères de remplacement mais sans utiliser -les expressions rationnelles pourrait ressembler à ceci :
+les expressions rationnelles pourrait ressembler à ceci : -Avec les conteneurs utilisant les expressions rationnelles, -on peut interdire l'accès à de nombreux types de fichiers d'images -simultanément :
-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 +
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
Il ne faut jamais utiliser un conteneur
Elle fonctionne correctement si la requête appelle +
Elle fonctionne correctement si la requête appelle
http://yoursite.example.com/dir/
. 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
+votre système de fichiers est insensible à la casse ?
+Votre restriction va pouvoir être tout simplement contournée en envoyant une
+requête sur
http://yoursite.example.com/DIR/
. Le conteneur
Si vous pensez que vous n'êtes pas concerné par ce problème
-parceque 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 localisations de l'arborescence du site web à la même
-localisation 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
+
Si vous pensez que vous n'êtes pas concerné par ce problème
+parceque 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 localisations de l'arborescence du site web à la même
+localisation 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 <Location
-/>
est tout à fait sans rique car ce conteneur va s'appliquer à
-toutes les requêtes sans tenir compte de l'URL spécifique.
Le conteneur
cnn.com
.
-
-www.example.com
via le serveur mandataire qu'Ã un sous-ensemble de
+clients :
+
+Pour déterminer quelles sont les directives autorisées pour tel type de
-section de configuration, vérifiez le Pour déterminer quelles sont les directives autorisées pour tel type de
+section de configuration, vérifiez le Contexte de la directive.
-Tout ce qui est autorisé dans les sections
+Tout ce qui est autorisé dans les sections
FollowSymLinks
et
.htaccess
.
-
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.
+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.
-L'ordre dans lequel les sections sont combinées est :
+L'ordre dans lequel les sections sont combinées est :
.htaccess
sont appliqués simultanément (avec
- la possibilité pour .htaccess
, s'il y est autorisé, de
- prévaloir sur
+ et les fichiers .htaccess
sont appliqués simultanément (avec
+ la possibilité pour .htaccess
, s'il y est autorisé, de
+ prévaloir sur
Mises à part les sections
Mises à part les sections <Directory /var/web/dir>
sera
- traité avant <Directory
+ traité avant
<Directory
/var/web/dir/subdir>
. Si plusieurs sections
Les sections situées à l'intérieur de sections
Quand la requête est servie par le module
Quand la requête est servie par le module
Les sections situées plus loin dans le fichier de configuration prévalent - sur celles qui les précèdent.
-<Location>
/<LocationMatch>
- est réellement traitée juste avant la phase de traduction du nom
- (où Aliases
et DocumentRoots
- 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.
+ est réellement traitée juste avant la phase de traduction du nom
+ (où Aliases
et DocumentRoots
+ 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.
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
A l'exécution, le noyau de httpd parcours les sections de configuration + dans l'ordre décrit ci-dessus afin de déterminer lesquelles s'appliquent à + la requête courante. Lorsqu'une première section s'applique, elle est + considérée comme la configuration courante 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.
+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 dont il doit agir, il peut s'appuyer + sur le noyau de httpd pour retrouver sa configuration globale issue de la + fusion précédente.
+Un exemple permet de mieux visualiser l'ensemble du processus. la
+ configuration suivante utilise la directive CustomHeaderName
pour
+ une requête vers /example/index.html
?
+
CustomHeaderName
+ avec la valeur one
.CustomHeaderName
avec la valeur two
.CustomHeaderName
+ est défini à la valeur three
.CustomHeaderName
à la valeur three
.
+ Ceci est aussi vrai pour les fichiers .htaccess car ils possèdent la même
+ priorité que les sections
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 > +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.
-Pour un exemple plus concret, considérez ce qui suit. Sans tenir compte
-de toute restriction d'accès placée dans les sections Pour un exemple plus concret, considérez ce qui suit. Sans tenir compte
+de toute restriction d'accès placée dans les sections
-Order deny,allow
-Allow from all
-</Location>
-
:if expand("%") == ""|browse confirm w|else|confirm w|endif
-
-# Arrghs! Cette section <Directory> n'aura aucun effet
-<Directory />
-Order allow,deny
-Allow from all
-Deny from badguy.example.com
+