【问题标题】:Apache PHP 5 header() Problem SSL domainsApache PHP 5 header() 问题 SSL 域
【发布时间】:2011-06-27 14:24:48
【问题描述】:

我想知道是否有人以前见过这个问题,以及你是否有解决方法的答案。基本上我有一个经过 SSL 加密的页面,以及那些不/不能加密的页面(由于插件依赖性)所以在没有 SSL 的页面上,我检测到一个标题并尝试重定向到 HTTP 版本页面:

if($_SERVER["HTTPS"] == "on")
{
  header("HTTP/1.1 301 Moved Permanently");
  header("Location: http://www.example.com");
  exit();
}

但是 PHP 似乎阻止我从安全域重定向到同一域的非安全站点!

如果我从https://www.example.com -> @987654321@ 出发,它可以工作,但是https://www.example.com -> @987654322@ 会迫使我留在加密网站上并导致无休止的重定向。

任何指针??

瑞克

【问题讨论】:

  • 信誉不足,无法粘贴两个以上的链接!
  • 我有根据的猜测是您的 Apache 设置被配置为重定向到安全页面。如果你注释掉 PHP 重定向,你能在浏览器中加载 http://www.example.com 吗?

标签: php linux apache2


【解决方案1】:

您也许可以确保您的标头尚未发送,这可能是保持在同一页面上的情况。从 php 手册中查看:

function redirect($url, $debug=FALSE){

// If headers not sent yet... then do php redirect
if (!headers_sent()) {
    header('Location: '.$url);
    exit;
// if headers are already sent... do javascript redirect... if javascript is disabled, do html redirect.
} else {

    // Js redirect
    echo '<script type="text/javascript">';
    echo "<!--";
    echo 'window.location.href="'. $url .'";';
    echo "//-->";
    echo '</script>';

    // HTML redirect if js disabled
    echo '<noscript>';
    echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
    echo '</noscript>';
}
}//==== End -- Redirect  

【讨论】:

    猜你喜欢
    • 2011-08-29
    • 2017-08-10
    • 2012-02-01
    • 2011-04-19
    • 2010-12-07
    • 2012-09-10
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多