Как запретить доступ к файлу.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


но то, что у меня есть выше, не работает: я все еще могу получить доступ к файлу из браузера удаленно.

656   5  

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

    Ничего не найдено.