2016-07-08 103 views
0

我希望使用SSL來保護一個頁面mysubdir/checkout.php。 例如https://www.mywebsite.com/fr/checkout,其中fr是語言代碼。網址重寫 - 重定向到HTTP,除了一頁以外

所有其他頁面應該重定向回http。

這是我在.htaccess但它不起作用。

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] 

然而,當我進入:https://www.mywebsite.com/fr/checkout它重定向到https://www.mywebsite.com/mysubdir/checkout.php?lang=fr。爲什麼?

對此的任何解決方案?

回答

0

嘗試:

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] 

這將重定向只/checkout.php爲https。

+0

但在我的情況下,checkout.php也被重寫爲/ fr/checkout。 – sc1013

+0

問題到底是什麼?有沒有其他規則或htaccess? – starkeen

0

自上次更改REQUEST_URI以來,您應該使用THE_REQUEST變量而不是REQUEST_URI

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] 

確保在測試時清除瀏覽器緩存。

相關問題