Index von einem Verzeichnis auslesen und auf einer Website einbinden?
Hallo, ich würde gerne auf meiner Website das Verzeichnis der Website einbinden, also ungefähr so wie das vom Windows Explorer auch gemacht wird wenn man einen Ordner im browser öffnet. Geht das überhaupt und wenn ja wie? Ich konnte nämlich leider nichts dazu im Internet fnden, auch wenn ich mir relativ sicher bin das es das gibt. Danke schonmal im voraus.
2 Antworten
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 2Schau dich nach bereits bestehenden Lösungen um. Wie diese:
- https://www.abeautifulsite.net/php-file-tree
- https://www.the-art-of-web.com/php/directory-list/ (hier würde ich allerdings kritisieren, dass der Autor kein valides HTML-Dokument erstellt - Doctype und title fehlen; Weiteres habe ich mir nun nicht angeschaut).
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 3Du 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
nein, nicht selbst gehostet, sondernüber manitu.de