我的客户在 Network Solutions 有一台 VPS。在 https:// 页面上查看 phpinfo() 时,我应该能够看到 HTTPS 服务器变量设置为字符串“on”,但 HTTPS 变量不存在。如果我在 phpinfo() 生成的页面上搜索“https”,它只会显示在“已注册的 PHP 流”旁边
也许 PHP 在编译时没有支持 HTTPS?
答案1
除了 httpd 之外的其他人也可能正在处理 HTTPS,因此 httpd 不知道它应该设置该变量。
答案2
以下是 Network Solutions 对此事的回应:
我们的代理 SSL 不允许服务器端变量检测 HTTPS(安全)。所有服务器端编码将始终检测 HTTP(非安全),对于尝试将非安全连接(http://)重定向到安全连接(https://)的程序,将在 30 秒后导致无限循环和服务器错误。
解决此问题的唯一方法是假设连接是安全的,方法是将所有指向敏感页面的链接设为 https,或者使用客户端程序(如 javascript)检测连接是否安全,如果不安全则重定向。下面的代码就可以做到这一点。只需修改它以重定向到正确的安全域并将其添加到任何敏感页面的 HTML 中即可。
<script language="javascript"> if (document.location.protocol != "https:") { document.location.href = "https://secure.domain.com" + document.location.pathname; }; </script>
如果您愿意运行自己的服务器并且它更适合您的需求,我们还提供 VPS 托管。
显然不是一个理想的解决方案!