PHP で意図的に特定のステータスコードでレスポンスを返そうと思う場面がときどきあります。
フレームワークによってはフィルタで設定したり、目的のコントローラ内に定義したり作法はそれぞれですが、通常のシンプルな PHP スクリプトであれば header() 関数を使うことになります。
その際、header 関数の引数がパッと出てこない場合があるのでまとめてみました。
成功
通常は 200 だけで十分ですが、API の利用シーンが多くなり、データの新規登録の場合は 201 を返すなど細かく設定しているサイトもあります。
200 OK
200 であれば意図的に変更するまでもないですが以下の定義になります。
1 | header('HTTP/1.1 200 OK'); |
リダイレクト
主にリダイレクトでは 301 または 302 が使われます。
301 リダイレクト
永続的なリダイレクトです。
Google の SEO を意識する場合は使う機会もありますよね。
1 | header('Location: https://example.org/', true, 301); |
レスポンスヘッダには以下が記載されていると思います。
1 | Moved Permanently |
302 リダイレクト
一時的なリダイレクトです。
1 | header('Location: https://example.org/'); |
クライアントエラー
クライアント側に問題がある場合に使われるステータスコードです。
400 リクエスト不正
リクエストのヘッダやパラメータの内容に不備がある場合に使用します。
1 | header('HTTP/1.1 400 Bad Request'); |
403 ページを表示する権限がない
特定のアクセスだけ見せたくない場合などに使うケースもあります。
1 | header('HTTP/1.1 403 Forbidden'); |
404 ページが見つからない
1 | header('HTTP/1.1 404 Not Found'); |
サーバエラー
サーバ側に問題がある場合に返されるエラーです。
リクエストタイムアウトやロードバランサーが絡んだ場合など、502 や 504 が使われるケースもあります。
500 サーバ側のエラー
開発者としてはあまりお目にかかりたくないエラーですね。
1 | header('HTTP/1.1 500 Internal Server Error'); |
503 一時的にサービスが提供できない
メンテナンスや一時的にサーバが利用できない場合に使用します。
1 | header('HTTP/1.1 503 Service Unavailable'); |