【发布时间】:2011-06-17 02:38:44
【问题描述】:
在使用 Paypal 订阅时遇到问题,在 paypal 订阅配置文件中保留了旧的 https://example.com 域,并且如果不取消并重新订阅就无法更改。
我目前的做法是将所有内容强制为 http://www.example.com 所以 http(s)://example.com 301 -> http://www.example.com
这是我目前拥有的。
paypal 正在尝试向 https://example.com/payments/ipn.php 提交一些订阅,它正在 https 上执行 301 重定向到 http://www.example.com,但您在 301 重定向上丢失了 POST 数据...
使用下面的代码,https://www.example.com 可以工作,但由于我需要https://example.com 才能使 Paypal 工作,我不确定如何在 HTTPS 域上允许无 www 而不重定向到 HTTP 主机 (@987654329 @)
我在 https 上添加了 robots.txt 重定向以禁止 /,因为我不想在 google 上重复网站。
我希望这一切都有意义。
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteCond %{REQUEST_URI} !^(/payments)
RewriteRule ^ http://www.domain.com%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^robots\.txt$ robots_ssl.txt [L]
这里是固定的 .htaccess 供感兴趣的人使用!
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^ http://www.domain.com%{REQUEST_URI} [L,R=301]
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^robots\.txt$ robots_ssl.txt [L]
RewriteRule %{HTTPS_HOST} ^domain\.com%{REQUEST_URI}
【问题讨论】:
-
我不确定您所说的“HTTPS 域上没有 www”是什么意思
-
您能告诉我们您为什么要使用不安全协议吗?
-
HTTP RFC 说“如果收到 301 状态代码以响应 GET 或 HEAD 以外的请求,则用户代理不得自动重定向请求”。一般来说,以 301 响应 POST 请求会带来麻烦。
-
我不想在 https 域上使用 www,但我想在 http 域上强制使用它。至于不安全的协议,我发现网站 etc 在 https 上运行速度很慢,所以我现在决定不使用它。至于 301 重定向,这正是我上面概述的问题......“但是你在 301 重定向上丢失了 POST 数据......”
-
%{HTTPS_HOST}不存在。
标签: apache http .htaccess mod-rewrite https