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

68

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

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

  • 3
    Я не понимаю, почему Options All -Indexes не работает, как в нескольких ответах!
  • 0
    @ Fr0zenFyr это зависит от конфигурации веб-сервера, если AllowOverride All , работает
Теги:
.htaccess

8 ответов

83
Лучший ответ

Параметры -Indexes должны работать для предотвращения списков каталогов.

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

  • 0
    это ничего не меняет
38

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

Options -Indexes

У этого есть дополнительная информация.

  • 1
    Я проверил это, но, к сожалению, не работает.
  • 0
    Да, я думал - Индекс отключил списки каталогов, вместо этого он блокирует весь контент из папки ... Кто-нибудь знает почему?
Показать ещё 1 комментарий
30

Если 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 могут быть легко удалены или перезаписаны, и они будут препятствовать тому, чтобы ваши каталоги были перечислимыми.

  • 7
    Хотя пустой файл не так уж и сложен, лучшим решением может быть использование символических ссылок , чтобы сэкономить немного места, и ему нужно будет изменить только 1 файл, если он решит отобразить какое-то унифицированное сообщение вместо пустой страницы.
  • 0
    Я не понимаю, почему Options All -Indexes не работает!
13

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

Options -Indexes 

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

IndexOptions -FancyIndexing

Если мы хотим, чтобы какое-то конкретное расширение не отображалось, тогда:

IndexIgnore *.zip *.css
  • 0
    .httaccess или .htaccess ?
1
Options -Indexes

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

Попробуйте.

0

Существует два способа:

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

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

0

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

RedirectMatch 403 ^/folder/?$ 

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

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

RewriteEngine on

RewriteRule ^folder/?$ - [F]

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

0

Согласитесь, что

Options -Indexes

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

IndexIgnore *

Ещё вопросы

Сообщество Overcoder
Наверх
Меню