PHPのhttp_response_code(200);とは?

PHPの http_response_code(200); は、HTTPレスポンスのステータスコードを
200 OK に設定する関数です。
本記事では、この関数の役割や使用例、注意点について詳しく解説します。

http_response_code(200); の基本

HTTPレスポンスコードは、クライアント(ブラウザやクローラー)が
サーバーから受け取る応答の状態を示します。

http_response_code(200); // Googlebot に 200 OK を返す

このコードを実行すると、クライアントは 200 OK のステータスを受け取り、
「リクエストが正常に処理された」と判断します。

使用される主な場面

この関数は、以下のような状況で活用されます。

カスタム 404 ページで意図的に 200 を返す

通常、存在しないページにアクセスすると 404 Not Found が返されます。
しかし、特定のページでは 200 OK を返したい場合があります。

if (!file_exists($page)) {
    include 'custom_404.php';
    http_response_code(200); // 通常は 404 だが、200 に変更
}

これは、Googlebot にカスタムの 404 ページをインデックスさせる場合に使われることがあります。

リダイレクト後のページで正しいステータスを設定

リダイレクトを行った後、特定のページで 200 OK を明示的に返すことがあります。

header("Location: /new-page.php");
http_response_code(200); // リダイレクト後に 200 OK を確実に返す

通常、リダイレクトでは 301 Moved Permanently302 Found が使われますが、
特定の要件では 200 OK を指定することがあります。

Googlebot などのクローラー向けに適切なステータスを返す

Googlebot がページをクロールする際、誤って 403 Forbidden500 Internal Server Error を返すと、インデックスされなくなる可能性があります。
特定のページで確実に 200 OK を返すことで、クロールエラーを防ぐことができます。

if ($is_googlebot) {
    http_response_code(200); // クローラーに 200 OK を返す
}

http_response_code(200); の注意点

適切なステータスコードを使用する

誤って 404 Not Found500 Internal Server Error200 OK に変更すると、SEO に悪影響を与える可能性があります。

例えば、本来 404 Not Found を返すべきページに 200 OK を返すと、Google はそのページが正しいと認識してしまい、検索結果に不要なページがインデックスされる可能性があります。

既にレスポンスを送信した後には変更できない

PHP の http_response_code() は、レスポンスの送信後には変更できません。

echo "Hello, World!";
http_response_code(200); // これは無効になる

このように echo で出力を開始した後では、http_response_code() は意味を持ちません。
そのため、適用する場合は、出力処理の前に記述する必要があります。

まとめ

  • http_response_code(200); は、HTTPレスポンスのステータスコードを 200 OK に設定する関数。
  • カスタム 404 ページやリダイレクト後の処理、Googlebot への対応などに利用される。
  • 不適切な使用は SEO に悪影響を及ぼす可能性がある。
  • すでにレスポンスを送信した後には適用できない。

正しく使うことで、適切なレスポンス管理が可能になります。
適用場面をしっかり理解して、適切に活用しましょう!