Para aqueles que procuram simplesmente negar todos os arquivos e diretórios "ocultos" em uma distribuição Linux (geralmente todos os arquivos que começam com "."), Eis o que funciona no Apache 2.4 quando colocado no contexto conf do servidor:
<FilesMatch "^\.(.*)$">
Require all denied
</FilesMatch>
<DirectoryMatch "/\.(.*)">
Require all denied
</DirectoryMatch>
E aqui está o estilo antigo do Apache 2.2 (o mesmo regex, apenas diretivas de autenticação diferentes):
<FilesMatch "^\.(.*)$">
Order deny,allow
Deny from all
</FilesMatch>
<DirectoryMatch "/\.(.*)">
Order deny,allow
Deny from all
</DirectoryMatch>
Então você não precisa se preocupar .git
ou .svn
especificamente. Isso também corresponderia a coisas como .htaccess
e .htpasswd
inerentemente.
Pessoalmente, eu gosto de emitir 403s para essas solicitações em vez de 404s, mas você pode facilmente usar um RewriteRule em vez de negação de autenticação, assim:
<FilesMatch "^\.(.*)$">
RewriteRule "^(.*)$" - [R=404,L]
</FilesMatch>
<DirectoryMatch "/\.(.*)">
RewriteRule "^(.*)$" - [R=404,L]
</DirectoryMatch>