无法使用PHP重定向到HTTPS

时间:2012-01-17 19:51:06

标签: php

我刚刚为我正在处理的网站安装了一个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,所以它试图不停地重定向。

2 个答案:

答案 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']);
}

这很有用,也可以将您重定向到上一个网址。

希望这会有所帮助。