Apache 强制www.hostname和SSL时重定向循环

Apache 强制www.hostname和SSL时重定向循环,apache,.htaccess,redirect,ssl,Apache,.htaccess,Redirect,Ssl,我快发疯了——我只是反复检查了我的规则,但我仍然不明白为什么服务器会产生重定向循环 我们的目标是强制使用www.com和SSL RewriteCond %{HTTP_HOST} ^example\.com$ [NC,OR] RewriteCond %{HTTPS} off RewriteRule (.*) https://www.example.com/$1 [R=301,L] 重定向适用于不正确的URL(没有www.或没有SSL),但对于正确的URL,我最终会使用无限重定向循环:https:

我快发疯了——我只是反复检查了我的规则,但我仍然不明白为什么服务器会产生重定向循环

我们的目标是强制使用www.com和SSL

RewriteCond %{HTTP_HOST} ^example\.com$ [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.example.com/$1 [R=301,L]
重定向适用于不正确的URL(没有www.或没有SSL),但对于正确的URL,我最终会使用无限重定向循环:
https://www.example.com/uiae -> https://www.example.com/uiae

服务器是否可能无法处理HTTPS变量

Apache文档声明该变量可以安全地用于Apache2.2

我还尝试了
SERVER\u协议=https
具有相同的结果

如果没有我的规则,我可以访问HTTP和HTTPS URL,这表明在我的.htaccess之外没有其他规则


感谢您的帮助。

事实证明,托管提供商(在这种情况下是Strato.de)在该变量的支持下搞砸了

他们的声明是错误的

Strato不支持此变量

这完全出乎意料,因为正如文档所述,它是一个标准的Apache变量

解决方法是使用协议:

RewriteCond %{HTTP_HOST} ^example\.com$ [NC,OR]
RewriteCond %{SERVER_PORT} !443
RewriteRule (.*) https://www.example.com/$1 [R=301,L]

你什么意思?什么使我改变方向?我正在使用
wget--server response
进行分析。顺便问一下,托管提供商正在运行什么代码?它可能在您的代码中执行。一些cms试图自行重定向,这会导致循环。这是Contao cms,但是:如果我删除重写规则,则不会重定向正确的url,因此没有其他重定向。
RewriteCond%{HTTPS}off RewriteRule(uiae.uiae)$
[R=301,L]也会重定向