PHPでは、 Header()関数を使用して、RAW HTTPヘッダー情報をブラウザに送信します。通常、リダイレクト、コンテンツタイプの設定、キャッシュの制御、HTTPステータスコードおよびその他のシナリオの設定に使用されます。多くの場合、デフォルトのHTTPステータスコード(200など)で十分ですが、特定の特別なニーズの下では、HTTPステータスコードをカスタマイズする必要がある場合があります。この記事では、Header()関数を使用してカスタムHTTPステータスコードを正しく設定する方法を紹介します。
HTTPステータスコードは、クライアントリクエストに応答するときにサーバーが送信した3桁のコードです。これは、リクエストの結果を表します。一般的なステータスコードは次のとおりです。
200 OK:リクエストは成功しました
301は永続的に移動しました:永久にリダイレクトされました
404見つかりません:ページが見つかりません
500内部サーバーエラー:内部サーバーエラー
さまざまなリクエストと応答をより正確に説明するために、ニーズに応じてステータスコードをカスタマイズできます。
Header()関数の基本的な構文は次のとおりです。
header(string $header, bool $replace = true, int $http_response_code = 0)
$ヘッダー:HTTPヘッダー情報のコンテンツを指定するために渡す必要があるパラメーター。コンテンツタイプ、リダイレクト、ステータスコードなどを設定できます。
$の置き換え:これはオプションのパラメーターであり、デフォルトでtrueになり、既存のヘッダー情報を置き換えるかどうかを示します。
$ http_response_code :これは、HTTPステータスコードを指定するオプションのパラメーターです。パラメーターが0の場合、 Header()は、提供するヘッダー値に従ってステータスコードを自動的に設定します。
カスタムHTTPステータスコードを設定するには、 Header()関数にHTTP/1.1を指定し、その後カスタムステータスコードと説明情報を指定します。例は次のとおりです。
<?php
// 設定 404 Not Found ステータスコード
header("HTTP/1.1 404 Not Found");
?>
リクエストの特定のステータスコードと説明を返す必要がある場合は、次のようなコードを使用することもできます。
<?php
// 設定 403 Forbidden ステータスコード
header("HTTP/1.1 403 Forbidden");
?>
標準のHTTPステータスコードを同様の方法で設定できます。ステータスコードと説明を必要なものに変更するだけです。
Webサイトを開発しており、ユーザーが存在しないページにアクセスしたときにカスタム404エラーページを返したいとすると、次のコードを使用できます。
<?php
// 設定 404 Not Found ステータスコード
header("HTTP/1.1 404 Not Found");
// 意思 URL エラーページ(例えば, 'error.php')ユーザーに表示します
include('error.php');
?>
この例では、ユーザーが存在しないページにアクセスすると、サーバーは404ステータスコードを返し、 Error.phpページを表示します。
ページにアクセスした直後にユーザーを別のURLにリダイレクトする場合は、次のコードを使用できます。
<?php
// 設定 301 永久重定向ステータスコード
header("HTTP/1.1 301 Moved Permanently");
// 設定新的重定向 URL
header("Location: https://m66.net/newpage");
exit;
?>
このコードは、ユーザーをhttps://m66.net/newpageにリダイレクトし、これが永続的なリダイレクトであることをブラウザに伝えます。
内部サーバーエラーが発生したら、500ステータスコードを設定して、次のようなカスタムエラーページを返すことができます。
<?php
// 設定 500 Internal Server Error ステータスコード
header("HTTP/1.1 500 Internal Server Error");
// カスタムエラーページに戻ります
include('500_error.php');
?>
この例では、 500_ERROR.PHPページがユーザーに表示され、サーバーエラーが発生したことを通知します。
ヘッダー()関数は出力前に呼び出す必要があります。そうしないと、HTTPヘッダー情報は変更されません。 HTML出力またはエコー出力がある場合、 Header()関数を呼び出すと、エラーが発生します。
各ページは、HTTPヘッダー情報を1回しか送信できません。 Header()を複数回呼び出すときは特に注意してください。同じステータスコードまたはヘッダー情報を繰り返し設定しないでください。
リダイレクトを行う場合は、 Header()の後にExitを追加することを忘れないでください。そうしないと、プログラムは後続のコードを実行し続けることで、不必要な動作が生じます。
Header()関数はPHPの非常に強力なツールであり、HTTPステータスコードを設定し、ページリダイレクトを実行し、キャッシュを制御するなどします。Header ()関数を合理的に使用することにより、ユーザーエクスペリエンスとブラウザの動作をより適切に制御できます。開発中、特定のステータスコードをユーザーに返す必要がある場合は、Webサイトの安定性と正しさを確保するために、HTTPヘッダー情報を正しく設定することを忘れないでください。