Bonjour,
pour forcer une page en https, vaut-il mieux le faire avec un htaccess ou plutot un script php??
Merci
Bonjour,
pour forcer une page en https, vaut-il mieux le faire avec un htaccess ou plutot un script php??
Merci
que la page soit toujours en https:
tu tapes http://www.site.com et tu es redirigé vers httpS://www.site.com
Toujours pas clair : c'est une page bien précise (donc une URL bien déterminée) ou tout le site ?
hehe
je parle d'une page specifique ou un dossier:
www.site.com/login.php --> https://www.site.com/login.php
ou encore tout un dossier:
www.site.com/compte/ --> https://www.site.com/account
Si c'est une page précise, le plus simple et de très très loin c'est de mettre tous les liens qui pointent sur cette page en HTTPS directement. Pour "quitter" le HTTPS de cette page, tout dépend de la page mais idem, le plus simple c'est que les liens ou les redirections que fait cette page soient directement en HTTP.
Si c'est un dossier, on peut imaginer le .htaccess suivant à mettre dans ce dossier :
Pour quitter le HTTPS quand tu quittes le dossier, je dirais que le plus simple c'est de faire comme le cas précédent : que tous liens et redirections soient en HTTP. On peut imaginer un .htaccess qui fait la redirection mais ce n'est pas terrible, je trouve, car ça fait un aller-retour inutile. Tu devrais pouvoir construire ce .htaccess à partir de celui que je viens de donner.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 RewriteCond %{HTTPS} !on RewriteRule (.*) https://%{HTTP_HOST}/$1 [R,L]
je viens de me rendre compte que ce message a été initialement deplacé. je n'ai recu aucune notification!!
c'est ce que je faisais avant mais ca represente quelques inconvénients dans mon cas actuel!Si c'est une page précise, le plus simple et de très très loin c'est de mettre tous les liens qui pointent sur cette page en HTTPS directement. Pour "quitter" le HTTPS de cette page, tout dépend de la page mais idem, le plus simple c'est que les liens ou les redirections que fait cette page soient directement en HTTP.
j'avais pensé a mettre par defaut sur tout le site le protocol HTTP, puis inserer dans les pages concernees un script php qui force le passage au HTTPS
est ce que depuis la racine du site et depuis un fichier htaccess, je peux preciser quel fichier et quel dossier doit etre excecuté en HTTPS?
P.S. j'avais posé une question concernant la redirection du Error404 chez 1and1 sur mon autre post que je ne trouve plus!!
et permettez moi de faire une petite suggestion sur le site de developpez.
lorsqu'un message a été deplacé, il serait preferable d'avoir une notification instantanée par email si le post initial l'avait!
Tu peux reprendre le .htaccess que je donne juste avant et modifier le filtre du RewriteRule pour préciser le répertoire et/ou le fichier cible. Après, il faut gérer le cas de sortie du HTTPS, et c'est plus délicat car il faut écrire la règle opposée :
Dans le forum hébergeur, 1&1 : http://www.developpez.net/forums/d99...sonnelles-php/
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 # Ma page HTTPS RewriteCond %{HTTPS} !on RewriteRule (repertoire/page\.ext) https://%{HTTP_HOST}/$1 [R,L] # Sortie du HTTPS RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} !^/repertoire/page\.ext$ RewriteRule (.*) http://%{HTTP_HOST}/$1 [R,L]
On note le besoin
Merci beaucoup _MAC_
je vais devoir travailler sur les SSL tres bientot et t'en dirai plus le moment venu
Merci encore une fois pour toutes tes aides...
une toute petite question par curiosite
disons que je suis sur cette page https://www.mon-site.com/compte/ajouter.php
j'ai mis une regle dans le htaccess pour forcer le dossier 'compte' a etre toujours en https.
dans ma page ajouter.php, j'utilise de l'ajax et fais appel a un fichier qui est en dehors du dossier 'compte'. est ce securisé??
ou il me semble qu'il y aura une alerte qui dit qu'il y a des elements non securisés dans cette page comme pour les images...
Au mieux tu auras une alerte te demandant si tu veux continuer ; au pire ça ne marche pas du tout. Je penche pour le deuxième cas : ça ne marche pas du tout. Difficile de dire comme ça car en plus ça peut dépendre des navigateurs et de leur configuration de sécurité.
Bonjour _Mac_
je reviens vers toi pour une petit problème avec le script que tu m'as proposé.
j'ai mis
mais la page commence a exécuter des redirection en boucle puis le navigateur fini par m'afficher une erreur "Too many redirections"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ## HTTPS folders and pages RewriteCond %{HTTPS} off RewriteRule (cart) https://%{HTTP_HOST}/$1 [R,L] RewriteCond %{HTTPS} on RewriteCond %{REQUEST_URI} !^/cart/$ RewriteRule (.*) http://%{HTTP_HOST}/$1 [R,L]
aurais tu une idée de ce que ça peut être?
MErci
Pas vraiment. Ca dépend de l'URL demandée : "cart" est une expression qui apparaît dans les 2 règles mais pas dans les mêmes conditions. C'est possible d'avoir une URL pour tester ? Si la publier sur le forum te gêne, tu peux l'envoyer par MP.
Merci _Mac_ pour ta réponse.
je viens tout juste de trouver par hasard la solution. je devais mettre(avec un flash) et ça marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part RewriteRule (cart/) https://%{HTTP_HOST}/$1 [R,L]
Mais aussi tôt un autre problème est né
dans mon dossier "cart/" j'ai un sous dossier "ajax" qui contient des fichiers php utilisés lors des appels Ajax avec jquery $.ajax({ ... });
tous mes appels ajax de ce dossier ne fonctionnent plus
je ne sais plus quoi faire!
Moi non plusIl nous faut un peu de détails : des traces d'erreur côté navigateur (console JavaScript) ou serveur (error_log et access_log), mais aussi des traces des connexions entre le navigateur et le serveur. Avec Firefox tu peux obtenir ces traces avec un plug-in comme Live HTTP Headers.
Alors, a priori il y a deux problèmes : la règle de redirection n'est pas bonne (elle coupe une partie de la requête) et ton code Ajax n'accepte pas la redirection. Pour la règle, je ferais la correction suivante :
Ce qui signifie que dès l'instant où il y a le mot "cart" dans l'URL et qu'on est en HTTP, on est rediriger vers l'équivalent mais en HTTPS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 RewriteCond %{HTTPS} off RewriteRule cart https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Pour la partie Ajax, c'est dans ton code JavaScript. Je ne sais pas comment on fait mais il me semble qu'on peut activer la redirection (le "follow redirect" en anglais, je crois).
j'ai fait des recherches concernant "follow redirent" et les appels ajax avec https mais j'ai rien trouvé d'intéressant!
apres plusieurs tests, j'ai un info a te communiquer qui pourrait résoudre le problème
au fait ce n'est pas le fait d'être en https qui bloque les appels Ajax. j'ai commenté les règles de redirections dans le htaccess, j'ai manuellement rajouté le "s" dans l'url et le tout marche bien. tu peux faire un test dans la page du panier en modifiant la quantité ou supprimer un produit du panier...
Bah oui, ça fonctionne, car il n'y a plus la redirection. Le problème est double comme je disais : Apache redirige vers la mauvaise URL en https et Ajax ne suit pas cette redirection.
Donc, dans un premier temps, peux-tu réactiver et corriger la réécriture vers HTTPS ? Ensuite on verra cette histoire d'Ajax.
je viens de remettre la reecriture vers le HTTPS. mais il y a toujours certains éléments qui ne s'affichent pas sur la page https://www.moroccan-arts.com/cart/. quand je regarde les erreurs, il me dit qu'il y a beaucoup de redirections...
qu'est ce que je mets dans la règle de sortie (RewriteCond %{HTTPS} on)?
j'ai gardéest ce bon?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 RewriteCond %{REQUEST_URI} !^/cart/$ RewriteRule (.*) http://%{HTTP_HOST}/$1 [R,L]
MErci infiniment
Ben le problème est celui que je décrivais plus tôt :
Le filtre de la RewriteRule est trop large car le mot "cart" apparaît dans plusieurs URL qui ne doivent pas être redirigées en HTTPS. Il faut donc repréciser ce filtre pour le faire correspondre à celui de la redirection vers HTTP :
De cette manière, seule l'URL /cart/ et uniquement celle-ci, même pas des sous-URL /cart/abc.js par exemple, sera redirigée en HTTPS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part RewriteRule ^cart/$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
Partager