現在の位置: ホーム> 最新記事一覧> Header()関数を使用してリダイレクトするときにページが空白になるのはなぜですか?この問題をトラブルシューティングして解決する方法は?

Header()関数を使用してリダイレクトするときにページが空白になるのはなぜですか?この問題をトラブルシューティングして解決する方法は?

M66 2025-07-28

PHP開発では、ページリダイレクトにheader()関数を使用することは一般的な慣行です。例えば:

 header("Location: http://m66.net/anotherpage.php");
exit;

上記のコードは、ユーザーをhttp://m66.net/anotherpage.phpページにリダイレクトします。リダイレクトは非常にシンプルで一般的な操作ですが、特にHeader()関数を使用する場合、空白のページに遭遇することもあります。この記事では、ページが空白である理由を説明し、トラブルシューティングとソリューションを提供します。

1。ヘッダー()関数の前に出力はありますか?

HTML出力の前に、 Header()関数を呼び出す必要があります。 HTMLコンテンツ(スペース、ラインブレイク、エラーメッセージなど)がHeader()関数を呼び出す前に出力された場合、PHPはエラーをスローし、リダイレクトは有効になり、最終的にページが空白になる可能性があります。

解決:

  • Header()関数に以前に出力がないことを確認してください。ファイルの開始とHeader()呼び出しの間にスペース、ラインの破損、またはHTMLコンテンツがあるかどうかを確認できます。

  • 予期しない出力を避けるために、ファイルの先頭にスペースやニューラインがないことが最善です。ファイルのBOM(バイトオーダーマーカー)を調べることで、ファイルが正しくエンコードされているかどうかを確認して、余分な空白文字が含まれていないことを確認できます。

手順のトラブルシューティング:

  1. PHPファイルを開き、 Header()関数の前に出力がないことを確認します。

  2. 必要に応じて、 ob_start()を使用して出力バッファリングを有効にして、早期出力を避けます。

 <?php
ob_start(); // 出力バッファリングをオンにします
header("Location: http://m66.net/anotherpage.php");
exit;
ob_end_flush(); // 出力バッファーをきれいにし、コンテンツを出力します
?>

2。exit ()関数はheader()の後に呼び出されますか?

Header()関数はすぐにスクリプトの実行を終了せず、 exit()またはdie()関数がその後呼び出された場合にのみ、スクリプトは実行を停止します。したがって、 header()を呼び出した後にexit()を呼び出さない場合、PHPは後続のコードを実行し続ける可能性があり、ページに空白またはエラーが発生します。

解決:

  • Header()関数の直後にExit()を呼び出して、スクリプトが実行を終了し、他のコンテンツが出力されないことを確認します。

 header("Location: http://m66.net/anotherpage.php");
exit; // スクリプトが実行を終了することを確認してください

3。ヘッダー情報は送信されましたか?

ヘッダー情報がheaders_sent()関数を介して送信されたかどうかを確認できます。 BrowserがHeader()関数が呼び出されたときにヘッダー情報を受信した場合、PHPはヘッダー情報を再度送信できず、リダイレクト障害になります。

解決:

  • header()関数を呼び出す前に、 headers_sent()関数を使用して、ヘッダー情報が送信されているかどうかを確認します。

  • ヘッダーが送信されている場合、 ob_start()を使用して出力をバッファーできます。

 if (!headers_sent()) {
    header("Location: http://m66.net/anotherpage.php");
    exit;
} else {
    echo "リダイレクトできません,ヘッダー情報が送信されました";
}

4.ページを空白にするPHPエラーはありますか?

ページブランクは、PHPエラーによって引き起こされる場合があります。デフォルトでは、PHPはエラーメッセージを表示するのではなく、ブランクページを直接出力する場合があります。エラーレポートをオンにすることで、潜在的な問題があるかどうかを確認できます。

解決:

  • 開発中、PHPエラーレポートを有効にして、潜在的なエラーを検出および修正します。

 error_reporting(E_ALL);  // すべてのエラーレポートをオンにします
ini_set('display_errors', 1);  // ページにエラーを表示します

5。リダイレクトに正しいHTTPステータスコードは使用されていますか?

Header()関数を使用してリダイレクトする場合、正しいHTTPステータスコードが使用されていることを確認してください。デフォルトのリダイレクトステータスコードは302(一時リダイレクト)です。リダイレクトが永続的な場合は、301ステータスコードを使用する必要があります。

 header("Location: http://m66.net/anotherpage.php", true, 301); // 永続的なリダイレクト
exit;

要約します

上記のトラブルシューティング手順を通じて、 header()関数を使用してリダイレクトするときにページブランクの問題を発見して解決できます。重要な検査ポイントは次のとおりです。

  • Header()呼び出しの前に出力がないことを確認してください。

  • exit()を呼び出して、スクリプトが実行を終了することを確認します。

  • ヘッダーメッセージが送信されているかどうかを確認してください。

  • エラーレポートをオンにして、他のエラーメッセージがあるかどうかを確認します。

これらの措置により、ページブランクの問題を回避し、リダイレクトを適切に機能させることができます。