Запретить доступ к одной конкретной папке в .htaccess

Я пытаюсь запретить пользователям доступ к site/includes папку путем манипулирования URL.

Я не знаю, должен ли я отрицать все и вручную делать отдельные исключения, чтобы разрешить, могу ли я просто отрицать эту одну папку, или есть ли функция перезаписи, которую можно использовать.

Конкретный пример: я не хочу видеть файлы каталогов, введя localhost/site/includes в URL.

Ответ 1

Создайте файл site/includes/.htaccess и добавьте эту строку:

Deny from all

Ответ 2

В файле .htaccess вам нужно использовать

Deny from  all

Поместите это в site/includes/.htaccess, чтобы сделать его специфичным для каталога includes

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

Options -Indexes 

Ответ 3

Вы также можете запретить доступ к папке с помощью RedirectMatch

Добавьте следующую строку в htaccess

RedirectMatch 403 ^/folder/?$

Это вернет ошибку 403 forbidden для папки ie: http://example.com/folder/, но она блокирует доступ к файлам и папкам внутри этой папки, если вы хотите заблокировать все внутри папки, а затем просто измените шаблон регулярного выражения на ^/folder/.*$.

Другой вариант: mod-rewrite Если url-rewrting-module включен, вы можете использовать что-то вроде следующего в root/.htaccss:

RewriteEngine on

RewriteRule ^folder/?$ - [F,L]

Это будет внутренне отображать запрос на страницу ошибки folder to forbidden.

Ответ 4

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

Order Allow,Deny 
Deny from all 

Поскольку мы теперь установили безопасность, мы теперь хотим разрешить доступ к нашим желаемым типам файлов. Чтобы сделать это, добавьте код ниже в файл.htaccess под кодом безопасности, который вы только что вставили.

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

ваш окончательный файл .htaccess будет выглядеть так:

Order Allow,Deny 
Deny from all 

<FilesMatch "\.(jpg|gif|png|php)$">
Order Deny,Allow
   Allow from all
</FilesMatch>

Источник из Разрешить доступ к определенным типам файлов в защищенном каталоге

Ответ 5

Вы можете создать файл .htaccess для папки, которой должен был запретить доступ с помощью

Deny from  all

или вы можете перенаправить на пользовательскую страницу 404

Redirect /includes/ 404.html

Ответ 6

Вы также можете поместить этот IndexIgnore * в свой корневой файл .htaccess, чтобы отключить список файлов всех ваших каталогов веб-сайтов, включая sub-dir

Ответ 7

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

Поместите пустой файл index.html в этот каталог:)

и если вы динамически создаете каталог:

mkdir($dirname, 0644); 

Ответ 8

Создание index.php, index.html, index.htm не является безопасным. Becuse, любой может получить доступ к вашим файлам в пределах указанного каталога, угадывая имя файла. Например: http://yoursite.com/includes/file.dat Поэтому рекомендуемый метод создает файл .htaccess, чтобы запретить всем посетителям;). Получайте удовольствие!

Ответ 9

Вы можете сделать это динамически следующим образом:

mkdir($dirname);
@touch($dirname . "/.htaccess");
  $f = fopen($dirname . "/.htaccess", "w");
  fwrite($f, "deny from all");
fclose($f);

Ответ 10

Просто поместите.htaccess в папку, которую вы хотите ограничить

## no access to this folder

# Apache 2.4
<IfModule mod_authz_core.c>
    Require all denied
</IfModule>

# Apache 2.2
<IfModule !mod_authz_core.c>
    Order Allow,Deny
    Deny from all
</IfModule>

Источник: источники MantisBT.