WebブラウザがサーバーにリクエストするたびにHTTPステータスコードが返されます。サイト運用やSEO改善をするうえで、主要なステータスコードの意味を理解しておくことは欠かせません。

ステータスコードの分類

ステータスコードは先頭の数字によって5つのカテゴリに分類されており、発生した問題の種類をすぐに把握できます。

コード範囲分類意味
1xx情報レスポンス処理継続中
2xx成功リクエスト成功
3xxリダイレクト別URLへの転送
4xxクライアントエラーリクエスト側の問題
5xxサーバーエラーサーバー側の問題

よく使うステータスコード

サイト運用やSEO対応で特に重要な200・301・302・403・404・500・503を取り上げ、意味と対処法を説明します。

200 OK

リクエストが正常に処理されました。通常のページ表示やAPIレスポンスで返されます。

301 Moved Permanently(恒久的リダイレクト)

URLが恒久的に移動しました。SEO評価(リンクの評価)も新URLに引き継がれます。HTTPからHTTPS、wwwあり→なしの統一、旧URLから新URLへの恒久移転に使います。

302 Found(一時的リダイレクト)

URLが一時的に移動しました。メンテナンスページへの一時転送など、元のURLに戻す予定がある場合に使います。SEO評価は引き継がれません。

403 Forbidden

アクセスは届いているが、権限がないため拒否されました。.htaccess のIP制限やディレクトリ保護が原因であることが多いです。

404 Not Found

リクエストされたURLが存在しません。削除したページ、URLの変更後に古いURLが残っている場合などに発生します。

SEOの観点: 404ページが大量に発生している場合、Googleがクロールを無駄に消費します。移転したページには必ず301リダイレクトを設定してください。

500 Internal Server Error

サーバー内部でエラーが発生しました。PHPのコードエラー、.htaccess の記述ミス、パーミッション設定ミスなどが原因です。

503 Service Unavailable

サーバーが一時的に利用できません。メンテナンス中やサーバー過負荷時に返します。SEOクローラーに「一時的な問題」として伝えるため、503とともにRetry-Afterヘッダーを返すのが正しい実装です。

307 Temporary Redirect / 308 Permanent Redirect

301・302と異なり、HTTPメソッド(POST等)を保持したままリダイレクトします。フォーム送信先を変えるなど、POSTリクエストを転送したい場合に使います。

コード種類SEO評価引き継ぎメソッド保持
301恒久リダイレクトありなし(GETに変換される場合あり)
302一時リダイレクトなしなし
307一時リダイレクトなしあり
308恒久リダイレクトありあり

通常のページ転送には301を使えば問題ありません。

401 Unauthorized

認証が必要ですが、認証情報が提供されていません。Basic認証がかかっているページにログインせずアクセスした場合に返されます。

410 Gone

リソースが恒久的に削除されました。404と異なり「二度と存在しない」という意思表示です。削除済みページをGoogleのインデックスから早く消したい場合は404より410が有効です。

429 Too Many Requests

短時間に過剰なリクエストを送信した場合に返されます。APIのレート制限やDDoS対策で使われます。

502 Bad Gateway / 504 Gateway Timeout

サーバーが上流のサーバーから無効なレスポンスを受け取った(502)、または応答がなくタイムアウトした(504)状態です。Nginx+PHP-FPMなどのリバースプロキシ構成で発生しやすく、PHP-FPMのプロセス数不足やメモリ不足が原因になることがあります。

301リダイレクトの設定方法(.htaccess)

Apacheサーバーでの代表的な301リダイレクト設定例です。

# 特定のページを別URLに転送
Redirect 301 /old-page/ https://example.com/new-page/

# HTTP → HTTPS に全ページ転送
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

# www あり → なし に統一
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

設定後は古いURLにアクセスして正しく転送されるかを必ず確認します。

ステータスコードの確認方法

実際にURLがどのステータスコードを返しているかを確認する方法は2つあります。

ブラウザの開発者ツールで確認

Chrome・Edgeなどの開発者ツール(F12キー)→「ネットワーク」タブでページを読み込むと、すべてのリクエストのステータスコードを確認できます。

curlコマンドで確認

コマンドラインが使える環境では curl コマンドで確認できます。

curl -I https://example.com

-I オプションでHTTPヘッダーのみを取得します。HTTP/2 200 のような行でステータスコードが確認できます。

リダイレクトチェーンに注意

複数の301リダイレクトが連鎖すると(例: A→B→C→D)、ユーザーの体感速度が低下し、SEO評価の引き継ぎも弱まります。リダイレクトは1ホップに収めるのが理想です。

HTTPステータス・リダイレクトチェッカーでは、URLを入力するだけでリダイレクトチェーン全体を可視化できます。