Pour ceux qui cherchent à refuser simplement tous les fichiers et répertoires "cachés" sur une distribution Linux (généralement tous les fichiers commençant par un "."), voici ce qui fonctionne sur Apache 2.4 lorsqu'il est placé dans le contexte de la configuration du serveur :
<FilesMatch "^\.(.*)$">
Require all denied
</FilesMatch>
<DirectoryMatch "/\.(.*)">
Require all denied
</DirectoryMatch>
Et voici l'ancien style Apache 2.2 (même regex, juste des directives d'authentification différentes) :
<FilesMatch "^\.(.*)$">
Order deny,allow
Deny from all
</FilesMatch>
<DirectoryMatch "/\.(.*)">
Order deny,allow
Deny from all
</DirectoryMatch>
Alors vous n'avez pas à vous soucier .git
o .svn
spécifiquement. Cela correspondrait également à des choses comme .htaccess
y .htpasswd
par nature.
Personnellement, je préfère émettre des 403 pour de telles demandes plutôt que des 404, mais vous pourriez facilement utiliser une RewriteRule au lieu d'un refus d'authentification, comme ceci :
<FilesMatch "^\.(.*)$">
RewriteRule "^(.*)$" - [R=404,L]
</FilesMatch>
<DirectoryMatch "/\.(.*)">
RewriteRule "^(.*)$" - [R=404,L]
</DirectoryMatch>
3 votes
Une fois que vous avez empêché Apache de servir le répertoire, vous pouvez également avoir besoin de cacher le répertoire .git avec "IndexIgnore .git" si les index sont activés sur votre répertoire.