Aller au contenu

Forcer ssl & Authentification


romeo

Sujets conseillés

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 On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^$ https://%{SERVER_NAME}/admin/ [R=301, L]

AuthUserFile /mon_path/.htpasswd
AuthGroupFile /dev/null
AuthName "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

Lien vers le commentaire
Partager sur d’autres sites

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 !

Lien vers le commentaire
Partager sur d’autres sites

salut Dan

Je viens de faire un essai en apportant les modifs que tu proposes mais j'ai toujours l'erreur 500

RewriteEngine On
RewriteCond %{SERVER_PORT} !443
RewriteRule .* https://%{SERVER_NAME}/admin/ [R=301, L]

Romeo,

Lien vers le commentaire
Partager sur d’autres sites

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]

Lien vers le commentaire
Partager sur d’autres sites

Posté (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 On
RewriteCond %{SERVER_PORT} !443
RewriteRule /?(.*) 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 ?? :rolleyes:

Romeo

Modifié par romeo
Lien vers le commentaire
Partager sur d’autres sites

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 :)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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