Page 1 sur 1

htaccess => protéger tous les fichier sauf...

Posté : 15 oct. 2005, 21:04
par Nico128
Salut à tous ! Pour le htaccess, je conais comment protéger tout en répértoire, et j'aimerais savoir si il était possible de protégé tout le répértoire SAUF un fichier qui s'y trouve ?

Voila, merci d'avance

Posté : 15 oct. 2005, 22:04
par Ripat

Code : Tout sélectionner

# Tu verrouilles tous les fichiers <Files *> Order Deny,Allow Deny from All </Files> # tu fais sauter le verrou pour ton seul fichier autorisé <Files ton_fichier_autorise.php> Order Allow,Deny Allow from All </Files>

Posté : 16 oct. 2005, 01:57
par Nico128
J'ai essayé mais c'est pas droit ce que j'attendais.

J'explique un peu, cest tout simple sauf que je ne sais pas comment faire, jai regarder des tutos sur le web mais ca explique toujours la version simple "comment prétégé un répértoire".

Alors voilà : J'ai un forum, et j'aimerais que toutes les pages soit protégées par un login et un mot de passe, sauf 2-3 pages.

Si je mets comme tu as mis, ca marche ! Sauf que ca me demande pas d'identification. Et comme je n'ai rarement touché au htaccess, je sais as comment il faut faire. Je sais juste que pour prégégé mon répértoire cest :

Code : Tout sélectionner

AuthUserFile /home/www/517421f0ca8e8940110726410aa45186/web/forum/admin/.page AuthName "legend-nintendo.com" AuthType Basic <limit GET POST> require valid-user </limit>
Voilà, merci d'avance :D

Posté : 16 oct. 2005, 07:03
par Ripat
Une solution possible est de bloquer l'accès à toutes les pages préfixées par une lettre de convenance, par exemple i
  • ipage-interdite.php
  • iautre-page-interdite.html
  • page-autorisée.php
Le code:

Code : Tout sélectionner

<FilesMatch "^i.*\.(php|html)$"> AuthType Basic AuthUserFile /chemin/linux/complet/vers/ton/.htpasswd AuthGroupFile /dev/null AuthName intranet Require valid-user </FilesMatch> # Explication du motif de la directive FilesMatch # ^i veut dire la première lettre est i # .* tout caractère, 0 ou plusieurs fois # \. le caractère point # (php|html)$ qui se termine par php ou html
Si tu ne veux pas renommer toutes tes pages, voici une autre solution:

Code : Tout sélectionner

# si le Request_URI contient un des fichiers autorisés # on crée une variable d'environnement Apache page_ok SetEnvIf Request_URI "(page1\.php|page2\.html)$" page_ok # blocage sélectif de toutes les pages *.html et *.php sauf si page_ok existe # Allow from env=page_ok autorise l'accès si la variable page_ok existe <FilesMatch "\.(html|php)$"> Order Deny,Allow Deny from all AuthType Basic AuthUserFile /chemin/linux/complet/vers/ton/.htpasswd AuthGroupFile /dev/null AuthName intranet Require valid-user Allow from env=page_ok Satisfy Any </FilesMatch>
Il y a peut-être plus simple, mais franchement je ne vois pas. Si ce n'est, évidemment, de mettre les fichiers à protéger dans un répertoire et les autres dans un autre.

Posté : 16 oct. 2005, 12:57
par Nico128
Ouais je sais qu'il vaudrait mieux les mettre dans un répértoire a part...mais cest phpbb et cest compliqué avec les theme et tout...

C'est parce que je suis admin du forum, et j'aimerais mettre un admin qui puisse que administrer que quelques pages.

Et donc les pages qu'il pourra administrer, je les laisse protégée par la session admin du forum. Tandis que celle que je veux pas qu'il y accède je les protège par htaccess...

Je sais qu'il existe un mod pour ça, qui s'apelle Junior Admin, mais il est incompatible avec le mod que jaimerais seulement autorisé a cette personne.

Sinon, toutes les pages que j'aimerais laisser libre (sans protection) ont au moin le mot "arcade" comme nom,

Posté : 16 oct. 2005, 14:33
par Ripat
Dans ce cas, le deuxième code me semble plus approprié avec:

Code : Tout sélectionner

SetEnvIf Request_URI "arcade" page_ok
Tu rajoutes les extensions que tu veux protéger dans la directive:

Code : Tout sélectionner

<FilesMatch "\.(html|php|txt|gif)$">
Pas très optimisé au niveau architecture de site mais si tu n'as pas le choix...

A essayer dans ton contexte.

Posté : 16 oct. 2005, 15:43
par Nico128
Merci !! Ca marche super !! C'est exactement ce que je voulais :D

@+