2015-06-11 129 views
0

我在我的网站上有一个页面,具有购物车功能,允许信用卡购买。我希望此页面可以通过https提供。当用户离开该页面时,我希望他们被重定向回http页面。当我设置重写规则时,我可以提供HTTPS页面没有问题,但是当我添加规则将用户发送回HTTP时,整个HTTPS页面会中断,因为所有资产都会重定向到http或其他内容。这是我的重写规则:从https页面重定向到http

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

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

我在我的html中使用绝对URL。我只是服务于整个网站HTTPS,但客户有tripadivsor小部件,这对他的业务非常重要,他们打破了HTTPS。

+2

好吧,看看它是这样的:“如果HTTPS启动并且请求的URL不是bookings.html,那么重定向到HTTP”。所以如果您通过https(无重定向)登录预订页面并请求图像“kittens.jpg”,则该网址不是booking.html,因此它将重定向到非https,从而中断https页面安全性。如果您想要发送回非HTTP,请在https上添加非https网址,例如

+1

这就是301所做的。做一个客户端301往返重定向。 –

回答

0

您应该跳过http(s)重定向images/css/js文件。试试这些规则:

#skip images/css/js 
RewriteRule \.(?:jpe?g|gif|bmp|png|tiff|css|js)$ - [L,NC] 

RewriteCond %{HTTPS} on 
RewriteCond %{THE_REQUEST} !/bookings\.html [NC] 
RewriteRule^http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

RewriteCond %{HTTPS} off 
RewriteRule ^bookings\.html$ https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L] 
相关问题