我刚刚为我正在处理的网站安装了一个ssl,我显然需要将一些页面(结帐等)重定向到https。
我目前正在使用此代码:
if (!isset($_SERVER['HTTPS']) || !$_SERVER['HTTPS']) {
$url = 'https://www.mysite.php';
header("location: ". $url);
exit();
}
Firefox告诉我“该网页正试图以永远不会完成的方式重定向。”
当我在安全页面上时,$ _SERVER的var_dump显示没有['HTTPS']或类似内容。这是一个Network Solutions小型unix软件包。我是否有可能需要检查不同的服务器变量,或者我需要更改一些服务器设置?
显然,脚本永远不会找到HTTPS,所以它试图不停地重定向。
答案 0 :(得分:0)
如果您使用OR
:
if (!isset($_SERVER['HTTPS']) OR !$_SERVER['HTTPS']) {
即使您已经处于HTTPs模式,有可能总是评估为true的条件之一。
您想要AND
:
if (!isset($_SERVER['HTTPS']) AND !$_SERVER['HTTPS']) {
答案 1 :(得分:0)
我也使用这种形式的SSL检查。对我来说,我的代码有效。这就是我的所作所为。
if(empty($_SERVER['HTTPS']) || $_SERVER['HTTPS'] != "on") {
header("Location: https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
}
这很有用,也可以将您重定向到上一个网址。
希望这会有所帮助。