2016-07-08 5 views
0

Ich möchte eine einzige Seite mysubdir/checkout.php mit SSL gesichert werden. z.B. https://www.mywebsite.com/fr/checkout, wobei fr der Sprachencode ist.URL umschreiben - Umleiten zu HTTP außer einer Seite

Alle anderen Seiten sollten zurück zu http umgeleitet werden.

Dies ist, was ich in .htaccess habe, aber es funktioniert nicht.

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

RewriteCond %{HTTPS} off 
RewriteCond %{REQUEST_URI} ^/fr/checkout 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

##### Checkout ##### 
RewriteRule ^/(fr|en)/checkout/?$ mysubdir/checkout.php?lang=$1 [QSA] 

jedoch, als ich eintrat: https://www.mywebsite.com/fr/checkout es Umleitungen an https://www.mywebsite.com/mysubdir/checkout.php?lang=fr. Warum?

Irgendeine Lösung zu diesem?

Antwort

0

Versuchen:

RewriteEngine on 
#redirect checkout.php from http to https 
RewriteCond %{HTTPS} off 
RewriteRule checkout\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R] 
#redirect all requests except "checkout.php" from https to http 
RewriteCond %{HTTPS} on 
RewriteRule !checkout\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R] 

Dies wird nur /checkout.php auf https umgeleitet werden.

+0

Aber in meinem Fall wird checkout.php auch in/fr/checkout umgeschrieben. – sc1013

+0

Was genau ist das Problem? Gibt es noch andere Regeln oder Htaccess? – starkeen

0

Sie sollten THE_REQUEST Variable anstelle von REQUEST_URI verwenden, da Ihre letzte REQUEST_URI zu etwas anderem ändert.

RewriteEngine On 

RewriteCond %{HTTPS} on 
RewriteCond %{THE_REQUEST} !/fr/checkout 
RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] 

RewriteCond %{HTTPS} off 
RewriteCond %{THE_REQUEST} /fr/checkout 
RewriteRule^https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE] 

##### Checkout ##### 
RewriteRule ^/?(fr|en)/checkout/?$ mysubdir/checkout.php?lang=$1 [QSA,L,NC] 

Stellen Sie sicher, dass Sie den Cache Ihres Browsers leeren, wenn Sie dies testen.