| Description: | Permet la redirection des adresses se terminant par unrépertoire sans slash de fin et la mise à disposition des fichiers indexde répertoire |
|---|---|
| Statut: | Base |
| Identificateur de Module: | dir_module |
| Fichier Source: | mod_dir.c |
L'index d'un répertoire peut provenir de deux sources :
index.html, peut être défini à l'aide de la directiveDirectoryIndex fournie par le modulemod_dir.mod_autoindex.Les deux fonctions sont bien distinctes, si bien que vous pouvez supprimer (ou remplacer) la génération automatique d'index, si vous le souhaitez.
Une redirection "slash de fin" est effectuée lorsque le serveur reçoit une requête pour une URL du stylehttp://nom-serveur/foo/nom-rep oùnom-rep est le nom d'un répertoire. Comme les répertoires nécessitent un slash de fin,mod_dir effectue une redirection vershttp://nom-serveur/foo/nom-rep/.
| Description: | Définit la réponse de ce module lorsqu'un autregestionnaire est utilisé |
|---|---|
| Syntaxe: | DirectoryCheckHandler On|Off |
| Défaut: | DirectoryCheckHandler Off |
| Contexte: | configuration globale, serveur virtuel, répertoire, .htaccess |
| Surcharges autorisées: | Indexes |
| Statut: | Base |
| Module: | mod_dir |
| Compatibilité: | Disponible depuis la version 2.4.8 du serveur HTTPApache. Les versions antérieures à 2.4 se comportaient implicitementcomme si "DirectoryCheckHandler ON" avait été spécifié. |
La directiveDirectoryCheckHandler permet de faire en sorte quemod_dir recherche un index de répertoire ou ajoute des slashes de fin lorsqu'un autre gestionnaire à été défini pour l'URL considérée. Les gestionnaires peuvent être définis à via des directives telles queSetHandler ou par d'autres modules tels quemod_rewrite au cours des substitutions de niveau répertoire.
Dans les versions antérieures à 2.4, ce module ne modifiait pas son comportement si un autre gestionnaire avait été défini pour l'URL considérée. Ceci permettait de servir des index de répertoires même si une directiveSetHandler avait été définie pour un répertoire entier, mais pouvait aussi être à l'origine de conflits avec d'autres modules commemod_rewrite.
| Description: | Liste des fichiers ressources à rechercher lorsque leclient envoie une requête pour un répertoire |
|---|---|
| Syntaxe: | DirectoryIndex disabled |url locale [url locale] ... |
| Défaut: | DirectoryIndex index.html |
| Contexte: | configuration globale, serveur virtuel, répertoire, .htaccess |
| Surcharges autorisées: | Indexes |
| Statut: | Base |
| Module: | mod_dir |
La directiveDirectoryIndex permet de définir une liste de fichiers ressources à rechercher lorsqu'un client envoie une requête pour l'index d'un répertoire, en ajoutant un '/' à la fin du nom de ce dernier.url locale est l'URL (codée avec caractères '%') d'un document du serveur, relative au répertoire faisant l'objet de la requête ; il s'agit en général du nom d'un fichier situé dans le répertoire. Si plusieurs URLs sont fournies, le serveur renverra la première d'entre elles qui correspond à une ressource existante. Si aucune ressource ne correspond à la liste des URLs spécifiées, et si l'optionIndexes est définie, le serveur générera son propre listing du répertoire.
DirectoryIndex index.html
Avec cette configuration, une requête pour l'URLhttp://example.com/docs/ renverrait au client la ressourcehttp://example.com/docs/index.html si elle existe, ou provoquerait la génération du listing du répertoire si la ressource n'existe pas.
Notez qu'il n'est pas nécessaire que les documents soient relatifs au répertoire ;
DirectoryIndex index.html index.txt /cgi-bin/index.pl
provoquerait l'exécution du script CGI/cgi-bin/index.pl si aucun des fichiersindex.html ouindex.txt n'existe dans le répertoire considéré.
La spécification du seul argument "disabled" empêchemod_dir de rechercher un index. Un argument "disabled" sera interprété de manière littérale si d'autres arguments sont présents avant ou après lui, même s'ils sont eux-mêmes des arguments "disabled".
Note: Positionner plusieurs directivesDirectoryIndex au coeur dumême context complète la liste des ressources et ne l'écrase pas :
# Exemple A: Positionner index.html en page d'index, puis ajouter index.php.<Directory "/foo"> DirectoryIndex index.html DirectoryIndex index.php</Directory># Exemple B: La même chose que l'exemple A, mais réalisé au moyen d'une seule directive.<Directory "/foo"> DirectoryIndex index.html index.php</Directory># Exemple C: Pour remplacer la liste des ressources, il faut d'abord la vider :# Ici, seul index.php restera référencé comme ressource d'index.<Directory "/foo"> DirectoryIndex index.html DirectoryIndex disabled DirectoryIndex index.php</Directory>
| Description: | Définit une redirection externe pour les index derépertoires. |
|---|---|
| Syntaxe: | DirectoryIndexRedirect on | off | permanent | temp | seeother |3xx-code |
| Défaut: | DirectoryIndexRedirect off |
| Contexte: | configuration globale, serveur virtuel, répertoire, .htaccess |
| Surcharges autorisées: | Indexes |
| Statut: | Base |
| Module: | mod_dir |
| Compatibilité: | Disponible depuis la version 2.3.14 |
Par défaut, c'est la page définie par la directiveDirectoryIndex qui est sélectionnée et renvoyée de manière transparente au client. La directiveDirectoryIndexRedirect permet de rediriger le client via une redirection de type 3xx.
Les arguments acceptés sont :
on : envoie une redirection 302 vers l'index choisi.off : n'envoie aucune redirection. Il s'agit du comportement historique de mod_dir.permanent : envoie une redirection 301 (permanent) vers l'index choisi.temp : ceci est équivalent àonseeother : envoie une redirection 303 (également appelée "See Other") vers l'index choisi.DirectoryIndexRedirect on
Une requête pourhttp://example.com/docs/ se solderait par une redirection temporaire vershttp://example.com/docs/index.html si cette ressource existe.
| Description: | Activation/Désactivation de la redirection "slash defin" |
|---|---|
| Syntaxe: | DirectorySlash On|Off |
| Défaut: | DirectorySlash On |
| Contexte: | configuration globale, serveur virtuel, répertoire, .htaccess |
| Surcharges autorisées: | Indexes |
| Statut: | Base |
| Module: | mod_dir |
La directiveDirectorySlash permet de déterminer simod_dir doit corriger ou non les URLs pointant vers un répertoire.
En général, si un utilisateur envoie une requête pour une ressource sans slash de fin, cette ressource représentant un répertoire,mod_dir le redirige vers la même ressource, maisen ajoutant un slash de fin, et ceci pour plusieurs bonnes raisons :
mod_autoindex fonctionnera correctement. Comme il n'indique pas le chemin dans le lien, le chemin de l'URL serait incorrect.DirectoryIndex n'est évaluéeque pour les répertoires se terminant par un slash.Si vous ne souhaitez pas voir ces effets,et si les raisons évoquées ci-dessus ne s'appliquent pas à vous, vous pouvez désactiver la redirection comme indiqué ci-dessous. Gardez cependant à l'esprit que ceci peut avoir des répercutions en matière de sécurité.
# voir l'avertissement de sécurité ci-dessous !<Location "/some/path"> DirectorySlash Off SetHandler some-handler</Location>
La désactivation de la redirection "slash de fin" peut entraîner la divulgation d'informations. Considérons la situation oùmod_autoindex est actif (Options +Indexes), où la directiveDirectoryIndex a pour valeur une ressource valide (par exempleindex.html), et où aucun gestionnaire particulier n'a été défini pour cette URL. Dans ce cas, une requête avec slash de fin afficherait le contenu du fichierindex.html ;par contre, une requête sans slash de fin afficherait un listing du contenu du répertoire.
Notez aussi que certains navigateurs peuvent modifier par erreur des requêtes POST en requêtes GET lors d'une redirection, les données POST étant alors perdues.
| Description: | Définit une URL par défaut pour les requêtes qui ne ciblentaucun fichier |
|---|---|
| Syntaxe: | FallbackResource disabled |url-locale |
| Défaut: | disabled - httpd renvoie un code d'erreur 404 (Not Found) |
| Contexte: | configuration globale, serveur virtuel, répertoire, .htaccess |
| Surcharges autorisées: | Indexes |
| Statut: | Base |
| Module: | mod_dir |
| Compatibilité: | L'argumentdisabled est disponible à partirde la version 2.4.4 du serveur HTTP Apache. |
Cette directive permet de définir un traitement pour toute URL qui ne correspond à aucune ressource de votre système de fichiers, et qui provoquerait sans cela l'envoi d'un code d'erreur HTTP 404 (Not Found). Par exemple
FallbackResource /not-404.php
fait en sorte que les requêtes ne correspondant à aucun fichier soient traitées parnon-404.php, sans affecter les requêtes pour des fichiers existants.
Il est souvent souhaitable qu'un seul fichier ou ressource traite toutes les requêtes à destination d'un répertoire particulier, sauf pour les requêtes qui correspondent à un fichier ou script existant. On y fait souvent référence sous le terme 'contrôleur frontal'.
Dans les versions plus anciennes de httpd, cet effet nécessitait en généralmod_rewrite, et l'utilisation des tests conditionnels-f et-d pour vérifier l'existence des fichiers et répertoires. Maintenant, une seule ligne de configuration est nécessaire.
FallbackResource /index.php
Les fichiers existants comme des images, des fichiers css, etc... seront traités normalement.
L'argumentdisabled permet de désactiver cette fonctionnalité dans le cas où l'héritage d'un répertoire parent n'est pas souhaité.
Pour un URI intermédiaire tel quehttp://example.com/blog/, cet URI intermédiaire doit être spécifié en tant queurl-locale :
<Directory "/web/example.com/htdocs/blog"> FallbackResource /blog/index.php</Directory><Directory "/web/example.com/htdocs/blog/images"> FallbackResource disabled</Directory>
Un gestionnaire de ressource par défaut (dans l'exemple ci-dessus/blog/index.php) peut accéder à l'URL de la requête originale via la variable de serveurREQUEST_URI. Pour accéder à cette variable en PHP, par exemple, utilisez$_SERVER['REQUEST_URI'].
Copyright 2025 The Apache Software Foundation.
Autorisé sousApache License, Version 2.0.