Comment puis-je interdire tout ce qui se trouve dans un répertoire, à l'exception des sous-répertoires qui portent un certain nom, en utilisant htaccess ou même vhost.conf pour le site ? J'ai un répertoire principal protégé qui contient des sous-répertoires. Chacun des sous-répertoires a un autre répertoire enfant nommé "thumbs", auquel je veux permettre aux gens d'accéder. Dans le dossier thumbs, j'ai des fichiers qui commencent tous par le préfixe 'thumb_' pour le nom de fichier. Alors quelle approche utiliser, .htaccess FilesMatch ou vhost DirectoryMatch ? et quel serait le code à utiliser ? Merci
Réponse
Trop de publicités?Donc si je comprends bien, vous ne voulez autoriser que les fichiers nommés thumb_*
s'ils se trouvent dans un répertoire nommé thumbs
qui se trouve dans un sous-répertoire du répertoire protégé ? Il serait plus simple de ne pas exiger que le répertoire soit nommé thumbs
puisque vous n'avez besoin que de l'option <FilesMatch>
.
On dirait que le chemin est, par exemple, /path/to/protected_dir/subdir/thumbs/thumb_1.png
Si c'est le cas, cela devrait permettre d'appliquer le type de restrictions que vous recherchez - assurez-vous simplement qu'il n'y a pas d'autres blocs de configuration qui pourraient interférer avec les paramètres d'autorisation :
<Directory /path/to/protected_dir>
Order Deny,Allow
Deny from all
</Directory>
<LocationMatch "^/url/path/to/protected_dir/[^/]+/thumbs/thumb_.*">
Allow from all
</LocationMatch>
Si vous ne vous souciez pas de faire respecter l'arborescence exacte des répertoires, c'est beaucoup plus simple :
<Directory /path/to/protected_dir>
Order Deny,Allow
Deny from all
<FilesMatch "^thumbs_.*">
Allow from all
</FilesMatch>
</Directory>