web-dev-qa-db-fra.com

Utilisation d'un fichier d'index dans tous les répertoires et sous-répertoires

J'ai un fichier index.php, qui traite le contenu d'un répertoire dans lequel il se trouve et restitue la sortie dans le navigateur.

Le problème est que la structure de répertoire qu’elle est supposée servir est plutôt complexe, avec de nombreux répertoires et sous-répertoires. Je n'ai pas envie de mettre une copie de index.php dans chaque sous-répertoire.

Je sais que je peux utiliser des liens symboliques sur les systèmes qui les prennent en charge, mais ce n’est pas du travail d’être humain de parcourir toute la hiérarchie et de placer des liens vers le fichier d’index en question si aucun autre n’est présent. En outre, tous les systèmes ne prennent pas en charge la liaison symbolique.

Existe-t-il une méthode pour indiquer au serveur Web (Apache, nginx, ..) que si un fichier d'index n'est pas présent dans un répertoire demandé, il doit utiliser le index.php spécifié situé ailleurs?

2
silverdr

Je comprends ce que vous demandez, mais je ne peux pas comprendre pourquoi vous auriez besoin d’un fichier index.php dans chaque répertoire (si les pratiques de programmation d’applications php typiques sont suivies).

Si vous devez faire référence au fichier racine index.php de chaque sous-répertoire, mod_rewrite est le moyen le plus simple au niveau du serveur. Comme vous le demandez peut-être, ce n'est pas indépendant du serveur, mais consultez cet article pour obtenir des exemples sur la manière de faire en sorte que le serveur fasse toujours référence au fichier index.php: https://stackoverflow.com/questions/8595964/redirect-all-traffic-to-index-php-using-mod-rewrite

1
JMC

Existe-t-il une méthode pour indiquer au serveur Web (Apache, nginx, ..) que, si un fichier d'index n'est pas présent dans un répertoire situé sous la racine du document, il doit utiliser le index.php spécifié situé ailleurs?

Oui, sur Apache, vous pouvez contrôler cela avec la directive DirectoryIndex dans votre configuration Apache (ou votre fichier .htaccess). Par exemple:

DirectoryIndex index.php /index.php

Lors de la demande d'un répertoire de système de fichiers, ceci servira soit index.php dans ce répertoire, s'il existe, sinon /index.php sera servi (index.php à la racine du document).

Nginx semble avoir une directive similaire appelée simplement index.
Référence: https://serverfault.com/a/402949/49157

0
MrWhite