Apache .htaccess允许https非www,仅在http上强制www

Apache .htaccess允许https非www,仅在http上强制www,apache,http,.htaccess,mod-rewrite,https,Apache,Http,.htaccess,Mod Rewrite,Https,Paypal订阅出现问题,导致旧的https://example.compaypal订阅配置文件中的域,如果不取消并重新订阅,则无法更改 我现在所做的就是强迫一切http://www.example.comsohttp(s)://example.com301->http://www.example.com 这就是我现在拥有的 paypal正在尝试向https://example.com/payments/ipn.php它在https上执行301重定向到http://www.example.com

Paypal订阅出现问题,导致旧的
https://example.com
paypal订阅配置文件中的域,如果不取消并重新订阅,则无法更改

我现在所做的就是强迫一切
http://www.example.com
so
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域上的none www不重定向到HTTP主机(
http://www.example.com

我将robots.txt重定向添加到了https上的disallow/on,这样做是因为我不想在谷歌上看到重复的站点

我希望这一切都有意义

 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 %{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]

我不知道你所说的“HTTPS域上无www”是什么意思。你能告诉我们为什么要使用不安全的协议吗?HTTP RFC说“如果收到301状态码是为了响应GET或HEAD以外的请求,则用户代理不得自动重定向请求”。一般来说,用301响应POST请求会带来麻烦。我不想在https域上使用www,但我想在http域上强制使用它。至于不安全的协议,我发现网站etc在https上运行的速度很慢,所以我决定暂时不使用它。至于301重定向,这正是我上面概述的问题。。。“但是您丢失了301重定向上的POST数据…”
%{HTTPS\u HOST}
不存在。嗨,弗洛恩!我将试一试并报告,感谢您“回答”这个问题:-)重写cond%{HTTPS}=在RewriteCond%{HTTP_HOST}^domain\.com RewriteRule^{REQUEST_URI}[L,R=301]RewriteCond%{SERVER_PORT}^443$RewriteRule^ robots\.txt$robots\.txt[L]RewriteRule%{HTTPS_HOST}^domain\.com%{REQUEST_URI Argh!上面是我用过的。。。我将把它添加到顶部,这样它的格式就正确了,编辑了主要问题以包含答案,但弗洛恩给我指出了正确的方向。。。