【发布时间】:2014-02-26 15:41:35
【问题描述】:
我使用安全 https 进行结帐和查看购物车,而产品所在商店的前端并不安全 - 标准 http。 http到https的传输是通过以下规则实现的:
RewriteRule \.(gif|jpg|jpeg|jpe|png|css|js)$ - [S=1]
RewriteRule ^/(checkout|customer|sales|wishlist)/(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R]
现在一切正常,问题是当将产品添加到购物车时,包含产品数量的 post 变量被删除。如果我删除重写规则,/checkout/ url 将变得不安全,并且数量可以到达那里。 我可以在此处添加 apache 访问日志,以显示打开 https 和关闭 https 时会发生什么——基本上没有重定向,有一个 POST 和一个 GET 请求,而重定向有一个 POST 和一大堆 GET。
问题是针对 Apache mod_rewrite 专家的 - 除了我已经必须将 POST 内容传送到目的地的规则之外,我还需要做一些特别的事情吗?
以下是访问日志:
/* HTTP */
121.99.xxx.xxx - - [22/Feb/2014:08:48:28 +0400] "POST /checkout/cart/xxx.xxx/ HTTP/1.1" 302 567 "http://pacifika.ru/checkout/cart/" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36"
121.99.xxx.xxx - - [22/Feb/2014:08:48:29 +0400] "GET /checkout/cart/ HTTP/1.1" 200 25465 "http://pacifika.ru/checkout/cart/" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36"
/* HTTPS */
121.99.xxx.xxx - - [22/Feb/2014:08:50:53 +0400] "POST /checkout/cart/xxx.xxx/ HTTP/1.1" 302 502 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36"
121.99.xxx.xxx - - [22/Feb/2014:08:50:54 +0400] "GET /checkout/cart/xxx.xxx/ HTTP/1.1" 302 820 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36"
121.99.xxx.xxx - - [22/Feb/2014:08:50:54 +0400] "GET /checkout/cart/ HTTP/1.1" 302 482 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36"
121.99.xxx.xxx - - [22/Feb/2014:08:50:55 +0400] "GET /checkout/cart/ HTTP/1.1" 200 25563 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.117 Safari/537.36"
【问题讨论】:
-
您能否发布一个此规则不起作用的 URL 示例?
-
这里是访问日志,显示在非安全添加到购物车点击期间首先发生的情况(重写规则已注释掉),其次是启用重写到 https 规则。
-
有人吗?有人必须了解更多有关重定向和 POST 请求的信息吗?我认为下面的日志发生了一些奇怪的事情,因为启用 https 似乎在解决 200 之前生成 3 个重定向 302 请求,而 http 只执行一个 302...
标签: apache mod-rewrite redirect ssl https