最近我更新了我的网站:CMS(Drupal),它是OS(Ubuntu 14.04)和Apache(2.4.7)。
情况是,当在https://example.com/上冲浪时,任何PHP都无法检测到HTTPS。 $_SERVER['HTTPS']是空的, $_SERVER['SERVER_PORT']返回80.而这会导致一个问题,因为Drupal无法检测到HTTPS并提供HTTP文件(混合内容)。
唯一显示连接在HTTPS上的variables是HTTP_X_FORWARDED_PROTO,而Drupal不处理这个服务内容的设置。
<<<我没有反向代理或LAMP和Drupal以外的任何高级configuration,只有一个站点。 >>> 错了,我正在用CloudFlare运行我的网站。
考虑到我不想要Drupal解决scheme,我已经pipe理好了。 我想知道为什么Apache没有发送正确的SERVERvariables的PHP或者什么可能是我的configuration错误。
谢谢你的帮助。
<<<最终编辑>>> PD:我通过一个反向代理CloudFlare运行我的网站。 一旦你安装,很容易忘记。 检查我的答案,看看你必须设置的选项,以获得预期的SERVERvariables。
问题是我忘记了我正在使用CloudFlare(一旦你安装它就容易忘记)。 这就是为什么HTTP_X_FORWARDED_PROTO表示HTTPS,因为我是在一个反向代理之后。
我的CloudFlareconfiguration下的CRYPTO / SSL与SPDY也表示:灵活。 当改为full时,PHP返回预期的HTTPS和SERVER_PORTvariables。