2009-03-17 8 views
2

Eh bien, j'ai un site qui utilise des chemins relatifs pour toutes les URL. Je viens d'ajouter un panier afin que les deux ou trois pages de paiement utilisent HTTPS au lieu de HTTP. Mon problème est qu'un utilisateur est à mi-chemin de la caisse et clique sur un lien sur la navigation ou tout ce qu'il leur semble sur cette page avec HTTPS quand c'est une page qui ne l'exige pas (et que certains cas ne peuvent pas gérer en raison de fichiers externes, par exemple GoogleMaps.js)Comment utiliser htaccess pour passer de https à http

Répondre

3

En fait, je me suis surpris et j'ai piraté quelque chose ensemble. Réachemine tout ce qui est pas www.domain.com/checkout~~V~~singular~~3rd

RewriteCond %{HTTPS} on 
RewriteCond %{REQUEST_URI} !^(/checkout) 
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
2

vous pouvez essayer de faire quelque chose comme

RewriteCond %{SERVER_PORT} !^(80|8080)$ 
RewriteCond %{REQUEST_URI} !^(checkout|order|etc)$ 
RewriteRule ^(.*)$   http://yoururl$1 

Je ne sais pas si cela fonctionne parce que je ne l'ai pas testé, mais vous pouvez utiliser le ideea de test pour {SERVER_PORT} J'espère que ça aide

+0

Vous avez répondu ce pendant que je tapais ma réponse. J'aime mieux le tien cependant! –

+0

c'est à peu près la même chose. en fait, en utilisant% {HTTP_HOST}% {REQUEST_URI} comme vous l'avez fait est plus élégant :) – andi

+0

Mieux vaut ne pas compter sur les numéros de port. Vérifiez si le protocole HTTPS est activé (ou désactivé, si vous voulez le forcer). – Scott

0

Vous n'avez pas besoin de la directive RewriteCond supplémentaire pour exclure /checkout/…:

RewriteCond %{HTTPS} on 
RewriteRule !^checkout(/|$) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
Questions connexes