Подтвердить что ты не робот

.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

Если бы это было так просто, я бы не спросил;)

4b9b3361

Ответ 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 файла, если вы хотите отклонить разрешение, создайте защищенный от чтения файл в указанном местоположении.