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