romeo Posté 9 Août 2007 Posté 9 Août 2007 Bonjour, Voila j'explique mon problème. Sur mon site j'ai un dossier "admin" qui contient tous les fichiers pour la gestion de mon site. j'y accede par http://domain.tld/admin Ce qui me propose de m'identifier (authentification par htaccess) J'ai eu l'idée de vouloir passer en ssl lorssque je me connecte à ce dossier donc je souhaite forcer une redirection si necessaire en https c'est à dire https://domain.tld/admin mais tout en gardant l'authentification. J'ai donc un souci avec la syntaxe de mon htacces qui est le suivant RewriteEngine OnRewriteCond %{SERVER_PORT} !^443$RewriteRule ^$ https://%{SERVER_NAME}/admin/ [R=301, L]AuthUserFile /mon_path/.htpasswdAuthGroupFile /dev/nullAuthName "Admin"AuthType Basic<Limit GET POST>require valid-user</Limit> j'ai essaié différente syntaxe mais rien à faire soit erreur 500, l'authentif est proposée 2 fois ou alors pas de redirection en https. Si qqun peut me proposer une solution ca serait bien sympa. Cordialement, Romeo
Dan Posté 9 Août 2007 Posté 9 Août 2007 Ta ligne: RewriteRule ^$ https://%{SERVER_NAME}/admin/ [R=301, L] est fausse ! Les tokens ^$ signifient début suivi immédiatement de fin de ligne... donc "rien" ! Remplace ^$ par .* et cela ira déjà mieux ! Et il n'est pas utile de mettre les ^ et $ autour du 443, cette page ne peut être appelée que par le port 80 ou le port 443, et non 2443, 3443, 4431, ni aucun autre Apache n'écoute par défaut que sur le port 80 et le port 443 !
romeo Posté 9 Août 2007 Auteur Posté 9 Août 2007 salut Dan Je viens de faire un essai en apportant les modifs que tu proposes mais j'ai toujours l'erreur 500 RewriteEngine OnRewriteCond %{SERVER_PORT} !443RewriteRule .* https://%{SERVER_NAME}/admin/ [R=301, L] Romeo,
Dan Posté 9 Août 2007 Posté 9 Août 2007 Remplace ta règle par celle-ci, cela devrait aller mieux (sauf si ssl n'est pas activé sur ton hébergement) RewriteRule /?(.*) https://%{SERVER_NAME}/$1 [R=301,L]
romeo Posté 9 Août 2007 Auteur Posté 9 Août 2007 (modifié) Merci Dan de bien vouloir te consacrer à mon problème mais malheureusement, ça ne fonctionne tjrs pas (erreur 500) Je te confirme que ssl est bien activé Donc voici la derniere config qui ne fonctionne pas RewriteEngine OnRewriteCond %{SERVER_PORT} !443RewriteRule /?(.*) https://%{SERVER_NAME}/$1 [R=301, L] Mod_rewrite est bien activé. Voici l'erreur que j'ai dans les logs RewriteRule: bad flag delimiters Mais ou est l'erreur ?? Romeo Modifié 9 Août 2007 par romeo
Dan Posté 9 Août 2007 Posté 9 Août 2007 Cela peut sembler idiot, mais fais l'essai en supprimant l'espace dans ton flag [R=301,L] ... parce que là je pense que ta règle a un argument de trop
romeo Posté 9 Août 2007 Auteur Posté 9 Août 2007 Bien vu Dan, effectivement l'espace posait problème Donc plus de problème de syntaxe J'y suis presque mais çà ne tourne pas rond Entre RewriteRule /?(.*) https://%{SERVER_NAME}/$1 [R=301,L] et RewriteRule .* https://%{SERVER_NAME}/admin/ [R=301 L] les résultats sont différents. Mais là çà vient probablement de la réecriture qui n'est pas bonne En + de tous ça, vient s'ajouter un problème de double identification car mon espace d'admin utilise un frameset avec 2 frames d'ou la demande d'authentification une seconde fois. Pour donner + de details sur mon bricolage: J'ai 2 virtualhosts pour le mm domaine 1 qui répond sur le port 80 => /lechemin/www et le second sur le port 443 (ssl) => /lechemin/wwws (mm user pour les 2) J'ai donc un dossier admin tel que /lechemin/www/admin pour la requete http://domain.tld/admin Et j'ai crée un lien symbolique dans /lechemin/wwws tel que /lechemin/wwws/admin qui pointe sur /lechemin/www/admin Je rappelle que je souhaite forcer le passage en ssl lors de la requete http://domain.tld/admin Le fichier .htaccess se trouve dans /lechemin/www/admin/.htaccess Alors est ce une solution envisageable ou y-a t-il bcp + simple. Je sais que je ne suis pas tres clair sur mes explications mais je veux bien réexpliquer si ca ne va pas. Cordialement, Romeo
Dan Posté 9 Août 2007 Posté 9 Août 2007 Déjà ta règle RewriteRule .* https://%{SERVER_NAME}/admin/ [R=301 L] est fausse. Les flags doivent être séparés par une virgule. Pour le reste on verra demain, là je vais passer à table Mais au premier coup d'oeil, ton lien symbolique me semble superflu.
romeo Posté 10 Août 2007 Auteur Posté 10 Août 2007 Déjà ta règle RewriteRule .* https://%{SERVER_NAME}/admin/ [R=301 L] est fausse. Les flags doivent être séparés par une virgule. Pour le reste on verra demain, là je vais passer à table Mais au premier coup d'oeil, ton lien symbolique me semble superflu. Ok désolé c'était juste une erreur de copier/coller. Pour revenir sur le lien symbolique. Je procède de cette façon car je ne souhaite pas dupliquer le contenu du dossier admin www/admin dans wwws/admin. C'est donc pour cela que j'ai ce fameux lien (wwws/admin qui pointe vers www/admin) Romeo
Dan Posté 10 Août 2007 Posté 10 Août 2007 Les résultats sont différents parce que d'un côté tu rediriges à la racine, et de l'autre tu rediriges vers le répertoire admin. Il faut savoir où se trouve le fichier .htaccess: à la racine ou dans le répertoire admin ? Mais je ne vois pas l'utilité du répertoire (ou lien symbolique) wwws ? Tu peux bien avoir deux virtualhosts qui ont le même documentroot. Les deux sont tout de même sur des ports différents. De plus, il faudra que dans ton répertoire admin, tous les liens soient sous la forme https:// et non http:// , du moins tous les liens qui pointent vers les fichiers de ce même répertoire. Qui est ton hébergeur ? Et quelle est l'URL de ton site ?
romeo Posté 10 Août 2007 Auteur Posté 10 Août 2007 Les résultats sont différents parce que d'un côté tu rediriges à la racine, et de l'autre tu rediriges vers le répertoire admin.Il faut savoir où se trouve le fichier .htaccess: à la racine ou dans le répertoire admin ? Je rappelle que j'ai 2 vhosts donc 2 documentRoot differents (/www pour le port 80 & le second /wwws pour le port 443) le .htaccess se trouve dans /www/admin/.htaccess Mais je ne vois pas l'utilité du répertoire (ou lien symbolique) wwws ?. C'est pour eviter de dupliquer tout le contenu du dossier www/admin dans wwws/admin Tu peux bien avoir deux virtualhosts qui ont le même documentroot. Les deux sont tout de même sur des ports différents Oui, j'y ai pensé MAIS je ne souhaite pas que tout le site soit accessible en https Seul ce fameux dossier www/admin doit etre accessible en https De plus, il faudra que dans ton répertoire admin, tous les liens soient sous la forme https:// et non http:// , du moins tous les liens qui pointent vers les fichiers de ce même répertoire. Pour cela je n'utilise ques des liens relatifs. Qui est ton hébergeur ? Et quelle est l'URL de ton site ? Le site est hebergé sur un dédié chez OVH Pour l'URL c'est Top secret A vrai dire je ne souhaite pas divulguer l'url etant donné qu'il n'est pas encore en production Cordialement, Romeo
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant