2017-07-31 8 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ヘッダーはすでに最初の行に送信されています

戻り値: 警告:ヘッダー情報を変更することはできません - すでにによって送られたヘッダ/ホーム/ somesite/public_htmlの/ IQ /テストでは(出力が/home/somesite/public_html/it/test.php:1で開始しました)。 php on line 8 は今のところリダイレクトされているはずです

なぜ私は最初の行にヘッダを送ったと言いますか?これをどうやって解決するのですか?

+0

'flush()'の後にヘッダーを送ることはできません。 – GrumpyCrouton

+1

これは私が与えたより良い答えのようです。https://stackoverflow.com/questions/4398951/force-ssl-https-using-htaccess-and-mod-rewrite – RiggsFolly

+0

その答えは、しかし、私はまだヘッダーを変更できる必要があります。私のコードに何も問題はないので、ヘッダーはそのままで動作しません。 –

答えて

2

ヘッダーを送信する前にflush();に電話をかけないでください。出力バッファを送信するので、ヘッダ送信フェーズの終了がトリガされます。

+0

まだ試したことがあります 警告:ヘッダー情報は変更できません - 既に送信されたヘッダー(/home/somesite/public_html/iq/test.php:1に出力が開始されました)/home/somesite/public_html/iq/test.php on line 7 は今すぐリダイレクトされているはずです –

関連する問題