[htaccess]protéger un dossier SAUF un fichier

mti131 -  
mti131 Messages postés 33 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   176
 
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
mti131
 
J'ai toujours ce problème depuis le temps...
Je ne peux pas croire que ce dont j'ai besoin est impàossible ? Apache est trop flexible pour ne pas offrir cela !

Merci d'avance de vos réponses, je suis dans la mouise... :(
0
PaC_1250
 
j'essaye de faire ça aussi je n'y arrive pas :(
0
PaC_1250
 
Je viens de trouver:

<FilesMatch "[^(rss.php)]">
AuthUserFile /home/path/lechien/.htpasswd
AuthGroupFile /dev/null
AuthName "Prive"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
</FilesMatch>


c'est pourtant la même chose que ce que tu as fait...

et je suis aussi sur Apache 1.3.37 (linux)
voici les détails de ma config :
http://start.ovh.net/infos/
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mti131
 
Je n'ai plus d'erreur 500, mais ce code est malheureusement totalement inefficace.
Je ne peux pas accéder au répertoire entier.

La seule différence... euh, tu as linux et moi unix. Sinon, peut-être que 1&1 ne connaît pas "<FilesMatch>"...

@+

mti131
0
samile
 
<Directory "/cheminDuRepertoireAProteger">
<FilesMatch fichierAutoriser.php*>
Order allow,deny
Allow from all
</FilesMatch>
Order deny,allow
Deny from all
</Directory>


moi j'ai mis sa dans mon httpd.conf... Je pense que si tu le mets dans un .htaccess cela fonctionnera si le dossier a un AllowOverride All sur lui dans httpd.conf

je pense que tu as corriger le probleme depuis le temps ;-)
0