Anleitung

Directory Listing in WordPress deaktivieren (Apache und nginx)

1. Mai 2026 Aktualisiert am 01.05.2026

Wenn du eine Ordner URL deiner Seite aufrufst, etwa https://deinedomain.de/wp-content/uploads/2024/, passiert eines von drei Dingen. Du siehst eine leere weiße WordPress Seite (weil index.php übernimmt), du bekommst ein "403 Forbidden", oder es erscheint etwas, das aussieht wie ein FTP Browser: eine Liste aller Dateien im Ordner, inklusive Größe und Zeitstempel. Der dritte Fall ist genau das Problem, um das es hier geht.

Directory Listing (manchmal auch "Directory Browsing" oder "Directory Indexing" genannt) ist ein Webserver Feature, das automatisch einen HTML Index ausgibt, wenn im Ordner keine index.html oder index.php liegt. Auf einer statischen Seite ist das gelegentlich praktisch. Auf einer WordPress Seite ist es fast immer ein Datenleck. Diese Anleitung erklärt, was konkret nach außen sichtbar wird, warum das relevant ist, und wie du das Feature auf Apache, nginx und bei den verschiedenen Managed WordPress Hostern sauber abschaltest.

Was wird tatsächlich sichtbar, wenn Directory Listing aktiv ist?

Die meisten WordPress Ordner enthalten mindestens eine Datei, die für einen Angreifer, einen Wettbewerber oder schlicht einen neugierigen Besucher interessant ist. Die realistischen Worst Cases:

  • /wp-content/uploads/ enthält jede jemals hochgeladene Mediendatei, sortiert nach Jahr und Monat. Mit aktivem Listing sieht jeder PDFs, die zwar entlinkt, aber nie gelöscht wurden, Bildentwürfe, Kundendokumente und alle privaten Dateien, die ein Redakteur in der Annahme hochgeladen hat, eine "unauffällige URL" sei genug Schutz.
  • /wp-content/plugins/ verrät die exakte Liste der installierten Plugins, inklusive deaktivierter, aber nicht gelöschter. Das ist eine punktgenaue Schwachstellen Einkaufsliste für jeden Scanner.
  • /wp-content/backup/, /backups/, /wp-content/uploads/backups/ und ähnliche Ordner sind typische Ablageorte von Backup Plugins. Mit Listing werden komplette Datenbank Dumps und gezippte Seiten Backups direkt herunterladbar.
  • Theme Ordner enthalten oft alte Versionen der style.css, vergessene SCSS Dateien, versteckte Testseiten und Entwicklernotizen, die nie öffentlich werden sollten.
  • Stammverzeichnisse können wp-config.php.bak, Editor Swap Dateien (.swp), .git/ Verzeichnisse aus einem missglückten Deploy und ähnliche Aufräum Reste enthalten.

Die heiklen Dateien liegen typischerweise da, weil sie jemand schnell hochgeladen hat, sie später löschen wollte und es vergessen hat. Solange der Ordner seinen Inhalt nicht auflistet, findet sie auch niemand. In dem Moment, in dem Listing aktiviert ist, ist jede URL in diesen Ordnern einen Klick davon entfernt, von einer Suchmaschine indexiert oder von einem Scanner abgegrast zu werden.

Wie du prüfst, ob Directory Listing auf deiner Seite aktiv ist

Der schnellste Test dauert zehn Sekunden. Öffne folgende URLs in einem privaten Browserfenster:

  • https://deinedomain.de/wp-content/
  • https://deinedomain.de/wp-content/uploads/
  • https://deinedomain.de/wp-content/plugins/
  • https://deinedomain.de/wp-includes/

Was du sehen willst, ist eine 403 Forbidden Seite, oder im Fall von /wp-content/ eine leere weiße Seite (das ist die leere index.php von WordPress, die ihren Job macht). Was du nicht sehen willst, ist eine Liste von Dateien. Wenn du eine siehst, ist Listing für diesen Ordner aktiv. InspectWP prüft das bei jedem Scan ebenfalls und markiert betroffene Ordner im Sicherheits Bereich.

Option 1: Directory Listing auf Apache (und LiteSpeed) abschalten

Die zuständige Apache Direktive heißt Options. Der Wert Indexes aktiviert das Listing, ein Minus davor deaktiviert es. Trag folgende Zeile in die .htaccess im WordPress Wurzelverzeichnis ein, oberhalb der # BEGIN WordPress Marke:

Options -Indexes

Diese eine Zeile schaltet Listing für die komplette WordPress Installation in einem Rutsch ab. Sie gilt für jeden Ordner unterhalb des Document Roots, sofern keine spezifischere Regel sie tiefer im Baum überschreibt.

Falls dein Hoster Options in .htaccess komplett blockiert (manche Shared Hoster machen das aus Performance Gründen), bleiben dir zwei Auswege:

  1. Eine leere index.php oder index.html in jeden Ordner legen, den du absichern willst. WordPress macht das von Haus aus für /wp-content/, /wp-content/plugins/ und ein paar weitere, aber nicht für /wp-content/uploads/. Die leere Datei sorgt dafür, dass Apache sie ausliefert, statt den Ordner aufzulisten.
  2. Beim Hoster nachfragen, ob er die Options Direktive für deinen Account freischaltet. Die meisten Managed Hoster machen das auf Anfrage.

Der index.php Trick ist simpel, aber leicht zu vermasseln: du musst dran denken, die Datei in jeden neu erstellten Ordner zu legen, auch in die Jahres und Monatsordner, die WordPress automatisch für neue Uploads anlegt. Eine Webserver Regel hat dieses Problem nicht.

Option 2: Directory Listing auf nginx abschalten

Auf nginx wird das Verhalten über die autoindex Direktive gesteuert. Standardmäßig steht sie bei den meisten Installationen auf off, in einem Default nginx Setup gibt es das Problem also gar nicht. Ordner Aufrufe fallen einfach auf ein 403 durch, wenn keine Index Datei vorhanden ist.

Wenn Listing trotzdem an ist, hat es jemand bewusst eingeschaltet. Such in deiner nginx.conf, im server Block der Seite oder in eingebundenen conf.d Dateien nach autoindex on;. Entweder die Zeile entfernen oder ändern auf:

autoindex off;

Mit sudo nginx -t && sudo systemctl reload nginx nginx neu laden. Der nächste Ordner Request bekommt dann ein 403 statt einer Dateiliste.

Falls du nginx nicht selbst neu laden kannst (abgeschottetes Managed Hosting), funktioniert der index.php Trick aus dem Apache Abschnitt auch hier, weil nginx eine vorhandene Index Datei brav ausliefert, bevor es auf autoindex zurückfällt.

Option 3: Managed WordPress Hosting

Managed Hoster (Raidboxes, Kinsta, WP Engine, Cloudways, Pressable usw.) haben Directory Listing meist von Haus aus auf Server Ebene deaktiviert. Wenn auf so einem Host trotzdem Listing aktiv ist, ist ein kurzes Support Ticket der richtige Weg. Die haben Zugriff auf die zentrale nginx Config und ziehen die Sache in wenigen Minuten gerade. Auf einem Managed Host von innerhalb von WordPress drumherum zu basteln, lohnt sich selten.

Beachte, dass manche Hoster eine CDN Schicht davor haben (Cloudflare, KeyCDN, Bunny), die Ordner Requests cacht. Wenn du die Server Config änderst und trotzdem noch eine Dateiliste siehst, liefert das CDN eventuell eine gecachte Version aus. Cache für die betroffenen Pfade leeren und erneut testen.

Häufiger Fehler: wp-content/uploads mit eigener .htaccess absichern

In älteren Anleitungen taucht das Muster auf, eine separate .htaccess direkt in wp-content/uploads/ abzulegen, mit einer langen Liste von Regeln. Die Absicht ist richtig, die Nebenwirkungen sind aber unschön: je nachdem, was in den Regeln steht, hören Bild Uploads auf zu laden, Lazy Loading bricht oder PDFs werden unerreichbar. Wenn du nur Listing abschalten willst, reicht die einzelne Options -Indexes Zeile in der Root .htaccess. Sie wirkt rekursiv. Es braucht keine ordnerspezifischen Dateien, solange du keinen guten Grund dafür hast.

Was ist mit dem Verstecken vor Suchmaschinen?

Directory Listing zu deaktivieren verhindert, dass die Ordnerübersicht ausgeliefert wird. Es verhindert nicht, dass eine Suchmaschine einzelne Dateien im Ordner indexiert, sofern diese irgendwo im öffentlichen Web verlinkt sind. Wenn in wp-content/uploads/ sensible Dateien liegen, die nicht bei Google auftauchen sollen, ist das Löschen der Datei die einzig zuverlässige Antwort. noindex Meta Tags, X-Robots-Tag Header und robots.txt Einträge helfen bei der Auffindbarkeit, aber nur das Löschen garantiert, dass der Inhalt weg ist.

Die generelle Faustregel für den Uploads Ordner: lade dort nichts hoch, was du nicht auch auf der Startseite deiner Website akzeptieren würdest. Der Ordner ist von der Architektur her ein öffentliches Web Verzeichnis.

So prüfst du dein Setup

  1. Öffne https://deinedomain.de/wp-content/uploads/ in einem privaten Browserfenster. Erwartetes Ergebnis: eine 403 Forbidden Seite oder eine leere Seite (je nachdem, ob eine leere index.html drin liegt).
  2. Selbe Prüfung für die anderen Ordner, die du vorher gefunden hast (/wp-content/plugins/, Theme Ordner, eigene Upload Verzeichnisse).
  3. Wenn du noch eine Dateiliste siehst, ist die Änderung nicht aktiv. Prüf, ob du die richtige .htaccess bearbeitet hast (die im WordPress Wurzelverzeichnis, nicht die im übergeordneten Ordner) und leere alle Cache Schichten.
  4. Starte einen frischen InspectWP Scan. Der Check "Directory Listing aktiv" im Sicherheits Bereich sollte grün sein.

Die ganze Änderung ist eine einzige Zeile in der .htaccess auf Apache, oder eine einzelne Config Einstellung auf nginx. Fünf Sekunden Arbeit, und eine ganze Klasse von versehentlicher Datei Offenlegung ist vom Tisch. Auf jeder Seite einen Blick wert, auch wenn aktuell alles im Uploads Ordner unproblematisch ist. Der Schutz wirkt für die nächste Datei, die jemand in Eile hochlädt, nicht nur für die, die schon drin liegen.

Prüfe jetzt deine WordPress-Seite

InspectWP analysiert deine WordPress-Seite auf Sicherheitslücken, SEO-Probleme, DSGVO-Konformität und Performance — kostenlos.

Seite kostenlos analysieren