Запретить каталогизацию с помощью htaccess

У меня есть папка, например: /public_html/Davood/и слишком много подпапок в папке, например: /public_html/Davood/Test1/, /public_html/Davood/Test1/Test/, /public_html/Davood/Test2/...

Я хочу добавить файл htaccess в /public_html/Davood/ Отклонить каталог Directory In /Davood И подпапки, это возможно?

8 ответов

Решение

Опции -Indexes должны работать, чтобы предотвратить списки каталогов.

Если вы используете файл.htaccess, убедитесь, что у вас есть хотя бы параметр "allowoverride options" в вашем основном конфигурационном файле apache.

Попробуйте добавить это к .htaccess файл в этом каталоге.

Options -Indexes

Это имеет больше информации.

Если Options -Indexes не работает, как предложил Брайан Дрюри, вы можете написать рекурсивный метод для создания пустых файлов index.php.

Поместите это в вашу базовую папку, которую вы хотите защитить, вы можете назвать ее как угодно (я бы порекомендовал 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);
            }
        }
    }
}

?>

Эти пустые файлы index.php можно легко удалить или перезаписать, и они сохранят ваши каталоги от списка.

Для отображения Запрещенной ошибки включите эти строки в ваш файл.htaccess:

Options -Indexes 

Если мы хотим проиндексировать наши файлы и показать их с некоторой информацией, используйте:

IndexOptions -FancyIndexing

Если мы хотим, чтобы какое-то конкретное расширение не показывалось, то:

IndexIgnore *.zip *.css

Опции -Индексы у меня отлично работают,

здесь .htaccess файл:

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


   ....etc stuff

</IfModule>

До:

После:

Есть два способа:

  1. используя.htaccess: Options -Indexes

  2. создать пустой index.html

Options -Indexes

Я должен попытаться создать.htaccess файл, текущий каталог, который я хочу, чтобы запретить список каталогов. Но, извините, я не знаю о рекурсивном коде.htaccess.

Попытайся.

Согласен что

Options -Indexes

Должен работать, если основной сервер настроен на разрешение переопределений параметров, но если нет, то все файлы из списка будут скрыты (поэтому каждый каталог будет пустым):

IndexIgnore *

Опции -Indexes возвращает ошибку 403 для защищенного каталога. Такое же поведение может быть достигнуто с помощью следующего перенаправления в htaccess:

RedirectMatch 403 ^/folder/?$ 

Это вернет запрещенную ошибку для example.com/folder/.

Вы также можете использовать mod-rewrite, чтобы запретить запрос к папке.

RewriteEngine on

RewriteRule ^folder/?$ - [F]

Если ваш htaccess находится в папке, которую вы собираетесь запретить, измените шаблон RewriteRule с ^folder/?$ На ^ $.

Другие вопросы по тегам