Em vez de diretiva de arquivo, tente usar o local:
<Location "path/to/folder-or-file">
Order Allow,Deny
Deny from all
</Location>
Eu preciso negar o acesso aos arquivos de configuração em alguma subpasta. Atualmente, tenho esta regra, mas não funciona:
<Files ~ "((foo|bar))$">
Order deny,allow
Deny from all
</Files>
Se eu for para www.mysite.com/foo/foo2/file.xml , posso ver o arquivo. Eu preciso negar todos os acessos a arquivos em foo e bar recursivamente
UPDATE
Eu tentei esta configuração, mas tenho um erro interno
<FilesMatch ".foo\.(*)$">
Order Allow,Deny
Deny from all
</FilesMatch>
Em vez de diretiva de arquivo, tente usar o local:
<Location "path/to/folder-or-file">
Order Allow,Deny
Deny from all
</Location>
Eu faria o regex correspondente dentro da configuração do apache. Então
<DirectoryMatch> em vez de <File> (você está combinando a expressão regular em um diretório) $ ) simplifique sua regex (muitos colchetes)
<DirectoryMatch "/path/to/toplevel/(foo|bar)">
Order deny,allow
Deny from all
</DirectoryMatch>
Note que /path/to/toplevel/ é a localização do sistema de arquivos do seu diretório WWW, onde foo e bar residem.
No entanto, se você quiser fazer isso apenas por .htaccess , crie um arquivo .htaccess no diretório every que deseja negar (foo, bar, foo / bar etc) e coloque a linha
Deny from all
por dentro.
" <Files> [...] será aplicado a qualquer objeto com um nome de base (último componente do nome do arquivo) correspondente ao nome de arquivo especificado".
Não é o que você quer.
Directory* não funciona em .htaccess
Você precisa usar mod_rewrite .
Por exemplo:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(foo|bar) - [F]
</IfModule>
Tags rewrite htaccess apache-httpd