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