株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HOME > 技術ドキュメント > HTTPステータスコード実務ガイド

HTTPステータスコード実務ガイド(200・301・302・404・410・5xx)

執筆:株式会社エスロジカル(Webシステム受託開発・インフラ構築・運用改善)


HTTPステータスコードは、リンク切れ調査・リダイレクト設計・障害切り分け・SEO 改善の共通言語です。 意味を取り違えると、404 にすべき場所を 200 で返してしまったり、301 にすべき場所を 302 にしてしまって SEO 評価を取り損ねたりします。
本記事では実務で頻出するコードに絞って、意味・使い分け・誤用例を整理します。

分類意味主な実例
1xx情報(処理継続)100 Continue / 101 Switching Protocols(WebSocket)
2xx成功200 OK / 204 No Content / 206 Partial Content
3xxリダイレクト301 Moved Permanently / 302 Found / 304 Not Modified / 307 / 308
4xxクライアントエラー401 / 403 / 404 / 410 / 429
5xxサーバーエラー500 / 502 / 503 / 504

誤用が多い例:削除済みページに対して「ごめんなさい、この記事は削除されました」というメッセージを表示しつつ 200 を返してしまうパターン。 これは「ソフト 404」と呼ばれ、検索エンジンに削除されたことが伝わらないため、SEO 評価とクロールバジェットを浪費します。404 または 410 を返すのが原則です。

コード名称永続性メソッド変換典型用途
301Moved Permanently永続多くは GET に変換URL の恒久的な変更・HTTPS 化
302Found一時多くは GET に変換ログイン後の一時遷移など
303See Other一時GET に変換POST → GET の PRG パターン
304Not Modified変換しないIf-Modified-Since・ETag によるキャッシュ応答
307Temporary Redirect一時維持POST のまま別 URL へ転送したいとき
308Permanent Redirect永続維持API の URL 恒久変更(メソッドを維持したい)

SEO 観点:恒久的な変更は必ず 301(または 308)で返す。302 のままだと検索エンジンは「いずれ元 URL に戻る」と判断する可能性があり、ランクが新 URL に集約されません。 詳しい設計は 301/302 リダイレクト設計のベストプラクティス を参照してください。

コード名称使う場面
400Bad Requestリクエストの構文・必須パラメータ不正
401Unauthorized未認証(ログインしていない)。実態は「Unauthenticated」
403Forbidden認証済みだが権限が無い
404Not Foundリソースが見つからない(一時的・恒久的の区別なし)
410Gone恒久的に削除した(「もう戻ってきません」と明示)
429Too Many Requestsレート制限超過。Retry-After ヘッダー併用が望ましい

404 vs 410:「いずれ復活するかも」「URL を間違えただけかも」というニュアンスなら 404、「この記事はサービス終了で完全に削除した」「商品の取り扱いを終了した」など意図的な削除は 410 を選びます。 410 は検索エンジンに「この URL は二度と存在しません」と伝わり、インデックス除外が速いという実務メリットがあります。

コード名称原因と最初に見るべき場所
500Internal Server Errorアプリ側の未捕捉例外。アプリログ → スタックトレースを確認
502Bad Gateway上流(PHP-FPM・アプリプロセス)が落ちている or レスポンスが壊れている。systemctl status・nginx error.log の upstream エラーを確認
503Service Unavailable意図的な停止(メンテ)または過負荷。スケーリング・接続数上限を確認
504Gateway Timeout上流の応答が遅すぎる。DB スロークエリ・外部 API の遅延・タイムアウト値を確認

nginx → PHP-FPM 構成の典型障害:502 が頻発する場合は PHP-FPM のプロセス数上限(pm.max_children)に達している可能性が高い。 アクセスログ・error.log・ログ設計記事もあわせて参照してください。

外部・内部の自動巡回ツールは、概ね次のようにステータスを扱います。

弊社運営の リンク切れチェック(dead-link-checker.com) は、これらのステータスを区別して結果に表示します。 実際の運用フロー設計は Webサイトのリンク切れ調査と運用フロー入門 を参照してください。

# ステータスコードだけ取得
curl -o /dev/null -s -w "%{http_code}\n" https://example.com/

# ヘッダー表示(HEAD)
curl -I https://example.com/

# リダイレクト追跡(チェーン全体の表示)
curl -ILs https://example.com/

# 応答時間も表示
curl -o /dev/null -s -w "%{http_code} %{time_total}s\n" https://example.com/

リンク切れチェックサービス(弊社運営)
dead-link-checker.com は、4xx/5xx・タイムアウトを自動巡回検知する SaaS サービスです。
関連:リンク切れ調査と運用フロー入門 / 301/302 リダイレクト設計のベストプラクティス / SSL証明書

← 技術ドキュメント一覧へ戻る