Index von einem Verzeichnis auslesen und auf einer Website einbinden?

2 Antworten

Option 1

Der Apache Webserver kann mit dem mod_autoindex-Modul (standardmäßig installiert) ein Verzeichnis auflisten, sofern es keine Datei gibt, die laut DirectoryIndex-Direktive als Fallback dienen könnte (üblicherweise sind das Dateien wie index.html, welcome.html, u.ä.).

Lege in dem Root-Verzeichnis, welches auflistbar sein soll, eine .htaccess-Datei an, mit diesem Inhalt:

Options +Indexes
DirectoryIndex disabled

Die Options-Direktive gibt an, dass das aktuelle Verzeichnis (mitsamt seinen Subverzeichnissen) auflistbar ist. Der DirectoryIndex wird auf disabled gesetzt, sodass keine automatische Herausgabe einer Datei (wie index.html) bei Request erfolgen kann. Alternativ könntest du auch disabled weglassen / einen Dateinamen aufführen, der nie in diesem Verzeichnis existieren wird.

Über die IndexOptions kannst du noch weitere Einstellungen vornehmen.

Wenn du ein Verzeichnis aus dieser Listung ausschließen möchtest, kannst du in diesem eine .htaccess-Datei ablegen, die ebenfalls die Options-Direktive aufruft. Nur wird in dem Fall das Plus mit einem Minus ersetzt.

Um die Explorer-Ansicht nun passend in deine Webseite einzubauen, könntest du in deinem HTML-Dokument ein iframe-Element einbinden, welches auf das Verzeichnis verweist.

Beispiel (mit Verweis auf das Verzeichnis, in dem diese HTML-Seite selbst liegt):

<!doctype html>
<title>Directory listing example</title>
<iframe src="./"></iframe>

Aus Sicherheitsgründen solltest du kontrolliert Elemente auflisten. Beachte, dass über das Listing Seitenbesucher nicht nur einen Einblick in deine Verzeichnisstruktur und genutzte Technologie bekommen, sondern auch Dateien herunterladen können.

Sollte die Konfiguration über die htaccess-Dateien nicht funktionieren, wende dich an den Server Provider.

Option 2

Schau dich nach bereits bestehenden Lösungen um. Wie diese:

Der Einbau eines Caching-Verhaltens wäre an dieser Stelle allerdings empfehlenswert. Im zweiten Artikel wird solches auf jeden Fall nicht implementiert. Wie das bei der ersten Lösung ist, habe ich nicht nachgeschaut.

Option 3

Du baust dir selbst eine TreeView-Ansicht zusammen. Ein statisches Beispiel findest du hier.

Die Dateistruktur / Dateien und Ordner müsstest du mit einem PHP-Skript ermitteln. Im Zuge dieses rekursiven Prozesses müsstest du das Markup entsprechend zusammenbauen.

Du könntest hierfür die schlecht dokumentierte RecursiveDirectoryIterator-Klasse nutzen oder dich mit diesem Beispiel-Code befassen.

Da eine rekursive Iteration ein aufwendiger Prozess ist, wäre es das beste, das Ergebnis in irgendeiner Form zu cachen.

Hallo

Wie läuft der Webserver?

Selbst gehostet/VServer?

Bei Apache2 könnte man einfach den Ordner angeben, in dem die Dateien angezeigt werden sollen.

MfG

ItachiDontDie 
Fragesteller
 22.07.2020, 15:29

nein, nicht selbst gehostet, sondernüber manitu.de

0