【发布时间】:2019-09-16 20:02:18
【问题描述】:
我已经在 NGINX 代理后面设置了 Apache,我的 HTTPS 重定向(重写)规则会导致重定向循环。尽管我正确设置了环境变量,但 HTTPS 似乎返回为 false。
我的重写规则:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
我的环境变量:
SetEnvIf X-Forwarded-Proto https HTTPS=on
SetEnvIf X-Forwarded-SSL on HTTPS=on
当我在 PHP 中执行var_dump 时,我可以看到变量设置正确:
[HTTPS] => on
我想知道为什么RewriteCond %{HTTPS} off [OR] 总是返回 true,即使通过 HTTPS 访问 URL 并且设置了环境变量?
附言作为修复,如果我使用RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC] 代替RewriteCond %{HTTPS} off [OR],重定向循环就会消失。
【问题讨论】:
标签: .htaccess nginx mod-rewrite apache2 reverse-proxy