заборонити перелік каталогу в htaccess


103

У мене є папка, наприклад: /public_html/Davood/ і занадто багато підпапку в папці, наприклад: /public_html/Davood/Test1/, /public_html/Davood/Test1/Test/, /public_html/Davood/Test2/, ...

Я хочу додати файл htaccess, /public_html/Davood/щоб заборонити DirectoryListing у /Davoodта підпапках, можливо?


3
Я не бачу, чому Options All -Indexesне вийшло, як у кількох відповідях!
Fr0zenFyr

1
@ Fr0zenFyr це залежить від конфігурації веб-сервера, якщо AllowOverride Allпрацює
DJafari

Відповіді:


124

Параметри -Індекси повинні працювати для запобігання перелікам каталогів.

Якщо ви використовуєте файл .htaccess, переконайтеся, що у вашому головному конфігураційному файлі apache є принаймні параметр "параметри дозволу" .


1
це нічого не змінить
серпня 1515

69

Спробуйте додати це до .htaccessфайлу в цьому каталозі.

Options -Indexes

Тут є додаткова інформація.


Так, я подумав -Indexes відключив списки каталогів, замість цього він блокує весь вміст із папки ... Хтось знає, чому?
Майкл Лихоманка

Я можу подумати - це якась проблема з конфігурацією сервера. Спробуйте ввімкнути rewriteмодуль та налаштування каталогу AllowOverride All. Якщо все, що вже є на місці, і те, що ви прокоментували, є істинним, мені, мабуть, дуже пощастить, Options All -Indexesщоб працювати на кожному проекті на різних серверах.
Fr0zenFyr

35

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


8
Хоча порожній файл не такий вже й великий угода, кращим рішенням може бути використання символічних посилань , таким чином це економить трохи місця, і йому потрібно буде лише змінити 1 файл, якщо він вирішить відобразити якесь єдине повідомлення замість порожньої сторінки.
daalbert

18

Щоб відображати заборонену помилку, тоді включайте ці рядки у файл .htaccess:

Options -Indexes 

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

IndexOptions -FancyIndexing

Якщо ми хочемо, щоб якесь розширення не відображалося, тоді:

IndexIgnore *.zip *.css

1
.httaccessабо .htaccess?
NaveenDA

8

Параметри -Індекси чудово працює для мене,

ось .htaccessфайл:

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


   ....etc stuff

</IfModule>

Перед: введіть тут опис зображення

Після:

введіть тут опис зображення


4

Є два способи:

  1. з використанням .htaccess: Options -Indexes

  2. створити порожній index.html


3
Options -Indexes

Мені потрібно спробувати створити .htaccess файл у поточному каталозі, у якому я хочу заборонити список індексів каталогів. Але, вибачте, я не знаю про рекурсивний код .htaccess.

Спробуй це.


2

Погодьтеся, що

Options -Indexes

повинен працювати, якщо основний сервер налаштований для дозволу зміни опцій, але якщо ні, це приховає всі файли зі списку (тому кожен каталог видається порожнім):

IndexIgnore *

2

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

RedirectMatch 403 ^/folder/?$ 

Це поверне заборонену помилку для example.com/folder/ .

Ви також можете використовувати mod-rewrite, щоб заборонити запит на папку.

RewriteEngine on

RewriteRule ^folder/?$ - [F]

Якщо ваш htaccess знаходиться у папці, яку ви забороняєте заборонити, змініть шаблон RewriteRule з ^ папки /? $ На ^ $ .

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