web-dev-qa-db-fra.com

Comment puis-je créer un simple fichier index.html qui répertorie tous les fichiers / répertoires?

Nous utilisons un serveur Web qui n'autorise pas la liste des répertoires.

Il y a un répertoire spécifique dont j'aimerais autoriser la liste.

Comment créer un simple fichier HTML qui contiendra le contenu de ce répertoire?

28
David B

Vous pouvez soit: écrire une page de script côté serveur comme PHP, JSP, ASP.net, etc. pour générer dynamiquement ce HTML

ou

Configurez le serveur Web que vous utilisez (par exemple Apache) pour faire exactement cela automatiquement pour les répertoires qui ne contiennent pas de page d'accueil (par exemple index.html)

Spécifiquement dans Apache, lisez plus ici: Modifiez le httpd.conf: http://justlinux.com/forum/showthread.php?s=&postid=502789#post502789

ou ajoutez le mod autoindex: http://httpd.Apache.org/docs/current/mod/mod_autoindex.html

7
DuduAlul

Il existe suffisamment de raisons valables pour désactiver explicitement les index d'annuaire automatiques dans Apache ou d'autres serveurs Web. Ou, par exemple, vous souhaiterez peut-être inclure uniquement certains types de fichiers dans l'index. Dans de tels cas, vous pouvez toujours vouloir avoir un fichier index.html généré statiquement pour des dossiers spécifiques.

Ceci peut être facilement réalisé avec arbre - un utilitaire minimaliste disponible sur la plupart des distributions Linux (par exemple ubuntu/debian: Sudo apt install tree) et qui peut générer du texte brut, XML, JSON ou HTML.

Générez un index de répertoire HTML d'un niveau:

tree -H '.' -L 1 --noreport --charset utf-8 > index.html

N'incluez que des types de fichiers spécifiques qui correspondent à un modèle global, par exemple *.Zip des dossiers:

tree -H '.' -L 1 --noreport --charset utf-8 -P "*.Zip" > index.html

L'argument de -H est ce qui sera utilisé comme href de base, vous pouvez donc passer soit par un chemin relatif tel que . ou un chemin absolu à partir de la racine Web, tel que /files. -L 1 limite la liste au répertoire actuel uniquement.

Je voulais un générateur d'index que je pourrais styler comme je le souhaitais, donc j'ai fini par utiliser ce script - en plus d'avoir un style personnalisable, le script génèrera également récursivement le index.html fichier dans tous les sous-répertoires imbriqués.

37
ccpizza

Pour moi PHP est le moyen le plus simple de le faire:

<?php
echo "Here are our files";
$path = ".";
$dh = opendir($path);
$i=1;
while (($file = readdir($dh)) !== false) {
    if($file != "." && $file != ".." && $file != "index.php" && $file != ".htaccess" && $file != "error_log" && $file != "cgi-bin") {
        echo "<a href='$path/$file'>$file</a><br /><br />";
        $i++;
    }
}
closedir($dh);
?> 

Placez-le dans votre répertoire et définissez où vous souhaitez qu'il recherche dans le chemin $. La première instruction if masquera votre fichier php et .htaccess et le journal des erreurs. Il affichera ensuite la sortie avec un lien. Il s'agit d'un code très simple et facile à modifier.

24
ryryan

Avez-vous essayé de l'autoriser pour ce répertoire via .htaccess?

Options +Indexes

Je l'utilise pour certains de mes répertoires où la liste des répertoires est désactivée par mon fournisseur

2
Michael

Cela ne peut pas être fait avec du HTML pur.

Cependant, si vous avez accès à PHP sur le serveur Apache (vous avez marqué le post "Apache"), cela peut être fait facilement - voir le PHP = fonction glob Sinon - vous pourriez essayer Server Side Include - c'est une chose Apache, et je n'en sais pas grand-chose.

1
Michael Banzon