PHP

PHPのステータスコード別のheader関数の引数

PHP で意図的に特定のステータスコードでレスポンスを返そうと思う場面がときどきあります。

フレームワークによってはフィルタで設定したり、目的のコントローラ内に定義したり作法はそれぞれですが、通常のシンプルな PHP スクリプトであれば header() 関数を使うことになります。

その際、header 関数の引数がパッと出てこない場合があるのでまとめてみました。

成功

通常は 200 だけで十分ですが、API の利用シーンが多くなり、データの新規登録の場合は 201 を返すなど細かく設定しているサイトもあります。

200 OK

200 であれば意図的に変更するまでもないですが以下の定義になります。

リダイレクト

主にリダイレクトでは 301 または 302 が使われます。

301 リダイレクト

永続的なリダイレクトです。

Google の SEO を意識する場合は使う機会もありますよね。

レスポンスヘッダには以下が記載されていると思います。

302 リダイレクト

一時的なリダイレクトです。

クライアントエラー

クライアント側に問題がある場合に使われるステータスコードです。

400 リクエスト不正

リクエストのヘッダやパラメータの内容に不備がある場合に使用します。

403 ページを表示する権限がない

特定のアクセスだけ見せたくない場合などに使うケースもあります。

404 ページが見つからない

サーバエラー

サーバ側に問題がある場合に返されるエラーです。

リクエストタイムアウトやロードバランサーが絡んだ場合など、502 や 504 が使われるケースもあります。

500 サーバ側のエラー

開発者としてはあまりお目にかかりたくないエラーですね。

503 一時的にサービスが提供できない

メンテナンスや一時的にサーバが利用できない場合に使用します。