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


245

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

Индекс / Галерея / 409

* Parent Directory
* i1269372986681.jpg
* i1269372986682.jpg
* i1269372988680.jpg

2
Об этом они упоминают в фильме «Социальная сеть» youtu.be/BPazh2kDdvA?t=1m49s
Дэниел Л. ВанДенБош

Ответы:


420

Создайте файл .htaccess, содержащий следующую строку:

Options -Indexes

Это один из вариантов. Другой вариант - редактирование вашего файла конфигурации apache.

Для этого сначала нужно открыть его с помощью команды:

vim /etc/httpd/conf/httpd.conf

Затем найдите строку: Параметры Индексы FollowSymLinks

Измените эту строку на: Опции FollowSymLinks

Наконец, сохраните и закройте файл и перезапустите сервер Apache с помощью этой команды:

sudo service httpd restart

(У вас есть руководство со скриншотами здесь .)


14
Это даже работает в <Directory> или <Location> в реальном файле .conf
chrismarx

1
@ chrismarx, в какой файл .conf мне его поместить? Кажется, что .htaccess не включен на моем сервере, и я прочитал, что лучше не использовать его в любом случае. У меня есть доступ ко всем файлам сервера, хотя, как его VPS.
Чарльз Джон Томпсон III

1
Я застрял в этом же вопросе, я добавил файл .htaccess с кодом в тот же каталог, что и моя веб-страница, но он все еще дает мне предупреждение о просмотре каталога. Я делаю что-то неправильно?
Рэнди Гилман

10
Обратите внимание, что .htaccessможет быть выключен. Пожалуйста, проверьте AllowOverrideдирективу. Если он установлен на None, то .htaccessвыключен. Вы можете включить его, установив AllowOverride All. Чтобы быть более точным, Allозначает все директивы Apache.
Джулиан

2
Если у вас есть контроль над http.conf, лучше сделайте это там. Есть хит производительности с htaccess
Итай Моав -Малимовка

299

Лучший способ сделать это - отключить его с помощью веб-сервера 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 reload

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


11
'sudo service apache2 reload ' будет достаточно!
doctorlai

2
@Jay Я также попробовал "Опции -индексы", но Apache не запустил послесловие. Я использую версию сервера: Apache / 2.4.18 (Ubuntu). Однако, использование «Options FollowSymLinks» работало согласно ответу Дунга. Мне просто интересно, какую версию Apache и ОС вы используете? Может быть, дело в версии?
MikeyE

@Jay @MikeyE То же самое здесь; Apache не будет перезагружаться с помощью-Indexes
Crimbo

1
@Jay @MikeyE Apache, кажется, перезагрузится / перезапустится, если вы удалитеFollowSymLinks
Crimbo

2
Запуск apachectl configtestпосле добавления Options -Indexes FollowSymLinksв httpd.conf выдает следующую ошибку: «Либо все опции должны начинаться с + или -, либо никакие опции не могут». Поэтому то , что будет работать этоOptions -Indexes +FollowSymLinks
Джон Т.

45

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

a2dismod autoindex

Перезапустите сервер apache2 впоследствии

sudo service apache2 restart

4
Вы можете использовать a2dismod -f autoindexдля неблокирующего выполнения команд.
Константин Ван

Отличный ядерный вариант! Это работает для Aliasпапок и любого другого пути, обслуживаемого Apache.
kontextify

Должен ли я знать о каких-либо побочных эффектах?
Нареш Кумар

28

Редактируйте / Создайте .htaccessфайл внутри /galeriasс этим:

Options -Indexes

Просмотр каталогов осуществляется модулем mod_autoindex .


- Индексы в корневом каталоге не работают, в apache2.4.33 мне пришлось использовать ответ @Sarvar Nishonboyev
Felipe Valdes

1
@FelipeValdes Пожалуйста, внимательно прочтите вопрос и мой ответ. Мы говорим не о корневом каталоге, а о подкаталоге, и его просили, чтобы его можно было выполнить в .htaccessфайле (это не самый эффективный способ, но часто это единственный вариант в общих учетных записях хостинга или с занятыми сисадминами).
Альваро Гонсалес

23

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

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

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


Берегись! Это может работать только с , index.htmlкак определено в первую очередь директива DirectoryIndex .
nyedidikeke

18

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

Options Includes Indexes FollowSymLinks MultiViews

затем удалите словарные индексы и сохраните файл. Перезапустите Apache. это оно


1
Отлично. Отключи его на всю машину. Почему это было бы включено по умолчанию, я понятия не имею ...
eduncan911

1
Это работало для меня в Ubuntu (apache2.conf), но .htaccess Options -Indexes - нет.
Данниэль Литтл

Это работало для меня в Ubuntu (/etc/apache2/apache2.conf), но параметры .htaccess -Indexes этого не сделали.
user2875289

5

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

Опции -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) после ввода слов «Options -Indexes», чтобы файл заканчивался пустой строкой.


2

Добавьте это в ваш файл .htaccess:

Options -Indexes

Если это не работает по какой-либо причине, попробуйте это в вашем файле .htaccess:

IndexIgnore *

1

Чтобы завершить ответ @ GauravKachhadiya:

IndexIgnore *.jpg

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

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

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

    IndexIgnore *

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

IndexIgnore *.php

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

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.