0

我在 Apache 2.4 的虚拟主机中设置了这个

SetEnvIf X-Forwarded-Proto https HTTPS=on

在我的 .htaccess 中,我添加了这条规则:

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

但我得到一个无限循环,因为我的 RewriteCond 没有看到 HTTPS 的值。

我做一个phpinfo(INFO_VARIABLES);,我得到$_SERVER['HTTPS'] on

我在我的 errorLog 中进行了调试以得到这个RewriteCond: input='off' pattern='off' => matched 如你所见 RewriteCond 没有看到我设置的值。

我读了一些文档

SetEnv 指令在请求处理期间运行较晚,这意味着 SetEnvIf 和 RewriteCond 等指令将看不到使用它设置的变量。

或此链接:http ://www.onlinesmartketer.com/2010/05/27/apache-environment-variables-visibility-with-setenv-setenvif-and-rewriterule-directives/#Summary

我所做的应该是有效的。

怎么了 ?谢谢 ;)

4

0 回答 0