.htaccess запретить файлы в подпапках
Я хочу заблокировать доступ к "sub/folder/index.php", но не "index.php" где-либо еще.
<Files index.php>
Order allow,deny
Deny from all
</Files>
работает, но блокирует все файлы "index.php".
<Files sub/folder/index.php>
Order allow,deny
Deny from all
</Files>
не работает. Нужно ли использовать <Directory>
?
Я не хочу создавать файл .htaccess в подкаталоге
У меня нет доступа к httpd.conf
Я не хочу блокировать все в каталоге sub/directory
Если бы это было так просто, я бы не спросил;)
Ответы
Ответ 1
Я думаю, что самое простое правило:
RedirectMatch 403 ^.*/sub/folder/index\.php$
RedirectMatch находится в модуле mod_alias, который вы, безусловно, имеете. Это не означает двигатель mod_rewrite. Здесь мы просто говорим apache, что любой доступ к sub/folder/index.php будет генерировать "403 запрещенный" ответ.
Вы можете поместить это в httpd.conf или в корневой .htaccess(но действительно подумайте об удалении всего .htaccess, это плохо, это медленно, грустно, что у вас нет доступа к реальным файлам конфигурации).
Ответ 2
Я пытаюсь создать другой .htaccess в этой суб/папке/, чтобы заблокировать доступ к этому index.php.
"Если вы поместите файл .htaccess в подпапку, его директивы будут переопределять те, которые у вас есть в основной папке вашего сайта."
На этой странице есть дополнительная информация: http://www.besthostratings.com/articles/htaccess.html
Ответ 3
Как создать файл .htaccess
в конкретной папке, содержащей файлы, которые вы хотите защитить?
Изменить:
Будьте осторожны, это фактически не работает в простом файле .htaccess
, см. комментарии ниже. Это будет работать только в файле apache.conf.
Это должно сделать трюк для вас без другого файла .htaccess
:
<Directory sub/folder>
<Files index.php>
Order allow,deny
Deny from all
</Files>
</Directory>
Ответ 4
Вы можете использовать имена файлов только в разделах <Файлы → , а не пути.
Есть три варианта, которые я вижу:
- Поместите файл .htaccess в ту же папку, что и файл.
- Поместите конфигурацию в apache.conf с помощью директивы <Directory> и директивы < Files.
<Directory> не работает в файлах .htaccess, только apache.conf
- Создайте правило перезаписи с помощью mod_rewrite a'la;
-
RewriteEngine on
RewriteRule ^sub/folder/index.php$ http://yoursite/index.locked
Дает 404 файла, если вы хотите отклонить разрешение, создайте защищенный от чтения файл в указанном местоположении.