2011-06-27 55 views
1

我想知道是否有人看到過這個問題,以及如何解決問題。基本上我有一個SSL加密的頁面,以及不能加密的頁面(由於插件的依賴)。因此,在沒有SSL的頁面上,我檢測到一個標題並嘗試重定向到HTTP版本該頁面:Apache PHP 5 header()問題SSL域名

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

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

如果我從https://www.example.com -> http://www.secondsite.com開始工作,但是https://www.example.com -> http://www.example.com強迫我留在加密的網站上並導致無盡的重定向。

任何指針?

裏克

+0

爲什麼點周圍的空格? –

+1

沒有足夠的聲望來粘貼兩個以上的鏈接! –

+1

我的教育猜測是你的Apache設置被配置爲重定向到安全頁面。如果您註釋掉PHP重定向,您可以在瀏覽器中加載「http:// www.example.com」嗎? –

回答

0

也許你可以確保你的頭還沒有被送到已經可能是情況下保持在同一頁上。從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