Як відключити перегляд каталогів?


245

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

Покажчик / галерії / 409

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

2
Про це вони згадують у фільмі "Соціальна мережа" youtu.be/BPazh2kDdvA?t=1m49s
Daniel L. VanDenBosch

Відповіді:


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
Itay Moav -Malimovka

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 Я також спробував "Options -indexes", але 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 або додати Options -Indexes у .htaccess файл), ось ще один

a2dismod autoindex

Після цього перезапустіть сервер apache2

sudo service apache2 restart

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

Гарний ядерний варіант! Це працює для Aliasпапок та будь-якого іншого шляху, який обслуговує Apache.
kontextify

Чи повинен я знати про будь-які побічні ефекти?
Нареш Кумар

28

Редагуйте / Створіть .htaccessфайл усередині /galeriasцього:

Options -Indexes

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


-Індекси в кореневому каталозі не працюють, в апачі2.4.33, мені довелося скористатися відповіддю @ Сарвара Нішонбоєва
Феліпе Вальдес

1
@FelipeValdes Уважно прочитайте і питання, і мою відповідь. Ми говоримо не про кореневий каталог, а про підкаталог, і його просили виконувати у .htaccessфайлі (що не є найефективнішим способом, але часто це єдиний варіант у спільних хостинг-акаунтах або із зайнятими sysadmins).
Альваро Гонсалес

23

Ви можете розмістити порожній файл, викликаний index.htmlу кожен каталог, який ви не хочете перераховувати. Це має ряд переваг:

  • Це (як правило) вимагає нульової конфігурації на сервері.
  • Він буде продовжувати працювати, навіть якщо адміністратор сервера вирішить використовувати "AllowOverride None" у налаштуваннях сервера. (Якщо ви використовуєте .htaccessфайли, це може призвести до безлічі повідомлень "Помилка 500 - внутрішня помилка сервера" для ваших користувачів!).
  • Він також дозволяє переміщувати файли з одного сервера на інший, знову ж таки, не возившись з конфігурацією apache.

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


Голова вгору! Це може працювати лише з index.htmlпервинно визначеною Директивою DirectoryIndex .
nyedidikeke

18

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

Options Includes Indexes FollowSymLinks MultiViews

потім видаліть слова «Індекси» та збережіть файл. Перезапустіть апаш. Це воно


1
Ідеально. Вимкніть машину в широкому напрямку. Чому б це було включено за замовчуванням, я поняття не маю ...
eduncan911

1
Це працювало для мене на Ubuntu (apache2.conf), але параметри .htaccess -Indexes цього не зробили.
Даніель Маленький

Це працювало для мене на Ubuntu (/etc/apache2/apache2.conf), але параметри .htaccess -Indexes цього не зробили.
користувач2875289

5

Якщо ви вирішите змінити файл httpd.conf, щоб вирішити це, і у вас є кілька директив Опції, тоді перед кожною директивою потрібно додати - або +. Приклад:

Параметри -Індекси + FollowSymLinks


3

Це не відповідь, а лише мій досвід:

На моєму Ubuntu 12.04 apache2, не знайденого Indexesні в апахе2.conf, ні в httpd.conf, на щастя, я знайшов його sites-available/default. Після видалення його тепер не відображається перелік каталогів. Можливо, доведеться це зробити sites-available/default-ssl.


2

Відкрийте свій .htaccess файл і введіть наступний код у

Options -Indexes

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


2

Додайте це у свій .htaccess файл:

Options -Indexes

Якщо це не працює з будь-якої причини, спробуйте це у вашому файлі .htaccess:

IndexIgnore *

1

Щоб завершити відповідь @ GauravKachhadiya:

IndexIgnore *.jpg

означає "приховати лише файли розширень .jpg від індексації.

Директива IndexIgnore використовує виразні символи для порівняння з каталогами та файлами.

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

    IndexIgnore *

Або якщо ви хочете приховати просторові файли в списку каталогів, ми можемо використовувати

IndexIgnore *.php

* .php => відповідає рядку, який починається з будь-якого символу та закінчується .php

Приклад вище приховує всі файли, які закінчуються .php


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.