Pimp my Directory Index: Schönere Verzeichnis-Listings mit Apache

Wer Dateien oder Downloads im Web bereitstellt, tut das heutzutage meist mit Dropbox oder einem anderen Anbieter für Cloud-Speicher. Dabei ist es eigentlich auch sehr einfach möglich, mit der eigenen Website bzw. mit dem Webserver Apache ein Verzeichnis mit Dateien im Web freizugeben. Wenn man dieses Verzeichnis dann z.B. noch per WebDAV auf dem eigenen Rechner einbindet, hat man eine einfache und relativ komfortable „File Sharing“-Lösung, die auch weniger erfahrene Nutzer bedienen können und die in Sachen Datenschutz unbedenklich ist.

Apache Directory Index ohne Anpassungen
Ohne Anpassungen sieht ein Directory Index ziemlich „old-schoolig“ aus

DirectoryIndex per .htaccess aktivieren

Die Funktion zur Anzeige von Verzeichnis-Listings sollte bei einem Webhoster aus Sicherheitsgründen standardmäßig deaktiviert sein. Wer ein leeres Verzeichnis im Browser aufruft, erhält dann vom Apache eine „403 Forbidden“ Fehlermeldung. Zum Aktivieren des Directory-Listings erstellt man im entsprechenden Verzeichnis eine .htaccess Datei mit folgendem Inhalt

Options +Indexes

Zusätzlich müssen ggf. die Verzeichnis-Rechte für den Apache-User so angepasst werden, dass er den Inhalt des Verzeichnisses auflisten kann:

chmod 755 meinverzeichnis

Hinweis: Sollte die Ausgabe des Directory-Listings per default aktiv sein und Apache keine entsprechende 403 Fehlermeldung ausgeben, könnte das ein Hinweis auf eine mangelhaftes Sicherheitskonzept bei diesem Webhoster sein.

Security through Obscurity: Apaches Server-Signatur unterdrücken

Wenn wir schon beim Thema Sicherheit sind, dann folgt hier gleich noch ein wichtiger Hinweis: Apache hat die unangenehme Eigenschaft, unterhalb von Verzeichnis-Listings eine Signatur mit Informationen zur Server-Version und zu installierten Erweiterungen anzuzeigen. Solche Informationen sind einerseits für den regulären Website-Besucher völlig uninteressant, auf der anderen Seite stellen solche Angaben wertvolle Informationen für potentielle Angreifer dar. Die Anzeige der Signatur unterdrückt man daher am besten mit der folgenden Anweisung:

ServerSignature Off

Bestimmte Dateien ausblenden

Häufig gibt es Dateien, die in der öffentlichen Darstellung des Verzeichnisses im Web nicht erscheinen sollen. Ein Beispiel für solche Dateien ist z.B. die robots.txt, in der Zugriffsrechte von Suchmaschinen definiert sind. Um die Anzeige dieser Datei zu unterdrücken reicht es, die folgende Anweisung in der .htaccess-Datei zu ergänzen:

IndexIgnore robots.txt

Darstellung des Verzeichnis-Listings anpassen

Die Standard-Darstellung von Verzeichnis-Listings sieht beim Apache alles andere als gut aus. Bei solchen Datei-Listen fühlt man sich unwillkürlich an 90er-Jahre-Webdesign erinnert. Mit etwas Aufwand kann man aber ein individuelles Design mit ansprechender Optik erstellen. Zunächst passen wir schon aus Gründen der Usability die Spaltenbreite für den Dateinamen so an, dass der vollständige Dateiname angezeigt wird:

IndexOptions NameWidth=*

Weiterhin stellen wir mit der folgenden Anweisung die Darstellung des Verzeichnis-Listings auf eine XHTML-Tabelle ohne horizontale Linien (HR) um:

IndexOptions HTMLTable XHTML SuppressRules FoldersFirst

Die Option „FoldersFirst“ sorgt dabei dafür, dass Unterverzeichnisse in der Liste grundsätzlich vor Dateien erscheinen, so wie man das bei einem Verzeichnis-Listing erwarten würde.

Design-Anpassungen mit Hilfe von CSS

Nun können wir das Design dieser Tabelle relativ einfach über eine CSS-Datei anpassen. Die CSS-Datei selbst könnte z.B. so aussehen:

body {
    padding:10px;
}
h1,th,td {
    font-family: Calibri, Arial, sans-serif;
    font-size:15px;
}
h1 {
    font-size:20px;
    font-weight:bold:
    margin:20px 0;    
}
table {
    margin:10px 0;
    width:100%;
}
th {
    font-weight:bold;
    background-color: #F0F0F0;
    padding:5px;
}
td {
    padding:5px;
    border:1px solid #E0E0E0;
    border-width: 0 0 1px 0;
}
tr:hover td {
    background-color:#F8F8F8;
}
a {
    text-decoration:none;
    color:#800000;
    display:block;
}
a:hover {
    text-decoration:underline;
}

In der .htaccess-Datei müssen wir nun noch auf die CSS-Datei verweisen, damit die Formatierungen berücksichtigt werden:

IndexStyleSheet "/style.css"

Wichtig ist hier die Angabe mit absolutem Pfad, damit die CSS-Datei auch bei der Darstellung von Unterverzeichnissen korrekt eingebunden wird.

Apache Directory Index nach der Anpassung
Das Ergebnis: Apache Directory Index nach der Anpassung

Im Ergebnis erhalten wir ein Verzeichnis-Listing was (hoffentlich) optisch ansprechender und benutzbarer als das Original ist. Wer damit noch nicht zufrieden ist, findet in der offiziellen Apache-Dokumentation noch einige weitere Möglichkeiten z.B. zum Austauschen der Icons, für individuelle Überschriften und Footer und noch vielem mehr.

Eine Antwort auf „Pimp my Directory Index: Schönere Verzeichnis-Listings mit Apache“

  1. Danke für den nützlichen und leicht verständichen Artikel. Ich war eigentlich nur auf der Suche gewesen nach einer Möglichkeit, die Spaltenbreite in der Dateiliste so einzustellen, dass Dateinamen nicht abgeschnitten werden. Aber ich habe auch deine CSS-Datei mit ein paar Änderungen übernommen, und so sieht das Ganze doch schon wesentlich hübscher aus als in der Apache-Standardeinstelllung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.