6
votes

Comment activer HTTPS uniquement sur certaines pages avec HTACCESS?

J'ai un site de commerce électronique et je souhaite activer HTTPS uniquement sur la section Ecommerce du site situé à https: // mysite.com/buy

Puisque tous les liens de mes pages sont relatifs, quand une personne visite http: // mySite .com et clics sur Acheter, ils sont pris à http://mysite.com/buy

aussi, s'ils visitent https://mysite.com/buy et cliquez sur un lien à une autre page, ils sont pris à https://mysite.com . P>

La raison que je veux https uniquement sur cette section est parce que j'ai des éléments externes (c'est-à-dire Google Maps, YouTube, Twitter, etc.) qui ne peuvent pas être envoyés sur https. P>

y a-t-il un moyen avec htaccess que je peux faire le / acheter Force de répertoire HTTPS, mais toutes les autres pages Force HTTP? P>

Edit: Au cas où n'importe qui est intéressé, j'ai pu résoudre ce problème en utilisant php. Je préférerais toujours une solution haccessive, mais cela fonctionnera pour l'instant: P>

if($_SERVER['HTTPS'] == "on") {
    if(strpos($_SERVER['REQUEST_URI'],"buy") === false) {
        Header("Location: http://$_SERVER['HTTP_HOST']."".$_SERVER['REQUEST_URI']");
    }
}


0 commentaires

3 Réponses :


0
votes

Je n'ai pas la main sur l'expérience, mais d'après ce que je vois, il semble que le fichier de configuration HTACCESS doit avoir un impact sur les fichiers du dossier dans lequel le fichier est stocké.

Vous devriez donc être capable de faire quelque chose comme ceci:

http://www.besthostratigs.com/articles/force-ssl- haccess.html

et mettez-le dans le dossier / Acheter de votre site.


1 commentaires

Merci d'avoir répondu. Le problème est que / acheter est une URL réécrite, donc le dossier / achat n'existe pas réellement.



6
votes

Essayez ceci dans votre fichier .htaccess: xxx

r = 301 rediriera avec l'état HTTPS 301
l fera la dernière règle
ne est pour aucune chaîne de requête qui s'échappe
QSA ajoutera vos paramètres de requête existants
NC est destiné à ignorer la comparaison de cas

1 $ est votre request_uri


1 commentaires

Vous pouvez simplifier rewriterule ^ /? (. *) $ Http://mysite.com/omputer1 [r = 301, qsa, l, ne] à rewriterule (. *) Http: //mysite.com$1 [r = 301, QSA, L, NE]



0
votes

Si votre page Web est hébergée sur 9001 Activez n'importe quel port de votre boîte Linux et apportez ces modifications dans /etc/httpd/conf.d/ssl.conf .Tren Définissez votre port d'écoute sur 9002 et créer un certificat SSL et une touche et placez la configuration suivante dans votre httpd.conf fichier xxx

et votre fichier .htaccess devrait ressembler à ce xxx


0 commentaires