[htaccess]protéger un dossier SAUF un fichier

Fermé
mti131 - 15 oct. 2006 à 15:51
mti131 Messages postés 33 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 10 septembre 2019 - 25 oct. 2008 à 23:34
Bonjour à tous,

j'ai un .htaccess qui se présente sous cette forme dans le repertoire "protected" :

AuthUserFile /chemin du htpasswd
AuthName "L'accès à ce dossier est réservé à l'admin du site..."
AuthType Basic

require user admin


J'aurais voulu rendre le fichier abc.php situé dans ce repertoire "protected" accessible au public.

J'ai essayé de mettre
<FilesMatch "[^(abc.php)]">
AuthUserFile /path
AuthName "L'accès à ce dossier est réservé à l'admin du site..."
AuthType Basic

require user admin
</FilesMatch>
Mais erreur 500 :(

Savez-vous s'il est possible de le faire d'une autre façon ou si j'ai juste mal fait mon expression régulière ?

Merci d'avance,

mti131

6 réponses

mti131 Messages postés 33 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 10 septembre 2019 176
25 oct. 2008 à 23:34
Bonjour,
merci d'avoir répondu au sujet même s'il date d'un certain temps déjà...

En fait, j'avais fait la réflexion en un bloc au lieu d'en séparer les constituants.
J'avais voulu mettre une interdiction pour "les fichiers qui ne sont pas abc.php". Il fallait plutôt commencer par interdire tous les fichiers dans le dossier, puis ouvrir une balise pour abc.php qui en autorise l'accès.

Ceci fonctionne:
AuthUserFile /path
AuthName "acces restreint"
AuthType Basic

require user admin

<FilesMatch "^(abc.php|public.htm)$">
Allow From All
Satisfy Any
</Files>
Concernant la balise directory, j'avais déjà essayé, mais cela génère une erreur 500: elle ne peut être utilisée dans un htaccess:
Note that unlike <Directory> and <Location> sections, <Files> sections can be used inside .htaccess files.
(doc apache)

Or je suis en mutualisé, donc pas d'accès au httpd.conf.

Le problème n'est cependant toujours pas résolu car cette solution génère un autre problème: l'autorisation pour le fichier abc.php est héritée dans les sous-dossiers.
Vous allez me dire, il suffit de le nommer de façon unique. Mais lorsque le fichier à autoriser est l'index, cela pose problème ! Je m'explique:

/ accessible à tous
/admin/index.php accessible à tous (page indiquant qu'il faut s'identifier et donnant un lien vers admin.php)
/admin/admin.php accès restreint
/admin/abc.php accès restreint
/admin/module/abc.php accès restreint
/admin/module/index.php accesible à tous !!!

Pour pallier à cela, j'ai donc dû remettre une identification obligatoire dans chaque sous-dossier. Mais c'est pas top.
Si vous avez mieux, je suis toujours preneur.

@+

mti131.
3