2010-02-17 5 views
1

Je sais que cette question a été posée de plusieurs façons différentes et j'ai regardé/essayé plusieurs des suggestions, mais n'obtenant nulle part.Comment basculer entre http et https dans .htaccess?

J'ai un site qui est mélangé http et https où tout/client et/panier, y compris les sous-répertoires sont https et le reste est http. J'ai un problème avec le fait d'aller en https, il semble que ça va à https et à nouveau à http avec ça.

RewriteEngine On 

#RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteRule (.*) /public.php?debug=%{SERVER_NAME} [NS,QSA,L] 

# Redirect to HTTPS if /cart or /customer 
RewriteCond %{REQUEST_URI} ^/cart.* 
RewriteCond %{REQUEST_URI} ^/customer.* 
RewriteCond %{HTTPS} !on 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R] 

# go back to regular http if not in secure area 
RewriteCond %{REQUEST_URI} !^/cart.* 
RewriteCond %{REQUEST_URI} !^/customer.* 
RewriteCond %{HTTPS} on 
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R] 

#simulate the static pages 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule ^(.*)$ /public.php?controller=index&action=index [L] 

#Main rewrite for application/controller/action decode logic 

#RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !/scripts/ 
RewriteCond %{REQUEST_FILENAME} !/images/ 
RewriteCond %{REQUEST_FILENAME} !/css/ 
RewriteRule ^([a-z]+)\/([a-z]+)$ /public.php?controller=$1&action=$2 [QSA,L] 
RewriteRule ^([a-z]+)\/$ /public.php?controller=$1 [QSA,L] 
RewriteRule ^([a-z]+)\/([a-z]+)$ /$1/$2/ [QSA,L,R] 
RewriteRule ^([a-z]+)$ /$1/ [QSA,L,R] 

AddHandler php5-script .php 

Peut-être que quelqu'un peut me redresser à ce sujet.

TIA

Répondre

0

Je pense que votre problème est que les règles RewriteCond groupe ensemble comme un « ET » plutôt que d'un « OU » de sorte que le chemin devrait correspondre à « panier » et « client » pour la rewriterule être appliqué (ce qui n'aurait pas de sens). Essayez ceci ..

# redirect non-https requests for /cart or /customer to https 
RewriteCond %{HTTPS} off 
RewriteRule ^(cart|customer) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

# redirect all other https requests to http 
RewriteCond %{HTTPS} on 
RewriteCond $1 !^(cart|customer) 
RewriteRule ^(.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
0

Vous pouvez jeter un oeil à cette question pour la question similaire htaccess (https to http)

Même si vous faites fonctionner, votre page sera semi-crypté et navigateur affichera une marque rouge la barre d'état. Vous devez également utiliser http referrer dans les conditions.

Questions connexes