Directory Listing nicht möglich mit Apache

f.gruber

f.gruber

Eroberer
Hallo,

auf meinem lokalen Server (localhost) gelingt es mir einfach nicht, ein Directory Listing anzuzeigen.

Folgendes gebe ich in der Adressleiste des Browsers ein:

https://localhost oder http://localhost

Der Browser(Firefox) zeigt folgendes an:
Code:
Der Zugriff auf das angeforderte Verzeichnis ist nicht möglich.  Entweder ist kein Index-Dokument vorhanden oder das Verzeichnis  ist zugriffsgeschützt.

Dass kein Index-Dokument vorhanden ist, das ist beabsichtigt. Ich habe index.php umbenannt in _index.php, wel ich eben das Directory Listing prbieren wollte.
Bei vorhandener index.php wird die Seite angezeigt aber eben kein Directory Listing.

Im Logfile
/var/log/apache2/error_log sehe ich:

Code:
[autoindex:error] [client 127.0.0.1:43350] AH01276: Cannot serve directory /srv/www/htdocs/:
No matching DirectoryIndex (index.html,index.html.var,index.html,index.htm,index.php...) found,
and server-generated directory index forbidden by Options directive
und
Code:
[include:warn] [client 127.0.0.1:43350] AH01374:
mod_include: Options +Includes (or IncludesNoExec) wasn't set, INCLUDES filter removed:
/error/HTTP_FORBIDDEN.html.var
Dass das serverGenerated directory index durch eine Options directive deaktiviert sein soll, kann ich nicht nachvollziehen. Ich habe mittels grep den Ordner /etc/apache2 durchsucht und nirgends steht -Indexes

Ansonsten funktioniert der HTTP Server. Wenn z.B eine index.php vorhanden ist, wird diese ordnungsgemäß geladen.

Wo könnte der Fehler liegen?
Der Rechner läuft unter openSuse 15.6
 
Ich konnte das Problem lösen.
Ich hatte das Directory Listing in einer *.conf Datei in /etc/apache2/vhosts..d definiert
Code:
<Directory /srv/www/htdocs/>
    Options +Indexes
    AllowOverride None
    Require all denied
</Directory>
Das hat nicht funktioniert
Nun habe ich die <Directory> Direktive ersetzt durch eine <Location> Direktive und siehe da, es funktioniert!
Code:
<Location />
    Options +Indexes
    AllowOverride None
    Require all denied
</Location>
 
Es scheint, dass der Fehler auf eine falsche Konfiguration in deinem Apache-Server zurückzuführen ist, der das Directory Listing (Verzeichnisauflistung) blockiert. Der Fehler Cannot serve directory /srv/www/htdocs/: No matching DirectoryIndex found und server-generated directory index forbidden by Options directive zeigt an, dass der Apache-Server entweder keine Index-Datei finden kann (was du ja beabsichtigst) oder das Directory Listing aus Sicherheitsgründen deaktiviert ist.

Hier sind ein paar Dinge, die du überprüfen und anpassen kannst:

1. Aktivieren des Directory Listings

Um Directory Listings zu aktivieren, musst du sicherstellen, dass die richtige Options-Direktive in der Apache-Konfiguration gesetzt ist. In deinem Fall könnte die Option Indexes fehlen oder deaktiviert sein.

  1. Überprüfe die Apache-Konfiguration:Öffne die Apache-Konfigurationsdateien und suche nach Options und der Direktive Indexes.
    • Die Hauptkonfigurationsdatei ist in der Regel httpd.conf oder spezifische Konfigurationsdateien unter /etc/apache2/ (z.B. sites-available oder conf-enabled).
    • Stelle sicher, dass du die Indexes-Option in den entsprechenden Verzeichnissen aktivierst. Beispiel:
      apache

      Code:
      <Directory /srv/www/htdocs/>
          Options +Indexes
          AllowOverride None
          Require all granted
      </Directory>
    • Hierbei wird Indexes hinzugefügt, sodass Apache automatisch ein Verzeichnislisting erstellt, wenn keine Indexdatei vorhanden ist.
  2. Überprüfe die .htaccess-Datei:Falls du in deinem Verzeichnis eine .htaccess-Datei verwendest, stelle sicher, dass auch dort die Indexes-Option aktiviert ist:

    Code:
    Options +Indexes

2. Überprüfe die DirectoryIndex Direktive

Da du explizit keine Index-Datei wie index.php oder index.html verwenden möchtest, kannst du Apache mitteilen, dass keine Standard-Index-Datei verwendet werden soll. Überprüfe die DirectoryIndex-Direktive, um sicherzustellen, dass sie entweder leer oder mit den richtigen Dateien konfiguriert ist.

Beispiel:



Code:
DirectoryIndex disabled

Oder wenn du nur bestimmte Index-Dateien verwenden möchtest, gib die entsprechenden Dateinamen an:



Code:
DirectoryIndex index.html index.php

3. Fehlermeldung im Log analysieren

Die Fehlermeldung, die du im Apache-Log siehst, server-generated directory index forbidden by Options directive, bedeutet, dass der Server eine Verzeichnisauflistung nicht ausführen darf. Dies könnte durch die Option Indexes in der Options-Direktive blockiert sein. Das Hinzufügen von Options +Indexes wie oben beschrieben sollte dieses Problem beheben.

4. Überprüfen, ob mod_autoindex aktiviert ist

Stelle sicher, dass das Apache-Modul mod_autoindex aktiviert ist. Dieses Modul sorgt dafür, dass Apache das Directory Listing für Verzeichnisse generieren kann.

Du kannst dies überprüfen, indem du den folgenden Befehl ausführst:



Code:
apache2ctl -M | grep autoindex

Wenn mod_autoindex nicht in der Liste erscheint, kannst du es aktivieren:


Code:
sudo a2enmod autoindex
sudo systemctl restart apache2

5. Apache neu starten

Nachdem du die Konfiguration geändert hast, vergiss nicht, Apache neu zu starten:



Code:
sudo systemctl restart apache2

Fazit:​

  • Stelle sicher, dass die Options +Indexes in der Konfiguration aktiviert ist.
  • Überprüfe die .htaccess-Datei und stelle sicher, dass sie nicht die Verzeichnisauflistung blockiert.
  • Vergewissere dich, dass das Modul mod_autoindex aktiviert ist.
  • Überprüfe die DirectoryIndex-Direktive, um sicherzustellen, dass sie korrekt konfiguriert ist.
Hoffentlich hilft dir das weiter und das Directory Listing funktioniert danach wie erwartet!
 

Ähnliche Themen

Nginx als Reverse Proxy für Nextcloud und Emby

Probleme mit virtual hosts

Apache /var/www zu /home/ich/www wechseln

Samba 4.1.11 Domänen anbindung funktioniert nicht !!!

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Zurück
Oben