Jak wyłączyć przeglądanie katalogów?


Odpowiedzi:


420

Utwórz plik .htaccess zawierający następujący wiersz:

Options -Indexes

To jest jedna opcja. Inną opcją jest edycja pliku konfiguracyjnego Apache.

W tym celu należy najpierw otworzyć go za pomocą polecenia:

vim /etc/httpd/conf/httpd.conf

Następnie znajdź wiersz: Opcje Indeksy FollowSymLinks

Zmień tę linię na: Opcje FollowSymLinks

Na koniec zapisz i zamknij plik, a następnie uruchom ponownie serwer Apache za pomocą tego polecenia:

sudo service httpd restart

(Trzeba przewodnika z screenów tutaj ).


14
Działa to nawet w <Katalog> lub <Lokalizacja> w aktualnym pliku
.conf

1
@chrismarx w którym pliku .conf chciałbym go umieścić? Wydaje się, że .htaccess nie jest włączony na moim serwerze i przeczytałem, że lepiej go nie używać. Mam jednak dostęp do wszystkich plików serwera, ponieważ jest to vps.
Charles John Thompson III

1
Utknąłem na tym samym pytaniu, dodałem plik .htaccess z kodem do tego samego katalogu, co moja strona internetowa, ale wciąż daje mi alert przeglądania stron internetowych. czy robię coś źle?
Randy Gilman,

10
Pamiętaj, że .htaccessmoże być wyłączone. Sprawdź AllowOverridedyrektywę. Jeśli jest ustawiony na None, to .htaccessjest wyłączony. Możesz go włączyć, ustawiając AllowOverride All. Mówiąc ściślej, Alloznacza wszystkie dyrektywy Apache.
Julian

2
Jeśli masz kontrolę nad http.conf, lepiej zrób to tam. Htaccess jest hitem wydajnościowym
Itay Moav -Malimovka

299

Najlepszym sposobem na to jest wyłączenie go za pomocą serwera Apache2. W moim Ubuntu 14.X - otwórz /etc/apache2/apache2.confzmianę z

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

do

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

następnie uruchom ponownie apache:

sudo service apache2 reload

Spowoduje to wyłączenie wyświetlania katalogu ze wszystkich folderów obsługiwanych przez apache2.


11
wystarczy „ przeładowanie sudo service apache2 ”!
doctorlai

2
@Jay Próbowałem także „Opcje -indeksy”, ale Apache nie chciał rozpocząć posłowie. Używam wersji serwera: Apache / 2.4.18 (Ubuntu). Jednak użycie opcji „FollowSymLinks” działało zgodnie z odpowiedzią Dunga. Jestem tylko ciekawy, jaką wersję Apache i systemu operacyjnego używasz? Może to kwestia wersji?
MikeyE,

@Jay @MikeyE To samo tutaj; Apache nie przeładuje się przy użyciu-Indexes
Crimbo

1
@Jay @MikeyE Apache wydaje się ponownie ładować / restartować, jeśli usunieszFollowSymLinks
Crimbo

2
Uruchomienie apachectl configtestpo dodaniu Options -Indexes FollowSymLinksdo httpd.conf wyrzuca następujący błąd: „Albo wszystkie opcje muszą zaczynać się od + lub -, albo żadna opcja nie może”. W związku z tym, co będzie pracować jestOptions -Indexes +FollowSymLinks
John T.

45

Oprócz wspomnianych dwóch metod (edycja /etc/apache2/apache2.conf lub dodanie opcji -Indeksy w pliku .htaccess), oto kolejna

a2dismod autoindex

Ponownie uruchom serwer apache2

sudo service apache2 restart

4
Możesz użyć a2dismod -f autoindexdo nieblokującego wykonania polecenia.
Константин Ван

Fajna opcja nuklearna! Działa to dla Aliasfolderów i każdej innej ścieżki obsługiwanej przez Apache.
kontextify

Czy powinienem wiedzieć o jakichkolwiek skutkach ubocznych?
Naresh Kumar

28

Edytuj / Utwórz .htaccessplik w /galeriasten sposób:

Options -Indexes

Przeglądanie katalogów zapewnia moduł mod_autoindex .


-Indeksy w katalogu głównym nie działają, w apache2.4.33 musiałem użyć odpowiedzi @Sarvara Nishonboyeva
Felipe Valdes

1
@FelipeValdes Proszę uważnie przeczytać zarówno pytanie, jak i moją odpowiedź. Nie mówimy o katalogu głównym, ale o podkatalogu, który został poproszony o wykonanie w .htaccesspliku (co nie jest najbardziej wydajnym sposobem, ale często jest to jedyna opcja na współdzielonych kontach hostingowych lub z zapracowanymi administratorami).
Álvaro González

23

Możesz umieścić pusty plik wywoływany index.htmlw każdym katalogu, którego nie chcesz umieszczać na liście. Ma to kilka zalet:

  • (Zwykle) wymaga zerowej konfiguracji na serwerze.
  • Będzie działać, nawet jeśli administrator serwera zdecyduje się użyć „AllowOverride None” w konfiguracji serwera. (Jeśli używasz .htaccessplików, może to prowadzić do wielu komunikatów „Błąd 500 - błąd wewnętrzny serwera” dla użytkowników!).
  • Pozwala także przenosić pliki z jednego serwera na drugi, bez konieczności bałaganu w konfiguracji apache.

Teoretycznie autoindeksowanie może zostać uruchomione przez inny plik (jest to kontrolowane przez DirectoryIndexopcję), ale jeszcze nie spotkałem tego w prawdziwym świecie.


Heads-up! Może to działać tylko z index.htmlpierwotnie zdefiniowaną dyrektywą DirectoryIndex .
nyedidikeke

18

Jedną z ważnych rzeczy na temat ustawiania bezpiecznego serwera WWW Apache jest wyłączenie przeglądania katalogów. Domyślnie apache ma włączoną tę funkcję, ale zawsze warto ją wyłączyć, chyba że naprawdę potrzebujesz. Otwórz plik httpd.conf w folderze apache i znajdź wiersz, który wygląda następująco:

Options Includes Indexes FollowSymLinks MultiViews

następnie usuń Indeksy słów i zapisz plik. Uruchom ponownie apache. Otóż ​​to


1
Idealny. Wyłącz maszynę na szerokość. Dlaczego miałoby to być włączone domyślnie, nie mam pojęcia ...
eduncan911

1
To działało dla mnie na Ubuntu (apache2.conf), ale Opcje .htaccess -Indeksy nie.
Danniel Little

To działało dla mnie na Ubuntu (/etc/apache2/apache2.conf), ale opcje .htaccess -Indeksy nie.
user2875289

5

Jeśli zdecydujesz się zmodyfikować plik httpd.conf, aby rozwiązać ten problem, i masz wiele dyrektyw Opcje, musisz dodać znak - lub + przed każdą dyrektywą. Przykład:

Opcje -Indeksy + FollowSymLinks


3

To nie jest odpowiedź, tylko moje doświadczenie:

Na moim apache2 Ubuntu 12.04 nie znalazłem Indexesani w apache2.conf, ani httpd.conf, na szczęście go znalazłem sites-available/default. Po usunięciu nie wyświetla się teraz lista katalogów. Może trzeba to zrobić sites-available/default-ssl.


2

Otwórz plik .htaccess i wprowadź następujący kod w

Options -Indexes

Upewnij się, że naciśniesz klawisz ENTER (lub klawisz RETURN, jeśli używasz komputera Mac) po wprowadzeniu słów „Opcje -Indeksy”, aby plik kończył się pustą linią.


2

Dodaj to do pliku .htaccess:

Options -Indexes

Jeśli to nie działa z jakiegokolwiek powodu, spróbuj tego w pliku .htaccess:

IndexIgnore *

1

Aby wypełnić odpowiedź @ GauravKachhadiya:

IndexIgnore *.jpg

oznacza „ukryj tylko pliki rozszerzeń .jpg przed indeksowaniem.

Dyrektywa IndexIgnore używa wyrażeń wieloznacznych w celu dopasowania do katalogów i plików.

  • znak gwiazdy, pasuje do wszystkich znaków w ciągu, np .: foo lub foo.extension, w poniższym przykładzie wyłączymy katalogowanie katalogu, w indeksie nie pojawią się żadne pliki ani katalogi:

    IndexIgnore *

Lub jeśli chcesz ukryć pliki przestrzenne, na liście katalogów, możemy użyć

IndexIgnore *.php

* .php => dopasowuje ciąg, który zaczyna się na dowolny znak i kończy na .php

Powyższy przykład ukrywa wszystkie pliki z rozszerzeniem .php


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.