Как запретить доступ к файлу.htaccess
у меня следующая .файл htaccess:
RewriteEngine On
RewriteBase /
# Protect the htaccess file
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
# Protect log.txt
<Files ./inscription/log.txt>
Order Allow,Deny
Deny from all
</Files>
# Disable directory browsing
Options All -Indexes
Я пытаюсь запретить посетителям доступ к следующему файлу:
domain.com/inscription/log.txt
но то, что у меня есть выше, не работает: я все еще могу получить доступ к файлу из браузера удаленно.
5 ответов:
в файле htaccess, объем применяется только к этому каталогу (я думаю, чтобы избежать путаницы, когда правила/директивы в htaccess подкаталогов применяются, заменяя их от родителя).
так что вы можете иметь:
<Files "log.txt"> Order Allow,Deny Deny from all </Files>в файле htaccess в папке . Или вы можете использовать mod_rewrite для сортировки обработки обоих случаев запретить доступ к файлу htaccess, а также к журналу.txt:
RewriteRule /?\.htaccess$ - [F,L] RewriteRule ^/?inscription/log\.txt$ - [F,L]
сильный шаблону - Это метод, который я использую здесь в тленном пресс. Используя строгое сопоставление шаблонов, этот метод предотвращает внешний доступ к любому файлу, содержащему ".ХТА",".ХТА", или любое их сочетание без учета регистра. Чтобы проиллюстрировать это, этот код предотвратит доступ через любое из следующих действий запросы:
- .htaccess
- .HTACCESS
- .hTaCcEsS
- тестовый файл.htaccess
- именем.HTACCESS
- FILEROOT.hTaCcEsS
..так далее., прием. Очевидно, что этот метод очень эффективен для защиты файлов HTAccess вашего сайта. Кроме того, этот метод также включает в себя укрепление "Удовлетворять Все" директивы. Обратите внимание, что этот код должен быть помещен в корневой HTAccess вашего домена файл:
# STRONG HTACCESS PROTECTION <Files ~ "^.*\.([Hh][Tt][Aa])"> order allow,deny deny from all satisfy all </Files>
Я не считаю, что в настоящее время принятый ответ является правильным. Например, у меня есть следующее
.htaccessфайл в корне виртуального сервера (apache 2.4):<Files "reminder.php"> require all denied require host localhost require ip 127.0.0.1 require ip xxx.yyy.zzz.aaa </Files>это предотвращает внешний доступ ко
reminder.php, который находится в подкаталоге. У меня есть похожий.htaccessфайл на моем сервере Apache 2.2 с тем же эффектом:<Files "reminder.php"> Order Deny,Allow Deny from all Allow from localhost Allow from 127.0.0.1 Allow from xxx.yyy.zzz.aaa </Files>Я не знаю точно, но я подозреваю, что это попытка определить подкаталог конкретно в , , а именно
<Files ./inscription/log.txt>что вызывает его сбой. Было бы проще поставить.htaccessфайл в том же каталоге, что иlog.txtт. е. в
поместите нижнюю строку в свой .htaccess файл и заменить имя файла, как вы хотите
RewriteRule ^(test\.php) - [F,L,NC]
Ну вы могли бы использовать
<Directory>тег например:<Directory /inscription> <Files log.txt> Order allow,deny Deny from all </Files> </Directory>не используйте
./потому что, если вы просто использовать/Он смотрит на корневой каталог вашего сайта.для более подробного примера посетитеhttp://httpd.apache.org/docs/2.2/sections.html
Comments