在Magento中将HTTPS重定向到HTTP并排除结账页面(Apache)

3
我正在使用Magento安装程序和一步结帐插件,这意味着我只有很少的页面需要HTTPS。我想通过重定向整个网站的HTTPS版本(当然不包括安全结帐)来控制HTTPS搜索索引和用户访问。
安全结帐部分是/onestepcheckout/(还包括该部分的某些子页面,即onestepcheckout/failure)。
这是我目前的代码,但是在此代码中,HTTPS无法在结帐页面启用,重定向在所有其他情况下都有效(例如,将index HTTPS发送到index HTTP),只有例外情况出现问题:
#Redirect HTTPS to HTTP except checkout 
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} !^onestepcheckout
RewriteRule ^(.*)$ http://www.mysite.co.uk/$1 [R=301,L]

#Require SSL on checkout
RewriteCond %{HTTPS} !on
RewriteCond %{REQUEST_URI} ^onestepcheckout\/?$
RewriteRule ^(.*)$ https://www.mysite.co.uk/$1 [R=301,L]

我也有些担心 /onestepcheckout/ 没有包含安全资源,因此可能需要添加例外以包含图片和样式表等。

2个回答

0

不要忘记,RewriteRule 中的路径是相对于 .htaccess 文件上下文进行评估的,而 REQUEST_URI 变量与实际请求相关联,因此包含初始斜杠。

所以你需要

RewriteCond %{REQUEST_URI} ^/onestepcheckout\/?$

或者,您可以参考重写规则中捕获的部分:

RewriteCond $1 !^onestepcheckout/

0

试试这个:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接