【问题标题】:apache rewrite POST request SSL https mod_rewriteapache 重写 POST 请求 SSL https mod_rewrite
【发布时间】: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


【解决方案1】:

解决了,这是我必须添加的另一条规则:

RewriteCond %{REQUEST_METHOD} !^POST$

这让问题消失了:)

【讨论】:

    猜你喜欢
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2010-09-14
    • 1970-01-01
    相关资源
    最近更新 更多