[htaccess]protéger un dossier SAUF un fichier
mti131
-
mti131 Messages postés 33 Date d'inscription Statut Membre Dernière intervention -
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" :
J'aurais voulu rendre le fichier abc.php situé dans ce repertoire "protected" accessible au public.
J'ai essayé de mettre
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
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
A voir également:
- Htaccess autoriser l'accès à un dossier
- Dossier appdata - Guide
- Acces rapide - Guide
- Impossible de supprimer un dossier - Guide
- Vous avez besoin d'une autorisation de la part de système pour modifier ce dossier - Guide
- Mettre un mot de passe sur un dossier - Guide
6 réponses
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:
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.
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.
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... :(
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... :(
Je viens de trouver:
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/
<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/
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
<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 ;-)
<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 ;-)