Htaccess <Directory> запретить все
В последнее время я убираю свой проект. У меня есть основной .htaccess в корневом каталоге и еще 6 других. 5 из них выполнили Options -Indexes
, и я не видел, чтобы какая-либо точка позволяла любому просмотру каталогов перемещаться так, чтобы основной. поэтому теперь у меня есть только 2 файла .htaccess. основной и один в /system
, который содержит
# Block External Access
deny from all
Итак, я хотел запустить это на /system
только из основного. Поэтому я удалил один в /system и добавил
# Block External Access
<Directory "/system/">
deny from all
</Directory>
в мой основной файл .htaccess, оставляющий 1!
но теперь я получаю
Внутренняя ошибка сервера
Сервер обнаружил внутреннюю ошибку или неправильную конфигурацию и был не удалось выполнить ваш запрос.
Обратитесь к администратору сервера, веб-мастеру @localhost и сообщите им о времени, когда произошла ошибка, и что угодно это могло привести к ошибке.
Дополнительная информация об этой ошибке может быть доступна при ошибке сервера войти.
Apache/2.2.17 (Ubuntu) Сервер на 10.0.1.5 Порт 80
Цель состоит в том, чтобы заблокировать чтение любых файлов в /system и его подкаталоге, но разрешить просмотр всего остального из одного файла .htaccess
для всего проекта. Любые идеи о том, как я могу это исправить? Я выполнил некоторые поисковые запросы Google, но на самом деле ничего не мог найти.
Ответы
Ответ 1
Вы не можете использовать Директива каталога в .htaccess. Однако, если вы создаете файл .htaccess в каталоге /system и помещаете в него следующее, вы получите тот же результат
#place this in /system/.htaccess as you had before
deny from all
Ответ 2
Вы также можете использовать директиву RedirectMatch, чтобы запретить доступ к папке.
Чтобы запретить доступ к папке, вы можете использовать следующую команду RedirectMatch в htaccess:
RedirectMatch 403 ^/folder/?$
Это запретит внешний доступ к/папке/например: http://example.com/folder/ вернет 403 запрещенную ошибку.
Чтобы запретить доступ ко всему внутри папки, вы можете использовать это:
RedirectMatch 403 ^/folder/.*$
Это заблокирует доступ ко всей папке, например: http://example.com/folder/anyURI вернет 403 ответ об ошибке клиенту.
Ответ 3
Вы можете использовать из корневого каталога:
RewriteEngine On
RewriteRule ^(?:system)\b.* /403.html
Или:
RewriteRule ^(?:system)\b.* /403.php # with header('HTTP/1.0 403 Forbidden');