2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.fr.xsl"?>
4 <!-- English Revision : 1421821 -->
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 vers une ressource externe.</p>
164 <example><title>Exemple</title>
165 <highlight language="config">
166 DirectoryIndexRedirect on
170 <p>Une requête pour <code>http://example.com/docs/</code> se
171 solderait par une redirection temporaire vers
172 <code>http://example.com/docs/index.html</code> si cette ressource
179 <name>DirectorySlash</name>
180 <description>Activation/Désactivation de la redirection "slash de
182 <syntax>DirectorySlash On|Off</syntax>
183 <default>DirectorySlash On</default>
184 <contextlist><context>server config</context><context>virtual
186 <context>directory</context><context>.htaccess</context></contextlist>
187 <override>Indexes</override>
190 <p>La directive <directive>DirectorySlash</directive> permet de
191 déterminer si <module>mod_dir</module> doit corriger ou non les URLs
192 pointant vers un répertoire.</p>
194 <p>En général, si un utilisateur envoie une requête pour une
195 ressource sans slash de fin, cette ressource représentant un
196 répertoire, <module>mod_dir</module> le redirige vers la même
197 ressource, mais <em>en ajoutant</em> un slash de fin, et ceci pour
198 plusieurs bonnes raisons :</p>
201 <li>La requête de l'utilisateur contiendra finalement l'URL
202 canonique de la ressource</li>
203 <li><module>mod_autoindex</module> fonctionnera correctement. Comme
204 il n'indique pas le chemin dans le lien, le chemin de l'URL serait
206 <li>La directive <directive
207 module="mod_dir">DirectoryIndex</directive> n'est évaluée
208 <em>que</em> pour les répertoires se terminant par un slash.</li>
209 <li>Les références à des URLs relatives dans les pages html
210 fonctionneront alors correctement.</li>
213 <p>Si vous ne souhaitez pas voir ces effets, <em>et</em> si
214 les raisons évoquées ci-dessus ne s'appliquent pas à vous, vous
215 pouvez désactiver la redirection comme indiqué ci-dessous.
216 Gardez cependant à l'esprit que ceci peut avoir des répercutions en
217 matière de sécurité.</p>
219 <highlight language="config">
220 # voir l'avertissement de sécurité ci-dessous !
221 <Location /some/path>
223 SetHandler some-handler
227 <note type="warning"><title>Avertissement de sécurité</title>
228 <p>La désactivation de la redirection "slash de fin" peut entraîner
229 la divulgation d'informations. Considérons la situation où
230 <module>mod_autoindex</module> est actif (<code>Options
231 +Indexes</code>), où la directive <directive module="mod_dir"
232 >DirectoryIndex</directive> a pour valeur une ressource valide (par
233 exemple <code>index.html</code>), et où aucun gestionnaire
234 particulier n'a été défini pour cette URL. Dans ce cas, une requête
235 avec slash de fin afficherait le contenu du fichier
236 <code>index.html</code> ; <strong>par contre, une requête sans slash
237 de fin afficherait un listing du contenu du
238 répertoire</strong>.</p>
240 <p>Notez aussi que certains navigateurs peuvent modifier par erreur
241 des requêtes POST en requêtes GET lors d'une redirection, les
242 données POST étant alors perdues.</p>
246 <name>FallbackResource</name>
247 <description>Définit une URL par défaut pour les requêtes qui ne ciblent
248 aucun fichier</description>
249 <syntax>FallbackResource disabled | <var>url-locale</var></syntax>
250 <default>Désactivé - httpd renvoie un code d'erreur 404 (Not Found)</default>
251 <contextlist><context>server config</context><context>virtual host</context>
252 <context>directory</context><context>.htaccess</context></contextlist>
253 <override>Indexes</override>
255 <p>Cette directive permet de définir un traitement pour toute URL
256 qui ne correspond à aucune ressource de votre système de fichiers,
257 et qui provoquerait sans cela l'envoi d'un code d'erreur HTTP 404
260 <highlight language="config">
261 FallbackResource /not-404.php
263 <p>fait en sorte que les requêtes ne correspondant à aucun fichier
264 soient traitées par <code>non-404.php</code>, sans affecter les
265 requêtes pour des fichiers existants.</p>
266 <p>Il est souvent souhaitable qu'un seul fichier ou ressource traite
267 toutes les requêtes à destination d'un répertoire
268 particulier, sauf pour les requêtes qui correspondent à un fichier
269 ou script existant. On y fait souvent référence sous le terme
270 'contrôleur frontal'.</p>
271 <p>Dans les versions plus anciennes de httpd, cet effet nécessitait
272 en général <module>mod_rewrite</module>, et l'utilisation des tests
273 conditionnels <code>-f</code> et <code>-d</code> pour vérifier
274 l'existence des fichiers et répertoires. Maintenant, une seule ligne
275 de configuration est nécessaire.</p>
276 <highlight language="config">
277 FallbackResource /index.php
279 <p>Les fichiers existants comme des images, des fichiers css, etc...
280 seront traités normalement.</p>
281 <p>Utilisez l'argument <code>disabled</code> pour désactiver cette
282 fonctionnalité si l'héritage d'un répertoire parent n'est pas
284 <p>Pour un URI intermédiaire tel que
285 <em>http://example.com/blog/</em>, cet URI intermédiaire doit être
286 spécifié en tant que <var>url-locale</var> :</p>
287 <highlight language="config">
288 <Directory /web/example.com/htdocs/blog>
289 FallbackResource /blog/index.php
291 <Directory /web/example.com/htdocs/blog/images>
292 FallbackResource disabled