Я пытаюсь запретить пользователям получать доступ к папке "site/includes", манипулируя URL-адресом. Я не знаю, нужно ли мне все отрицать и вручную разрешать отдельные исключения, если я могу просто отказаться от этой папки или использовать функцию перезаписи, которая может быть использована.
Конкретный пример: я не хочу видеть файлы каталога, введя в URL-адрес "localhost/site/includes".
Создайте файл site/includes/.htaccess
и добавьте эту строку:
Deny from all
В файле .htaccess
вам нужно использовать
Deny from all
Поместите это в site/includes/.htaccess
, чтобы сделать его специфичным для каталога includes
Если вы просто хотите запретить список файлов каталога, вы можете использовать
Options -Indexes
Вы также можете запретить доступ к папке с помощью 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
.
Мы установим, что каталог очень безопасный, запрещающий доступ для всех типов файлов. Ниже приведен код, который вы хотите вставить в файл.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>
Источник из Разрешить доступ к определенным типам файлов в защищенном каталоге
Вы можете создать файл .htaccess для папки, которой должен был запретить доступ с помощью
Deny from all
или вы можете перенаправить на пользовательскую страницу 404
Redirect /includes/ 404.html
Вы также можете поместить этот IndexIgnore *
в свой корневой файл .htaccess, чтобы отключить список файлов всех ваших каталогов веб-сайтов, включая sub-dir
Options -Indexes
.
Вы можете сделать это динамически следующим образом:
mkdir($dirname);
@touch($dirname . "/.htaccess");
$f = fopen($dirname . "/.htaccess", "w");
fwrite($f, "deny from all");
fclose($f);
Создание index.php, index.html, index.htm не является безопасным. Becuse, любой может получить доступ к вашим файлам в пределах указанного каталога, угадывая имя файла. Например: http://yoursite.com/includes/file.dat Поэтому рекомендуемый метод создает файл .htaccess, чтобы запретить всем посетителям;). Получайте удовольствие!
Кроме тех защищенных методов, которые я тоже мог опубликовать. Там есть настройки и менее безопасный способ сделать это, если каталог не был создан динамически.
Поместите пустой файл index.html в этот каталог:)
и если вы динамически создаете каталог:
mkdir($dirname, 0644);
Просто поместите.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.
Options -Indexes
в файле .htaccess, расположенном в корневой папке