nie zezwalaj na wyświetlanie katalogów za pomocą htaccess


105

Mam folder, na przykład: /public_html/Davood/ i zbyt wiele podfolder w folderze, na przykład: /public_html/Davood/Test1/, /public_html/Davood/Test1/Test/, /public_html/Davood/Test2/, ...

Chcę dodać plik htaccess do /public_html/Davood/odmowy DirectoryListing /Davoodi folderów podrzędnych, czy to możliwe?


4
Nie rozumiem, dlaczego Options All -Indexesnie zadziałało, jak w kilku odpowiedziach!
Fr0zenFyr

1
@ Fr0zenFyr to zależy od konfiguracji serwera WWW, jeśli AllowOverride Alldziała
DJafari

Odpowiedzi:



70

Spróbuj dodać to do .htaccesspliku w tym katalogu.

Options -Indexes

To zawiera więcej informacji.


Tak, myślałem - indeksuje wyłączone listy katalogów, zamiast tego blokuje całą zawartość z folderu ... Czy ktoś wie dlaczego?
Michael Fever

Wydaje mi się, że jest jakiś problem z konfiguracją serwera. Spróbuj włączyć rewritemoduł i ustawienie katalogu na AllowOverride All. Jeśli to wszystko już jest na miejscu, a to, co skomentowałeś, jest prawdą, to chyba po prostu mam zbyt dużo szczęścia, Options All -Indexesaby pracować nad każdym projektem na różnych serwerach.
Fr0zenFyr

35

Jeśli Options -Indexesnie działa tak, jak sugerował Bryan Drewery, możesz napisać metodę rekurencyjną do tworzenia pustych plików index.php.

Umieść to w swoim folderze podstawowym, który chcesz chronić, możesz nadać mu dowolną nazwę (polecam index.php)

<?php

recurse(".");

function recurse($path){
    foreach(scandir($path) as $o){
        if($o != "." && $o != ".."){
            $full = $path . "/" . $o;
            if(is_dir($full)){
                if(!file_exists($full . "/index.php")){
                    file_put_contents($full . "/index.php", "");
                }
                recurse($full);
            }
        }
    }
}

?>

Te puste pliki index.php można łatwo usunąć lub nadpisać, dzięki czemu Twoje katalogi nie będą wyświetlane.


8
Chociaż pusty plik nie jest tak wielkim problemem, lepszym rozwiązaniem może być użycie dowiązań symbolicznych , w ten sposób oszczędza trochę miejsca i musiałby zmodyfikować tylko 1 plik, gdyby zdecydował się wyświetlić jakiś jednolity komunikat zamiast pustej strony.
daalbert

19

Aby wyświetlić błąd zabroniony, umieść następujące wiersze w pliku .htaccess:

Options -Indexes 

Jeśli chcemy zindeksować nasze pliki i pokazać im jakieś informacje, użyj:

IndexOptions -FancyIndexing

Jeśli chcemy, aby jakieś rozszerzenie się nie wyświetlało, to:

IndexIgnore *.zip *.css

1
.httaccessczy .htaccess?
Naveen DA,

8

Opcje -Indeksy idealnie u mnie działają,

tutaj jest .htaccessplik:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes <---- This Works for Me :)
    </IfModule>


   ....etc stuff

</IfModule>

Przed : wprowadź opis obrazu tutaj

Po :

wprowadź opis obrazu tutaj


5

Istnieją dwa sposoby:

  1. używając .htaccess: Options -Indexes

  2. utwórz pusty index.html


3
Options -Indexes

Muszę spróbować utworzyć plik .htaccess w bieżącym katalogu, w którym chcę zablokować wyświetlanie indeksu katalogów. Ale przepraszam, nie wiem o rekurencyjnym kodzie .htaccess.

Spróbuj.


2

Zgodzić się, że

Options -Indexes

powinno działać, jeśli serwer główny jest skonfigurowany tak, aby zezwolić na nadpisywanie opcji, ale jeśli nie, spowoduje to ukrycie wszystkich plików na liście (więc każdy katalog będzie wyglądał na pusty):

IndexIgnore *

2

Opcje -Indexes zwraca zabroniony błąd 403 dla chronionego katalogu. To samo zachowanie można osiągnąć, używając następującego przekierowania w htaccess:

RedirectMatch 403 ^/folder/?$ 

Spowoduje to zwrócenie niedozwolonego błędu, na przykład.com/folder/ .

Możesz także użyć mod-rewrite, aby zabronić żądania folderu.

RewriteEngine on

RewriteRule ^folder/?$ - [F]

Jeśli twój htaccess znajduje się w folderze, którego zamierzasz zabronić, zmień wzorzec RewriteRule z ^ folder /? $ Na ^ $ .

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.