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工作,我不确定如何在不重定向到HTTP的情况下允许HTTPS域上的无www主持人(http://www.example.com
)
我添加了robots.txt重定向以禁止/上https,这可行,因为我不想在谷歌上重复网站。
我希望这一切都有意义。
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}
答案 0 :(得分:2)
要过滤HTTPS,您可以使用以下RewriteCond:
RewriteCond %{HTTPS} !=on # if it's not HTTPS
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]
或者你可以避免重定向,当它是POST请求时,POST数据不会丢失:
RewriteCond %{REQUEST_METHOD} !=POST # if it's not POST
RewriteCond %{HTTP_HOST} ^domain\.com
RewriteRule ^(.*)$ http://www.domain.com/$1 [L,R=301]