Как отключить просмотр каталогов?

172

Я хочу отключить просмотр каталогов из папки /galerias и всех подкаталогов

Индекс/galerias/409

* Parent Directory
* i1269372986681.jpg
* i1269372986682.jpg
* i1269372988680.jpg
  • 0
    Об этом они упоминают в фильме «Социальная сеть» youtu.be/BPazh2kDdvA?t=1m49s
Теги:
.htaccess

12 ответов

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

Создайте файл .htaccess со следующим:

Options -Indexes
  • 14
    Это даже работает в <Directory> или <Location> в реальном файле .conf
  • 1
    @ chrismarx, в какой файл .conf мне его поместить? Кажется, что .htaccess не включен на моем сервере, и я прочитал, что лучше его не использовать в любом случае. У меня есть доступ ко всем файлам сервера, хотя, как его VPS.
Показать ещё 6 комментариев
210

Лучший способ сделать это - отключить его с помощью web-сервера apache2. В моем Ubuntu 14.X - откройте /etc/apache2/apache2.conf изменение

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

к

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

затем перезапустите apache:

sudo service apache2 restart

Это отключит список каталогов из всей папки, в которой работает apache2.

  • 7
    У меня "Опции-Индексы" работает.
  • 10
    'sudo service apache2 reload ' будет достаточно!
Показать ещё 5 комментариев
25

Измените/создайте файл .htaccess внутри /galerias следующим образом:

Options -Indexes

Просмотр каталога обеспечивается модулем mod_autoindex.

  • 0
    - Индексы в корневом каталоге не работают, в apache2.4.33 мне пришлось использовать ответ @Sarvar Nishonboyev
  • 0
    @FelipeValdes Пожалуйста, внимательно прочтите вопрос и мой ответ. Мы говорим не о корневом каталоге, а о подкаталоге, и его попросили, чтобы его можно было выполнить в файле .htaccess (это не самый эффективный способ, но часто это единственный вариант в общих учетных записях хостинга или с занятыми системными администраторами).
Показать ещё 1 комментарий
23

Помимо вышеупомянутых двух методов (отредактируйте /etc/apache2/apache2.conf или добавьте Параметры -Indexes в файл .htaccess), вот еще один

a2dismod autoindex

Перезагрузите сервер apache2

sudo service apache2 restart
  • 3
    Вы можете использовать a2dismod -f autoindex для неблокирующего выполнения команд.
  • 0
    Отличный ядерный вариант! Это работает для папок Alias и любого другого пути, обслуживаемого Apache.
Показать ещё 1 комментарий
18

Вы можете поместить пустой файл с именем index.html в каждую директорию, которую вы не хотите перечислять. Это имеет несколько преимуществ:

  • Он (обычно) требует нулевой конфигурации на сервере.
  • Он будет работать, даже если администратор сервера решит использовать "AllowOverride None" в конфигурации сервера. (Если вы используете файлы .htaccess, это может привести к большому количеству сообщений об ошибке "Ошибка 500 - внутренняя ошибка сервера" для ваших пользователей!).
  • Он также позволяет перемещать файлы с одного сервера на другой, опять же, без необходимости связываться с конфигурацией apache.

Теоретически автоиндексирование может быть инициировано другим файлом (это контролируется опцией DirectoryIndex), но мне еще предстоит встретить это в реальном мире.

  • 0
    Это, безусловно, самый простой.
15

Одним из важных моментов в настройке безопасного веб-сервера apache является отключение просмотра каталогов. По умолчанию apache включает эту функцию, но всегда полезно отключить ее, если она вам не нужна. Откройте файл httpd.conf в папке apache и найдите строку, которая выглядит следующим образом:

Options Includes Indexes FollowSymLinks MultiViews

затем удалите слова "Индексы" и сохраните файл. Перезапустите apache. Что он

  • 0
    Не работает для меня
  • 0
    это сработало для меня
Показать ещё 4 комментария
3

Если вы решите изменить свой файл httpd.conf, чтобы решить эту проблему, и у вас есть несколько директив Options, то перед каждой директивой вы должны добавить a - или a+. Пример:

Параметры -Indexes + FollowSymLinks

3

Это не ответ, просто мой опыт:

На моем Ubuntu 12.04 apache2 не нашел Indexes в apache2.conf или httpd.conf, к счастью, я нашел его в sites-available/default. После его удаления теперь не отображается список каталогов. Может потребоваться сделать это для sites-available/default-ssl.

2

Откройте файл .htaccess и введите следующий код в

Options -Indexes

Убедитесь, что вы нажали клавишу ENTER (или клавишу RETURN, если используете Mac) после ввода слов "Параметры -Indexes", чтобы файл заканчивался пустой строкой.

1

Попробуйте это в своем коде:

IndexIgnore *
1

Завершить @GauravKachhadiya ответ:

IndexIgnore *.jpg

означает "скрывать только .jpg файлы расширений от индексирования.

Указатель IndexIgnore использует выражение подстановки для сопоставления с каталогами и файлами.

  • символ звезды, он соответствует любым символам в строке, например: foo или foo.extension, в следующем примере мы собираемся отключить список каталогов, никакие файлы или dirs не появятся в индексе

    IndexIgnore *

Или, если вы хотите скрыть пространственные файлы, в списке каталогов, мы можем использовать

IndexIgnore *.php

*. php = > соответствует строке, которая начинается с любого char и заканчивается на .php

В приведенном выше примере скрываются все файлы, которые заканчиваются на .php

0

Попробуйте это в .htaccess:

IndexIgnore *.jpg
  • 0
    Похоже, это не повлияло на меня. Что он должен делать?

Ещё вопросы

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