2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision: 1673945 -->
5 <!-- French translation : Lucien GENTIS -->
6 <!-- Reviewed by : Vincent Deffontaines -->
9 Licensed to the Apache Software Foundation (ASF) under one or more
10 contributor license agreements. See the NOTICE file distributed with
11 this work for additional information regarding copyright ownership.
12 The ASF licenses this file to You under the Apache License, Version 2.0
13 (the "License"); you may not use this file except in compliance with
14 the License. You may obtain a copy of the License at
16 http://www.apache.org/licenses/LICENSE-2.0
18 Unless required by applicable law or agreed to in writing, software
19 distributed under the License is distributed on an "AS IS" BASIS,
20 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
21 See the License for the specific language governing permissions and
22 limitations under the License.
25 <modulesynopsis metafile="mod_dir.xml.meta">
27 <description>Permet la redirection des adresses se terminant par un
28 répertoire sans slash de fin et la mise à disposition des fichiers index
29 de répertoire</description>
31 <sourcefile>mod_dir.c</sourcefile>
32 <identifier>dir_module</identifier>
35 <p>L'index d'un répertoire peut provenir de deux sources :</p>
38 <li>Un fichier écrit par l'utilisateur, dont le nom, en général
39 appelé <code>index.html</code>, peut être défini à l'aide de la
40 directive <directive module="mod_dir">DirectoryIndex</directive>
41 fournie par le module <module>mod_dir</module>.</li>
43 <li>Un listing généré par le serveur, par l'intermédiaire du
44 module <module>mod_autoindex</module>.</li>
46 <p>Les deux fonctions sont bien distinctes, si bien que vous pouvez
47 supprimer (ou remplacer) la génération automatique d'index, si vous
50 <p>Une redirection "slash de fin" est effectuée lorsque le serveur
51 reçoit une requête pour une URL du style
52 <code>http://nom-serveur/foo/nom-rep</code> où <code>nom-rep</code>
53 est le nom d'un répertoire. Comme les répertoires nécessitent un slash de
54 fin, <module>mod_dir</module> effectue une redirection vers
55 <code>http://nom-serveur/foo/nom-rep/</code>.</p>
59 <name>DirectoryIndex</name>
60 <description>Liste des fichiers ressources à rechercher lorsque le
61 client envoie une requête pour un répertoire</description>
62 <syntax>DirectoryIndex
63 disabled | <var>url locale</var> [<var>url locale</var>] ...</syntax>
64 <default>DirectoryIndex index.html</default>
65 <contextlist><context>server config</context><context>virtual host</context>
66 <context>directory</context><context>.htaccess</context></contextlist>
67 <override>Indexes</override>
70 <p>La directive <directive>DirectoryIndex</directive> permet de
71 définir une liste de fichiers ressources à rechercher lorsqu'un
72 client envoie une requête pour l'index d'un répertoire, en ajoutant
73 un '/' à la fin du nom de ce dernier. <var>url locale</var> est
74 l'URL (codée avec caractères '%') d'un document du serveur, relative
75 au répertoire faisant l'objet de la requête ; il s'agit en général
76 du nom d'un fichier situé dans le répertoire. Si plusieurs URLs sont
77 fournies, le serveur renverra la première d'entre elles qui
78 correspond à une ressource existante. Si aucune ressource ne
79 correspond à la liste des URLs spécifiées, et si l'option
80 <code>Indexes</code> est définie, le serveur générera son propre
81 listing du répertoire.</p>
83 <example><title>Exemple</title>
84 <highlight language="config">
85 DirectoryIndex index.html
89 <p>Avec cette configuration, une requête pour l'URL
90 <code>http://example.com/docs/</code> renverrait au client la
91 ressource <code>http://example.com/docs/index.html</code> si elle
92 existe, ou provoquerait la génération du listing du répertoire si la
93 ressource n'existe pas.</p>
95 <p>Notez qu'il n'est pas nécessaire que les documents soient
96 relatifs au répertoire ;</p>
98 <highlight language="config">
99 DirectoryIndex index.html index.txt /cgi-bin/index.pl
102 <p>provoquerait l'exécution du script CGI
103 <code>/cgi-bin/index.pl</code> si aucun des fichiers
104 <code>index.html</code> ou <code>index.txt</code> n'existe dans le
105 répertoire considéré.</p>
107 <p>La spécification du seul argument "disabled" empêche
108 <module>mod_dir</module> de rechercher un index. Un argument
109 "disabled" sera interprété de manière littérale si d'autres
110 arguments sont présents avant ou après lui, même s'ils sont
111 eux-mêmes des arguments "disabled".</p>
113 <p><strong>Note :</strong>La définition de plusieurs directives
114 <directive>DirectoryIndex</directive> au sein d'un <a href="../sections.html"><em>même
115 contexte</em></a> permet d'ajouter des ressources à rechercher plutôt
116 que de remplacer celle déjà définies :
118 <highlight language="config">
119 # Exemple A: définit index.html comme page d'index, ainsi qu'index.php.
120 <Directory "/foo">
121 DirectoryIndex index.html
122 DirectoryIndex index.php
125 # Exemple B: identique à l'exemple A, mais avec une seule directive.
126 <Directory "/foo">
127 DirectoryIndex index.html index.php
130 # Exemple C: pour remplacer la liste des pages d'index par une autre,
131 # vous devez tout d'abord supprimer la première liste : dans l'exemple
132 # suivant, il ne restera qu'index.php comme page d'index.
133 <Directory "/foo">
134 DirectoryIndex index.html
135 DirectoryIndex disabled
136 DirectoryIndex index.php
144 <name>DirectoryIndexRedirect</name>
145 <description>Définit une redirection externe pour les index de
148 <syntax>DirectoryIndexRedirect on | off | permanent | temp | seeother |
151 <default>DirectoryIndexRedirect off</default>
152 <contextlist><context>server config</context><context>virtual host</context>
153 <context>directory</context><context>.htaccess</context></contextlist>
154 <override>Indexes</override>
155 <compatibility>Disponible depuis la version 2.3.14</compatibility>
158 <p>Par défaut, c'est la page définie par la directive
159 <directive>DirectoryIndex</directive> qui est sélectionnée et
160 renvoyée de manière transparente au client. La directive
161 <directive>DirectoryIndexRedirect</directive> permet de rediriger le
162 client via une redirection de type 3xx.</p>
164 <p>Les arguments acceptés sont :</p>
166 <li><code>on</code> : envoie une redirection 302 vers l'index choisi.</li>
167 <li><code>off</code> : n'envoie aucune redirection. Il s'agit du comportement historique de mod_dir.</li>
168 <li><code>permanent</code> : envoie une redirection 301 (permanent) vers l'index choisi.</li>
169 <li><code>temp</code> : ceci est équivalent à <code>on</code></li>
170 <li><code>seeother</code> : envoie une redirection 303 (également appelée "See Other") vers l'index choisi.</li>
171 <li><var>3xx-code</var> : envoie une redirection accompagnée du code 3xx choisi.</li>
176 <example><title>Exemple</title>
177 <highlight language="config">
178 DirectoryIndexRedirect on
182 <p>Une requête pour <code>http://example.com/docs/</code> se
183 solderait par une redirection temporaire vers
184 <code>http://example.com/docs/index.html</code> si cette ressource
191 <name>DirectorySlash</name>
192 <description>Activation/Désactivation de la redirection "slash de
194 <syntax>DirectorySlash On|Off</syntax>
195 <default>DirectorySlash On</default>
196 <contextlist><context>server config</context><context>virtual
198 <context>directory</context><context>.htaccess</context></contextlist>
199 <override>Indexes</override>
202 <p>La directive <directive>DirectorySlash</directive> permet de
203 déterminer si <module>mod_dir</module> doit corriger ou non les URLs
204 pointant vers un répertoire.</p>
206 <p>En général, si un utilisateur envoie une requête pour une
207 ressource sans slash de fin, cette ressource représentant un
208 répertoire, <module>mod_dir</module> le redirige vers la même
209 ressource, mais <em>en ajoutant</em> un slash de fin, et ceci pour
210 plusieurs bonnes raisons :</p>
213 <li>La requête de l'utilisateur contiendra finalement l'URL
214 canonique de la ressource</li>
215 <li><module>mod_autoindex</module> fonctionnera correctement. Comme
216 il n'indique pas le chemin dans le lien, le chemin de l'URL serait
218 <li>La directive <directive
219 module="mod_dir">DirectoryIndex</directive> n'est évaluée
220 <em>que</em> pour les répertoires se terminant par un slash.</li>
221 <li>Les références à des URLs relatives dans les pages html
222 fonctionneront alors correctement.</li>
225 <p>Si vous ne souhaitez pas voir ces effets, <em>et</em> si
226 les raisons évoquées ci-dessus ne s'appliquent pas à vous, vous
227 pouvez désactiver la redirection comme indiqué ci-dessous.
228 Gardez cependant à l'esprit que ceci peut avoir des répercutions en
229 matière de sécurité.</p>
231 <highlight language="config">
232 # voir l'avertissement de sécurité ci-dessous !
233 <Location "/some/path">
235 SetHandler some-handler
239 <note type="warning"><title>Avertissement de sécurité</title>
240 <p>La désactivation de la redirection "slash de fin" peut entraîner
241 la divulgation d'informations. Considérons la situation où
242 <module>mod_autoindex</module> est actif (<code>Options
243 +Indexes</code>), où la directive <directive module="mod_dir"
244 >DirectoryIndex</directive> a pour valeur une ressource valide (par
245 exemple <code>index.html</code>), et où aucun gestionnaire
246 particulier n'a été défini pour cette URL. Dans ce cas, une requête
247 avec slash de fin afficherait le contenu du fichier
248 <code>index.html</code> ; <strong>par contre, une requête sans slash
249 de fin afficherait un listing du contenu du
250 répertoire</strong>.</p>
252 <p>Notez aussi que certains navigateurs peuvent modifier par erreur
253 des requêtes POST en requêtes GET lors d'une redirection, les
254 données POST étant alors perdues.</p>
258 <name>FallbackResource</name>
259 <description>Définit une URL par défaut pour les requêtes qui ne ciblent
260 aucun fichier</description>
261 <syntax>FallbackResource disabled | <var>url-locale</var></syntax>
262 <default>Désactivé - httpd renvoie un code d'erreur 404 (Not Found)</default>
263 <contextlist><context>server config</context><context>virtual host</context>
264 <context>directory</context><context>.htaccess</context></contextlist>
265 <override>Indexes</override>
266 <compatibility>L'argument <code>disabled</code> est disponible depuis la
267 version 2.4.4 du serveur HTTP Apache</compatibility>
269 <p>Cette directive permet de définir un traitement pour toute URL
270 qui ne correspond à aucune ressource de votre système de fichiers,
271 et qui provoquerait sans cela l'envoi d'un code d'erreur HTTP 404
274 <highlight language="config">
275 FallbackResource /not-404.php
277 <p>fait en sorte que les requêtes ne correspondant à aucun fichier
278 soient traitées par <code>non-404.php</code>, sans affecter les
279 requêtes pour des fichiers existants.</p>
280 <p>Il est souvent souhaitable qu'un seul fichier ou ressource traite
281 toutes les requêtes à destination d'un répertoire
282 particulier, sauf pour les requêtes qui correspondent à un fichier
283 ou script existant. On y fait souvent référence sous le terme
284 'contrôleur frontal'.</p>
285 <p>Dans les versions plus anciennes de httpd, cet effet nécessitait
286 en général <module>mod_rewrite</module>, et l'utilisation des tests
287 conditionnels <code>-f</code> et <code>-d</code> pour vérifier
288 l'existence des fichiers et répertoires. Maintenant, une seule ligne
289 de configuration est nécessaire.</p>
290 <highlight language="config">
291 FallbackResource /index.php
293 <p>Les fichiers existants comme des images, des fichiers css, etc...
294 seront traités normalement.</p>
295 <p>Utilisez l'argument <code>disabled</code> pour désactiver cette
296 fonctionnalité si l'héritage d'un répertoire parent n'est pas
298 <p>Pour un URI intermédiaire tel que
299 <em>http://example.com/blog/</em>, cet URI intermédiaire doit être
300 spécifié en tant que <var>url-locale</var> :</p>
301 <highlight language="config">
302 <Directory "/web/example.com/htdocs/blog">
303 FallbackResource /blog/index.php
305 <Directory "/web/example.com/htdocs/blog/images">
306 FallbackResource disabled
313 <name>DirectoryCheckHandler</name>
314 <description>Définit la réponse de ce module lorsqu'un autre
315 gestionnaire est utilisé</description>
316 <syntax>DirectoryCheckHandler On|Off</syntax>
317 <default>DirectoryCheckHandler Off</default>
318 <contextlist><context>server config</context><context>virtual host</context>
319 <context>directory</context><context>.htaccess</context></contextlist>
320 <override>Indexes</override>
321 <compatibility>Disponible depuis la version 2.4.8 du serveur HTTP
322 Apache. Les versions antérieures à 2.4 se comportaient implicitement
323 comme si "DirectoryCheckHandler ON" avait été spécifié.</compatibility>
325 <p>La directive <directive>DirectoryCheckHandler</directive> permet
326 de faire en sorte que <module>mod_dir</module> recherche un index
327 de répertoire ou ajoute des slashes de fin lorsqu'un autre
328 gestionnaire à été défini pour l'URL considérée. Les gestionnaires
329 peuvent être définis à l'exécution via des directives telles que
330 <directive module="core">SetHandler</directive> ou par d'autres
333 <p>Dans les versions antérieures à 2.4, ce module ne modifiait pas
334 son comportement si un autre gestionnaire avait été défini pour
335 l'URL considérée. Ceci permettait de servir des index de répertoires
336 même si une directive <directive>SetHandler</directive> avait été
337 définie pour un répertoire entier, mais pouvait aussi être à
338 l'origine de conflits avec d'autres modules.</p>