2017-07-31 63 views
-2
<?php 
if(!isset($_SERVER["HTTPS"]) || $_SERVER["HTTPS"] != "on") 
{ 
error_reporting(E_ALL | E_WARNING | E_NOTICE); 
ini_set('display_errors', TRUE); 

header("Location: https://somesite.com/it"); 
die('should have redirected by now'); 

} 
?> 

這是我使用的實際代碼沒有任何空格或第一行代碼之前的任何內容。php頭已經發送第一行

返回: 警告:不能更改頭信息 - 頭已經發出在/ home/somesite /的public_html/IQ /測試(輸出開始/home/somesite/public_html/it/test.php:1)。 php 8行 現在應該重定向

爲什麼說我已經在第一行發送了頭文件?我該如何解決?

+0

您不能在flush()後發送頭文件。 – GrumpyCrouton

+1

這看起來像我給了一個更好的答案,看看https://stackoverflow.com/questions/4398951/force-ssl-https-using-htaccess-and-modrewrew – RiggsFolly

+0

這個答案工作,把東西https,但是我仍然需要能夠更改標題。由於我的代碼沒有問題,會導致標題無法正常工作? –

回答

2

在發送標題之前,請勿調用flush();。它發送輸出緩衝區,所以它會觸發標題發送階段的結束。

+0

嘗試過仍然 警告:無法修改頭信息 - 已在/home/somesite/public_html/iq/test.php在線發送的頭文件(輸出開始於/home/somesite/public_html/iq/test.php:1) 7 應該重定向到現在 –