Aller au contenu

Sujets conseillés

Posté

Bonjour,

Question : comment paramétrer deux htaccess (un en dossier racine, l'autre en sous-répertoire) pour que ce soit toujours le premier htaccess qui agisse en premier, même si l'on cherche à accéder en premier au sous-répertoire?

J'ai un site chez OVH qui est en accès restreint (donc je ne peux vous donner d'adresse!) qui contient un .htaccess1 à la racine, pour identifier tous les accédants, et un .htaccess2 dans un sous-répertoire d'administration (appelons le admin) qui sert à identifier les gestionnaires.

Le premier htaccess en racine est ainsi :

AuthUserFile /home/monsite/www/dossier_identifiants/fichiermotdepasse1
AuthGroupFile /dev/null
AuthName "Entrez vos identifiants membre"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>
<Files .htaccess>
Order allow,deny
Deny from all
</Files>
<Files *.inc>
Order allow,deny
Deny from all
Satisfy All
</Files>
<Files *.dtb>
Order allow,deny
Deny from all
Satisfy All
</Files>
ErrorDocument 400 http://90plan.ovh.net/~monsite/error.php?err=400
ErrorDocument 401 http://90plan.ovh.net/~monsite/error.php?err=401
ErrorDocument 403 http://90plan.ovh.net/~monsite/error.php?err=403
ErrorDocument 404 http://90plan.ovh.net/~monsite/error.php?err=404
ErrorDocument 500 http://90plan.ovh.net/~monsite/error.php?err=500

Le deuxième htaccess en sous répertoire admin est ainsi :

AuthUserFile /home/monsite/www/dossier_identifiants/fichiermotdepasse2
AuthGroupFile /dev/null
AuthName "Entrez vos identifiants administrateur"
AuthType Basic
<Limit GET POST>
require valid-user
</Limit>

Si un administrateur se connecte par l'adresse racine du site http://monsite.com tout se passe bien:

le serveur demande les identifiants membre (une fois..) et si ok, affiche la page d'accueil

lorsque l'administrateur essaie ensuite d'accéder au dossier admin :

le serveur demande les identifiants administrateur (une fois..) et si ok, affiche la page d'accueil

Mais si l'administrateur essaie d'accéder directement en premier au dossier admin :

le serveur demande les identifiants administrateur (une fois..) et si ok, affiche la page d'accueil et

le serveur demande les identifiants membre 4 fois!

Si l'on tape 4 fois les identifiants membre correctement, tout est bon (mis à part que l'on a tapé 4 fois)

Si l'on clique sur Annuler dans le formulaire d'identification membre et ce 4 fois de suite, on reste bien sur la page d'accueil d'admin mais à chaque essai de lire une nouvelle page, le formulaire d'identification membre se réaffiche et rebelote

Si l'on tape une fois les identifiants membre et OK, le serveur redemande 3 fois les identifiants membre et ainsi de suite, il faut avoir tapé 4 fois les bons identifiants pour que tout soit bon.

Je reviens donc à ma question, comment écrire les deux htaccess pour que ce soit le premier qui soit appelé ou bien que le deuxième (celui d'admin) renvoie sur le premier tant qu'il n'y a pas eu d'identification membre ou bien que le deuxième fasse les deux identifications?

Ai-je dit assez et clairement?

J'ai vu sur un autre post du site, que ce n'était pas bien d'avoir mis la règle d'erreur 401, car elle agit en premier et court-circuite le contrôle htaccess n°1, est-ce bien ce que cela veut dire?

Une petite remarque, en accès client, seul FireFox affiche les demandes avec clairement les message Authname bien mis en évidence, alors qu'IE noie cela dans une phrase.

Merci par avance pour toute aide ou info

Cordialement

Posté

Un truc qui n'a rien à voir: <Limit GET POST> ne fait propablement pas du tout ce que tu crois. Lis la doc, tu risques d'avoir un choc (version courte: enlève-le).

Pour revenir à ton problème, une partie de la réponse vient probablement du fait que tes pages d'admin contient des images (ou fichiers css, scripts...) qui sont dans "le reste" du site, non? Bizarre cependant qu'il te les demande 4 fois. Regarde les logs, utilise un sniffer (tcpdump, wireshark...) ou utilise curl -v en ligne de commande pour comprendre ce qui se passe.

Une solution plus simple et élégante consiste probablement à avoir un fichier (htpasswd) unique avec tous les identifiants (un par personne), et à utiliser la notion de "groupe" (via AuthGroupFile) pour définir qui a le droit d'accéder à la partie admin ou pas (i.e. require group xxx au lieu de require valid-user).

Jacques.

Posté (modifié)

Bonjour,

Merci pour cette réponse rapide et très judicieuse.

J'ai relu la spec de l'instruction LIMIT, pas très utile en effet. Je connaissais l'existence de l'instruction AuthGroupFile, mais je pensais que cela ne servait qu'à donner des droits différents sur une page ou répertoire donné. Je n'avais pas vu que cela pouvait donner des droits différents pour accéder à des répertoires différents selon le groupe.

J'ai donc commencé à modifier mes codes et créer des groupes.

En plus, ce qui est super est que les utilisateurs n'ont plus à s'identifier plusieurs fois selon les répertoires accédés!

Re merci.

Cordialement

Modifié par olitax

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...