mod_dir
Permet la redirection des adresses se terminant par un répertoire sans slash de fin et la mise à disposition des fichiers index de répertoire
Base
mod_dir.c
dir_module

L'index d'un répertoire peut provenir de deux sources :

- Un fichier écrit par l'utilisateur, dont le nom, en général appelé `index.html`, peut être défini à l'aide de la directive DirectoryIndex fournie par le module mod_dir.
- Un listing généré par le serveur, par l'intermédiaire du module 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 style `http://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 vers `http://nom-serveur/foo/nom-rep/`.

DirectoryIndex
Liste des fichiers ressources à rechercher lorsque le client envoie une requête pour un répertoire
DirectoryIndex disabled | url locale [url locale] ...
DirectoryIndex index.html
server config
virtual host
directory
.htaccess
Indexes

La directive DirectoryIndex 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'option `Indexes` est définie, le serveur générera son propre listing du répertoire.

# Exemple

DirectoryIndex index.html

Avec cette configuration, une requête pour l'URL `http://mon-serveur/docs/` renverrait au client la ressource `http://mon-serveur/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 fichiers `index.html` ou `index.txt` n'existe dans le répertoire considéré.

La spécification du seul argument "disabled" empêche mod_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".

DirectorySlash
Activation/Désactivation de la redirection "slash de fin"
DirectorySlash On|Off
DirectorySlash On
server config
virtual host
directory
.htaccess
Indexes
Disponible depuis le version 2.0.51 d'Apache

La directive DirectorySlash permet de déterminer si mod_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, mais en ajoutant un slash de fin, et ceci pour plusieurs bonnes raisons :

- La requête de l'utilisateur contiendra finalement l'URL canonique de la ressource
- mod_autoindex
  fonctionnera correctement. Comme il n'indique pas le chemin dans le lien, le chemin de l'URL serait incorrect.
- La directive DirectoryIndex n'est évaluée que pour les répertoires se terminant par un slash.
- Les références à des URLs relatives dans les pages html fonctionneront alors correctement.

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 /un/chemin>
DirectorySlash Off
SetHandler un-gestionnaire
</Location>

# Avertissement de sécurité

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 directive DirectoryIndex a pour valeur une ressource valide (par exemple `index.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 fichier `index.html` ; par contre, une requête sans slash de fin afficherait un listing du contenu du répertoire.

FallbackResource
Définit une URL par défaut pour les requêtes qui ne ciblent aucun fichier
FallbackResource url-locale
Aucune - httpd renvoie un code d'erreur 404 (Not Found)
server config
virtual host
directory
.htaccess
Indexes

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 par `non-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éral mod_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.

Pour un URI intermédiaire tel que http://example.com/blog/, cet URI intermédiaire doit être spécifié en tant que url-locale :

<Directory /web/example.com/htdocs/blog>
FallbackResource /blog/index.php
</Directory>