Serveur Apache HTTP Version 2.4
Description: | 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 |
---|---|
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
directive DirectoryIndex
fournie par le module mod_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 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/
.
Description: | Liste des fichiers ressources à rechercher lorsque le client envoie une requête pour un répertoire |
---|---|
Syntaxe: | DirectoryIndex
disabled | url locale [url locale] ... |
Défaut: | DirectoryIndex index.html |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Indexes |
Statut: | Base |
Module: | mod_dir |
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.
DirectoryIndex index.html
Avec cette configuration, une requête pour l'URL
http://example.com/docs/
renverrait au client la
ressource http://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 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".
Note :La définition de plusieurs directives
DirectoryIndex
au sein d'un même
contexte permet d'ajouter des ressources à rechercher plutôt
que de remplacer celle déjà définies :
# Exemple A: définit index.html comme page d'index, ainsi qu'index.php. <Directory /foo> DirectoryIndex index.html DirectoryIndex index.php </Directory> # Exemple B: identique à l'exemple A, mais avec une seule directive. <Directory /foo> DirectoryIndex index.html index.php </Directory> # Exemple C: pour remplacer la liste des pages d'index par une autre, # vous devez tout d'abord supprimer la première liste : dans l'exemple # suivant, il ne restera qu'index.php comme page d'index. <Directory /foo> DirectoryIndex index.html DirectoryIndex disabled DirectoryIndex index.php </Directory>
Description: | Définit une redirection externe pour les index de répertoires. |
---|---|
Syntaxe: | DirectoryIndexRedirect on | off | permanent | temp | seeother |
3xx-code
|
Défaut: | DirectoryIndexRedirect off |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | 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 directive
DirectoryIndex
qui est sélectionnée et
renvoyée de manière transparente au client. La directive
DirectoryIndexRedirect
permet de rediriger le
client vers une ressource externe.
DirectoryIndexRedirect on
Une requête pour http://example.com/docs/
se
solderait par une redirection temporaire vers
http://example.com/docs/index.html
si cette ressource
existe.
Description: | Activation/Désactivation de la redirection "slash de fin" |
---|---|
Syntaxe: | DirectorySlash On|Off |
Défaut: | DirectorySlash On |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Indexes |
Statut: | Base |
Module: | mod_dir |
Compatibilité: | 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 :
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ée
que 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 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.
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 ciblent aucun fichier |
---|---|
Syntaxe: | FallbackResource url-locale |
Défaut: | Aucune - httpd renvoie un code d'erreur 404 (Not Found) |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
AllowOverride: | Indexes |
Statut: | Base |
Module: | mod_dir |
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>