使用 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 域上的 none www (http://www.example.com
)
我在 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,您可以使用以下 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]
关于apache - .htaccess 允许 https 非 www,仅在 http 上强制 www,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4826258/