Wie deaktiviere ich das Durchsuchen von Verzeichnissen?

245

Ich möchte das Durchsuchen von Verzeichnissen im Ordner / galerias und in allen Unterverzeichnissen deaktivieren

Index von / galerias / 409

* Parent Directory
* i1269372986681.jpg
* i1269372986682.jpg
* i1269372988680.jpg
arthurprs
quelle
2
Sie erwähnen dies im Film "The Social Network" youtu.be/BPazh2kDdvA?t=1m49s
Daniel L. VanDenBosch

Antworten:

420

Erstellen Sie eine .htaccess-Datei mit der folgenden Zeile:

Options -Indexes

Das ist eine Option. Eine weitere Option ist das Bearbeiten Ihrer Apache-Konfigurationsdatei.

Dazu müssen Sie es zunächst mit dem folgenden Befehl öffnen:

vim /etc/httpd/conf/httpd.conf

Suchen Sie dann die Zeile: Options Indizes FollowSymLinks

Ändern Sie diese Zeile in: Optionen FollowSymLinks

Speichern und beenden Sie zuletzt die Datei und starten Sie den Apache-Server mit folgendem Befehl neu:

sudo service httpd restart

(Sie haben einen Leitfaden mit Screenshots hier .)

Stimpie
quelle
14
Dies funktioniert sogar in einem <Directory> oder <Location> in einer tatsächlichen .conf-Datei
chrismarx
1
@chrismarx In welche .conf-Datei würde ich sie einfügen? .htaccess scheint auf meinem Server nicht aktiviert zu sein, und ich habe gelesen, dass es besser ist, es trotzdem nicht zu verwenden. Ich habe jedoch Zugriff auf alle Serverdateien, da es sich um ein vps handelt.
Charles John Thompson III
1
Ich bin bei derselben Frage festgefahren. Ich habe die .htaccess-Datei mit dem Code zum selben Verzeichnis wie meine Webseite hinzugefügt, aber es wird mir immer noch eine Warnung zum Durchsuchen des Verzeichnisses angezeigt. Mache ich etwas falsch?
Randy Gilman
10
Beachten Sie, dass dies .htaccessmöglicherweise deaktiviert ist. Bitte überprüfen Sie die AllowOverrideRichtlinie. Wenn es auf eingestellt ist None, .htaccessist es ausgeschaltet. Sie können es durch Einstellen einschalten AllowOverride All. Genauer gesagt Allbedeutet dies alle Apache-Richtlinien.
Julian
2
Wenn Sie die Kontrolle über die http.conf haben, tun Sie es besser dort. Es gibt einen Performance-Hit mit htaccess
Itay Moav-Malimovka
298

Der beste Weg, dies zu tun, ist es mit dem Webserver Apache2 zu deaktivieren. In meinem Ubuntu 14.X - offene /etc/apache2/apache2.confÄnderung von

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

zu

<Directory /var/www/>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

Starten Sie dann Apache neu durch:

sudo service apache2 reload

Dadurch wird die Verzeichnisliste für alle Ordner deaktiviert, die Apache2 bedient.

Dung
quelle
11
'sudo service apache2 reload ' wird ausreichen!
Doctorlai
2
@ Jay Ich habe auch "Options -indexes" ausprobiert, aber Apache hat kein Nachwort gestartet. Ich verwende die Serverversion: Apache / 2.4.18 (Ubuntu). Die Verwendung von "Options FollowSymLinks" funktionierte jedoch gemäß der Antwort von Dung. Ich bin nur neugierig, welche Version von Apache und Betriebssystem Sie ausführen? Vielleicht ist es eine Versionssache?
MikeyE
@ Jay @ MikeyE Gleich hier; Apache würde nicht mit-Indexes
Crimbo
1
@ Jay @ MikeyE Apache scheint neu zu laden / neu zu starten, wenn Sie entfernenFollowSymLinks
Crimbo
2
Das Ausführen apachectl configtestnach dem Hinzufügen Options -Indexes FollowSymLinkszu httpd.conf gibt den folgenden Fehler aus: "Entweder müssen alle Optionen mit + oder - beginnen, oder es kann keine Option geben." Daher wird es funktionierenOptions -Indexes +FollowSymLinks
John T.
45

Abgesehen von den beiden oben genannten Methoden (bearbeiten Sie /etc/apache2/apache2.conf oder fügen Sie Optionen -Indexe in die .htaccess-Datei ein), gibt es hier eine andere

a2dismod autoindex

Starten Sie anschließend den Apache2-Server neu

sudo service apache2 restart
Doctorlai
quelle
4
Sie können a2dismod -f autoindexfür die nicht blockierende Befehlsausführung verwenden.
17онстантин Ван
Schöne nukleare Option! Dies funktioniert für AliasOrdner und jeden anderen von Apache bereitgestellten Pfad.
kontextify
Sollte ich mir der Nebenwirkungen bewusst sein?
Naresh Kumar
28

Bearbeiten / Erstellen Sie eine .htaccessDatei /galeriasmit diesem:

Options -Indexes

Das Durchsuchen von Verzeichnissen wird vom Modul mod_autoindex bereitgestellt .

Álvaro González
quelle
-Indexe im Stammverzeichnis funktionieren nicht, in apache2.4.33 musste ich die Antwort von @Sarvar Nishonboyev verwenden
Felipe Valdes
1
@FelipeValdes Bitte lesen Sie sowohl die Frage als auch meine Antwort sorgfältig durch. Es handelt sich nicht um ein Stammverzeichnis, sondern um ein Unterverzeichnis, und es wurde angefordert, dass es in einer .htaccessDatei ausgeführt werden kann (was nicht die leistungsfähigste Methode ist, aber häufig die einzige Option in gemeinsam genutzten Hosting-Konten oder mit ausgelasteten Systemadministratoren).
Álvaro González
23

Sie können eine leere aufgerufene Datei index.htmlin jedes Verzeichnis einfügen, das nicht aufgelistet werden soll. Dies hat mehrere Vorteile:

  • Es erfordert (normalerweise) keine Konfiguration auf dem Server.
  • Es funktioniert auch dann weiter, wenn der Serveradministrator beschließt, "AllowOverride None" in der Serverkonfiguration zu verwenden. (Wenn du benutzt.htaccess Dateien verwenden, kann dies zu zahlreichen Meldungen "Fehler 500 - Interner Serverfehler" für Ihre Benutzer führen!).
  • Außerdem können Sie Ihre Dateien wieder von einem Server auf den nächsten verschieben, ohne sich mit der Apache-Konfiguration herumschlagen zu müssen.

Theoretisch könnte die automatische Indizierung durch eine andere Datei ausgelöst werden (dies wird durch die DirectoryIndexOption gesteuert ), aber ich habe dies in der realen Welt noch nicht erlebt .

Martin JH
quelle
Kopf hoch! Dies funktioniert möglicherweise nur mit index.htmlder primär definierten DirectoryIndex-Direktive .
Nyedidikeke
18

Eine wichtige Sache beim Einrichten eines sicheren Apache-Webservers ist das Deaktivieren des Verzeichnis-Browsings. Standardmäßig ist diese Funktion in Apache aktiviert. Es ist jedoch immer eine gute Idee, sie zu deaktivieren, es sei denn, Sie benötigen sie wirklich. Öffnen Sie die Datei httpd.conf im Apache-Ordner und suchen Sie die folgende Zeile:

Options Includes Indexes FollowSymLinks MultiViews

Entfernen Sie dann die Wortindizes und speichern Sie die Datei. Starten Sie Apache neu. Das ist es

Sarvar Nishonboev
quelle
1
Perfekt. Deaktivieren Sie es maschinenweit. Warum sollte dies standardmäßig aktiviert sein, ich habe keine Ahnung ...
eduncan911
1
Dies funktionierte für mich unter Ubuntu (apache2.conf), aber .htaccess Options -Indexes nicht.
Danniel Little
Dies funktionierte für mich unter Ubuntu (/etc/apache2/apache2.conf), aber .htaccess-Optionen -Indexe nicht.
user2875289
5

Wenn Sie Ihre httpd.conf-Datei ändern möchten, um dieses Problem zu lösen, und mehrere Options-Direktiven haben, müssen Sie vor jeder Direktive ein - oder ein + hinzufügen. Beispiel:

Optionen -Indexe + FollowSymLinks

George
quelle
3

Dies ist keine Antwort, nur meine Erfahrung:

Auf meinem Ubuntu 12.04 apache2 habe Indexesich weder in apache2.conf noch in httpd.conf gefunden, zum Glück habe ich es in gefunden sites-available/default. Nach dem Entfernen wird keine Verzeichnisliste mehr angezeigt. Muss es vielleicht tun sites-available/default-ssl.

Paket
quelle
2

Öffnen Sie Ihre .htaccess-Datei und geben Sie den folgenden Code ein

Options -Indexes

Stellen Sie sicher, dass Sie die EINGABETASTE (oder die EINGABETASTE, wenn Sie einen Mac verwenden) drücken, nachdem Sie die Wörter "Optionen - Indizes" eingegeben haben, sodass die Datei mit einer leeren Zeile endet.

zish
quelle
2

Fügen Sie dies in Ihre .htaccess-Datei ein:

Options -Indexes

Wenn es aus irgendeinem Grund nicht funktioniert, versuchen Sie dies in Ihrer .htaccess-Datei:

IndexIgnore *
زياد
quelle
1

Um die Antwort von @ GauravKachhadiya zu vervollständigen:

IndexIgnore *.jpg

bedeutet "Nur JPG- Erweiterungsdateien vor der Indizierung verbergen" .

Die IndexIgnore-Direktive verwendet Platzhalterausdrücke, um sie mit Verzeichnissen und Dateien abzugleichen.

  • Als Sternzeichen entspricht es allen Zeichen in einer Zeichenfolge, z. B.: foo oder foo.extension. Im folgenden Beispiel wird die Verzeichnisliste deaktiviert. Im Index werden keine Dateien oder Verzeichnisse angezeigt:

    IndexIgnore *

Oder wenn Sie räumliche Dateien in der Verzeichnisliste ausblenden möchten, können wir verwenden

IndexIgnore *.php

* .php => entspricht einer Zeichenfolge, die mit einem beliebigen Zeichen beginnt und mit .php endet

Im obigen Beispiel werden alle Dateien ausgeblendet, die mit .php enden

starkeen
quelle
0

Versuchen Sie dies in .htaccess:

IndexIgnore *.jpg
Gaurav Kachhadiya
quelle
Dies schien für mich keine Wirkung zu haben. Was soll es tun?
Intcreator