Indexauflistung vermeiden

© Geschütztes Bildmaterial | Copyrighted Picture

Indexauflistung vermeiden

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.

Indexauflistung

Das unerwünschte Listing

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.

  • Lösung 1: Verzeichnisauflistung mit index.html vermeiden
  • Lösung 2: Auflistung mit default.html-Dateien unterdrücken
  • Lösung 3: Verzeichnisauflistung in der .htaccess unterdrücken

Alle drei Lösungen stellen wir Ihnen hier vor.

Lösung 1:
Verzeichnisauflistung mit index.html vermeiden

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.

Lösung 2:
Auflistung mit default.html-Dateien unterdrücken

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.

Unser Tipp

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.

Lösung 3:
Verzeichnisauflistung in der .htaccess unterdrücken

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:

  • Schritt 1: Indexauflistung abschalten
  • Schritt 2: Statuscode 403 abfangen
  • Schritt 3: Das eigene ErrorDocument 403

 

Schritt 1: Indexauflistung abschalten

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.

 

Schritt 2: Statuscode 403 abfangen

Schreiben Sie deshalb in Ihre /.htaccess-Datei eine zweite Zeile:

 
Options -Indexes
ErrorDocument 403 /error403.php
 

 

Schritt 3: Das eigene ErrorDocument 403

Beispielbild für die Anzeige eines error 403

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 HTTP-Statuscode 403

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.

HTTP-Status 403 gleich 404

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!

Verzeichnisauflistung auf ErrorDocument 404 umleiten

Beispielbild für die Anzeige eines error 404Geben Sie also Ihren Besuchern die Nachricht »404 - Datei nicht gefunden« mit auf den Weg. Alles, was Sie dafür tun müssen ist

  • entweder im ErrorDocument (in unserem Beispiel oben also in der Datei error403.php) als ausgegebenen Text Datei nicht gefunden anzeigen,
  • oder Sie haben bereits ein ErrorDocument, das den Statuscode 404 abfängt. In diesem Fall genügt es, in der Datei ./htaccess folgende Einträge vorzunehmen:
 
Options -Indexes
ErrorDocument 403 /error404.php
ErrorDocument 404 /error404.php
 

Beide Statuscodes werden auf das selbe ErrorDocument umgeleitet!

Weiterführender Hinweis

Wie Sie ein sinnvolles ErrorDocument 404 erstellen, besprechen wir ausführlich in unserem Tutorial LinkErrorDocument 404 mit PHP-Mailer.

Zusammenfassung

Wir halten es für nötig,

  • dass Sie unbedingt das Verhalten Ihrer Webserver bei Seitenaufrufen mit reinen Pfadnamen ohne Dateinamensangabe austesten!

Sollte die Unterdrückung der Verzeichnisauflistung erforderlich sein, sehen wir zwei geeignete Verfahren:

  • Entweder die Verwendung leerer default.html-Dateien, wenn für inhaltliche Index-Dateien in Verzeichnissen beispielsweise die Namen index.html oder index.php genutzt werden;
  • oder als besseres Verfahren das Abschalten der Verzeichnisauflistung (Indexauflistung) in der Datei /.htaccess mit Options -Indexes.

Für den zweiten Fall halten wir es für sinnvoll,

  • dem Benutzer solche Zugriffe mit einem »404 - File not found« (nicht mit einem 403) zu quittieren;
  • in jedem Fall die Fehlercodes 403 und 404 in der Datei /.htaccess auf eigene ErrorDocuments umzuleiten.

Viel Spaß!

Sabrina

Text | Grafik | Webdesign | Layout:

©by Reiner Makohl | Stilkunst.de
©by Sabrina | SABRINA CREATIVE DESIGN™