Gibt man in der Adresszeile des Browsers nur den Pfad ohne einen Dateinamen an, suchen Webserver i. d. R. eine Standarddatei im Verzeichnis, die sie aufrufen und ausgeben können. Die Standarddateien tragen meist die Namen index.html, index.htm, index.php, default.html, default.htm, default.php.
Gibt es im Verzeichnis keine dieser Standarddateien, zeigt beispielsweise der Apache-Webserver stattdessen ein Listing des Verzeichnisinhalts an.
Diese Verzeichnisauflistung ist mehr als unschön! Sie legt die Innereien der Webseite offen und plötzlich haben Besucher Zugriff auf Dateien, die sie gar nichts angehen.
Doch schon der Umstand, dass merkwürdige Informationen im Browser zu sehen sind, ist nicht besonders hilfreich, wenn es darum geht, zufriedene Besucher auf einer Webseite zu halten.
Was also tun? Die Lösung heißt: Abschalten der Verzeichnisauflistung! Aber wie?
Es gibt unterschiedliche Ansätze.
Alle drei Lösungen stellen wir Ihnen hier vor.
Manche Besucher möchten mit der verkürzten Pfadeingabe Tipparbeit sparen. Sie haben häufig die Erfahrung gemacht, dass dann die Hauptseite dieses Bereichs (des Unterverzeichnisses) angezeigt wird. Das könnte für alle Webentwickler den folgenreichen Grund liefern, in jedem Verzeichnis die Hauptdatei index.html oder index.php (usw.) zu nennen.
Für den Besucher wird es dadurch einfacher, für den Webentwickler allerdings deutlich schwieriger: Zahllose, gleichnamige Dateien erschweren die Übersicht und die Pflege der Seite! Wir empfehlen Ihnen deshalb, in Unterverzeichnissen keine Index-Dateien zu legen, wenn es nicht einen wichtigeren Grund dafür gibt.
Andere Besucher kennen die Nachlässigkeit der Entwickler und suchen mit der Pfadeingabe gezielt nach der Möglichkeit, die Verzeichnisstruktur sichtbar zu machen. Solche Zeitgenossen haben nicht selten einen gesteigerten »Forscherdrang«. Ihre Seiten sollten aber zum Betrachten anregen, nicht zum Forschen oder gar zum Manipulieren von Inhalten. Fangen Sie die Verzeichnisauflistung also ab, wenn es nötig ist.
Viele Entwickler verbreiten im Web die Lösung, einfach in jedes Verzeichnis eine leere index.html-Datei zu kopieren, die mit nichts verlinkt ist. Wir bleiben dabei: Auch leere Index-Dateien erschweren die Übersicht, erst recht, wenn ihnen von außen nicht anzusehen ist, ob sie eine inhaltliche oder nur die organisationstechnische Bedeutung besitzen, die Verzeichnisauflistung zu unterdrücken. Insbesondere die Vermischung beider Anwendungsfälle macht die Pflege der Website nicht leichter.
Wenn Sie schon diesen Weg gehen, dann machen Sie es bitte richtig! Reservieren Sie spezielle Namen für die Standarddateien, damit Sie ihnen gleich von außen ansehen, dass sie keine inhaltliche Bedeutung in Ihrer Webseite haben, und damit Sie keine Konflikte in der Webentwicklung bekommen.
Arbeiten Sie mit den Dateinamen index.html oder index.php für inhaltlich relevante Index-Dateien und verwenden Sie den Namen default.html für leere Dateien, die eine Verzeichnisauflistung unterdrücken sollen oder für URL-Umlenkung verwendet werden müssen.
Wenn beide Dateien im selben Verzeichnis vorkommen, also eine index.php und eine default.html, wird der Webserver zunächst die Datei index.php aufrufen. Es gibt eine Rangordnung der Dateinamen, die Sie für Ihre Zwecke in diesem Fall wunderbar ausnutzen können.
Nun können Sie tatsächlich in jedes Verzeichnis eine leere Datei default.html kopieren und Sie brauchen sie nicht löschen, wenn später eine index.html- oder index.php-Datei im Verzeichnis angelegt wird.
Der richtige Ort, die Verzeichnisauflistung zu unterdrücken, ist die Datei /.htaccess. Hier lässt sich steuern, wie der Server reagieren soll, wenn bestimmte Ereignisse eintreten. Und das geht in drei Schritten so:
Fügen Sie in der Datei /.htaccess die folgende Zeile ein:
Options -Indexes
Das war es auch schon! Ganz einfach. Eine Textzeile, zwei Wörter, ein Ort der Pflege. Keine umständliche Dateien-Kopiererei und keine aufgeblähten Dateistrukturen in Ihrer Webseite!
Jetzt allerdings behandelt der Server den Aufruf eines Pfades ohne Dateinamen, in dem keine Standarddatei zu finden ist, wie einen unautorisierten Zugriff: Er meldet den Statuscode 403 - Forbidden und gibt eine Standardfehlerseite mit der entsprechenden Meldung aus.
Schreiben Sie deshalb in Ihre /.htaccess-Datei eine zweite Zeile:
Options -Indexes
ErrorDocument 403 /error403.php
Entwickeln Sie nun ein eigenes ErrorDocument, also eine normale HTML-Seite, die angezeigt werden soll, wenn der Statuscode 403 auftritt. Unser obiges Beispiel geht davon aus, dass Sie die Datei error403.php nennen und im Wurzelverzeichnis Ihrer Webseite (»/«) ablegen.
Selbstverständlich können Sie die Datei benennen, wie immer sie wollen. Achten Sie aber darauf, dass Sie in der Datei /.htaccess hinter dem Funktionswert ErrorDocument als zweiten Parameter nach der Statuscode-Nummer immer einen absoluten Dateipfad beginnend ab dem Wurzelverzeichnis (»/«) bis in das Zielverzeichnis hinein angeben, in dem Ihr ErrorDocument tatsächlich liegt.
Der Statuscode 403 (»forbidden«; Zugriff verboten) meint, dass ein unautorisierter Zugriff auf eine geschützte Datei stattgefunden hat. Wenn Sie Verzeichnisse in Ihrer Webseite mit einem Passwort schützen, wird ein unautorisierter Zugriff entsprechend quittiert.
Durch die Angabe Options -Indexes in der Datei /.htaccess werden die Verzeichnisse systemseitig gegen Indexauflistung geschützt.
Ihre Status-403-Umleitung wirkt sich auf alle unerlaubten Zugriffe in Ihrer Webseite aus!
Das sollten Sie wissen.
Der Statuscode 404 (»not found«) meint: Datei nicht gefunden. Technisch liegt genau das vor, wenn es in einem Pfad keine Standarddatei (index.html usw.) gibt, und der Aufruf nur mit dem Pfadnamen ausgeführt wurde. Es ist deshalb sinnvoll, dem Benutzer die Meldung »404 - Datei nicht gefunden« zu liefern anstelle des »403 - Forbidden«. Normale Besucher können mit Fehler 403 meist nichts anfangen, sie benötigen die Information nicht und es würde sie nur verwirren.
Manche Host-Provider haben ihre Webserver von vornherein so eingestellt, dass die Indexauflistung zu einem Error 404 führt. Das finden wir gut! Webentwickler müssen allerdings ausprobieren, wie ihre Entwicklungs-, Test-, und Produktionsserver tatsächlich reagieren. Ihr persönlicher http://localhost kann anders eingestellt sein, als der Webserver Ihres Host-Providers!
Geben Sie also Ihren Besuchern die Nachricht »404 - Datei nicht gefunden« mit auf den Weg. Alles, was Sie dafür tun müssen ist
Options -Indexes
ErrorDocument 403 /error404.php
ErrorDocument 404 /error404.php
Beide Statuscodes werden auf das selbe ErrorDocument umgeleitet!
Wie Sie ein sinnvolles ErrorDocument 404 erstellen, besprechen wir ausführlich in unserem Tutorial ErrorDocument 404 mit PHP-Mailer.
Wir halten es für nötig,
Sollte die Unterdrückung der Verzeichnisauflistung erforderlich sein, sehen wir zwei geeignete Verfahren:
Für den zweiten Fall halten wir es für sinnvoll,
Viel Spaß!