.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 в sub / folder

У меня нет доступа к httpd.conf

Я не хочу блокировать все в каталоге sub /

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

Я думаю, что самое простое правило:

 RedirectMatch 403 ^.*/sub/folder/index\.php$ 

RedirectMatch находится в модуле mod_alias, который вы, безусловно, имеете. Это не означает двигатель mod_rewrite. Здесь мы просто говорим apache, что любой доступ к sub / folder / index.php будет генерировать «403 запрещенный» ответ.

Вы можете поместить это в httpd.conf или в корневой .htaccess (но действительно подумайте об удалении всего .htaccess, это плохо, это медленно, грустно, что у вас нет доступа к реальным файлам конфигурации).

Я пытаюсь создать другой .htaccess в этом суб / папке /, чтобы заблокировать доступ к этому index.php.

«Если вы поместите файл .htaccess в подпапку, его директивы будут переопределять те, которые у вас есть в главной папке вашего сайта».

На этой странице есть дополнительная информация: http://www.besthostratings.com/articles/htaccess.html

Как создать файл .htaccess в конкретной папке, содержащей файлы, которые вы хотите защитить?

Редактировать:

Будьте осторожны, это фактически не работает в простом файле .htaccess , см. Комментарии ниже. Это будет работать только в файле apache.conf.

Это должно к трюку для вас без другого файла .htaccess :

 <Directory sub/folder> <Files index.php> Order allow,deny Deny from all </Files> </Directory> 

Вы можете использовать имена файлов только в разделах <Files>, а не в путях.

Есть три варианта, которые я вижу;

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