この記事の要点:
- HTTPステータスコードは、ページを求められたサーバーが「どうなったか」を返す3桁の番号です。SEOで主に見るのは200・301・302・304・404・410・429・500・503と、番号が返らないネットワークやDNSのエラーです。
- Googleは、429を除く4xxのURLをインデックスに入れず、登録済みなら外します。5xxと429はサーバーの問題と見なしてクロールを遅くし、続けば登録済みのURLも外します。
- メンテナンスなどで一時的に止めるときは503(または429)を返します。Googleは、これらでクロールを減らすのは数時間から1〜2日ほどの短い期間にとどめるよう案内しており、同じURLで何日も続くと、そのURLがインデックスから外れることがあります。
- robots.txtの番号はサイト全体に効きます。robots.txtが5xxを返すと、Googleは最初の12時間、サイトのクロールを止めます。
- 確かめるときは、ブラウザの表示ではなく番号そのものを見ます。curl、ブラウザの開発者ツール、Search ConsoleのURL検査・ページのインデックス登録・クロールの統計情報を使い分けます。
HTTPステータスコードとは:SEOで知っておくべき番号の早見表
HTTPステータスコードとは、ブラウザやクローラーがURLを求めたときに、サーバーが結果として返す3桁の番号です。画面には出ないことが多いですが、Googleのクローラーは、まずこの番号でページの状態を判断します。
番号は最初の1桁で5つのグループに分かれます。1xxは処理の途中の連絡、2xxは成功、3xxは別の場所への案内(リダイレクト)、4xxは求め方の側の問題、5xxはサーバー側の問題です。SEOで扱うのは主に2xx〜5xxです。
| 番号 | 意味 | Google検索での扱い(公式の説明の要約) |
|---|---|---|
| 200 | 成功 | 内容をインデックス登録の処理に渡す。登録が約束されるわけではない |
| 301・308 | 恒久的な移動 | 転送先を正規のURLとする強いシグナルとして扱う |
| 302・307 | 一時的な移動 | 転送はたどるが、正規のURLを選ぶシグナルとしては弱い |
| 304 | 前回から変更なし | 前回取得した内容が変わっていないと見なす。インデックス登録への影響は無い |
| 404・410 | 見つからない・削除済み | インデックスに登録しない。登録済みのURLは外す |
| 401・403 | 認証が必要・アクセス禁止 | 404と同じ4xxとして扱い、登録しない |
| 429 | リクエストが多すぎる | 4xxだが、サーバーが混んでいる合図として5xxと同じように扱う |
| 500・502・503 | サーバーのエラー | クロールを一時的に遅くする。続くと登録済みのURLも外す |
この表は、Google検索セントラルの「HTTPステータスコード、ネットワークエラー、DNSエラーがGoogle検索に与える影響」の内容をまとめたものです。番号ごとの意味そのものはHTTPの仕様(RFC 9110)で決まっていますが、検索での扱いはGoogleの説明で確かめます。
1xx〜5xxの主な番号の一覧
HTTPの仕様(RFC 9110。429はRFC 6585)で決まっている、1xx〜5xxの主な番号の意味は次のとおりです。
| 番号 | 名前 | 意味 |
|---|---|---|
| 100 | Continue | リクエストの続きを送ってよい |
| 101 | Switching Protocols | 通信の方式を切り替える |
| 200 | OK | 成功 |
| 201 | Created | 成功し、新しいものが作られた |
| 204 | No Content | 成功したが、返す内容は無い |
| 206 | Partial Content | 求められた一部だけを返す |
| 番号 | 名前 | 意味 |
|---|---|---|
| 301 | Moved Permanently | 恒久的に移動した |
| 302 | Found | 一時的に別のURLにある |
| 303 | See Other | 別のURLを取りに行くよう案内する |
| 304 | Not Modified | 前回から変わっていない |
| 307 | Temporary Redirect | 一時的な移動(求め方を変えずに転送) |
| 308 | Permanent Redirect | 恒久的な移動(求め方を変えずに転送) |
| 400 | Bad Request | リクエストの形が正しくない |
| 401 | Unauthorized | 認証が必要 |
| 403 | Forbidden | アクセスが禁止されている |
| 番号 | 名前 | 意味 |
|---|---|---|
| 404 | Not Found | 見つからない |
| 405 | Method Not Allowed | その求め方(メソッド)は使えない |
| 410 | Gone | 削除され、もう無い |
| 429 | Too Many Requests | リクエストが多すぎる |
| 500 | Internal Server Error | サーバー内部のエラー |
| 502 | Bad Gateway | 中継のサーバーが、先のサーバーから正しい応答を得られない |
| 503 | Service Unavailable | 一時的に使えない |
| 504 | Gateway Timeout | 中継のサーバーが、先のサーバーの応答を待ちきれない |
Googleは番号のグループごとにどう扱うか
同じ「エラー」でも、4xxと5xxではGoogleの反応が大きく違います。4xxは「このURLには内容が無い」、5xxは「今はサーバーが応えられない」という意味に受け取られるためです。
2xx:内容があるという合図
200を返したURLの内容は、インデックス登録の処理に渡されます。ただし、Googleは2xxが登録を保証するわけではないと説明しています。中身が「ページが見つかりません」のような内容なのに200を返していると、ソフト404と判断され、登録されません。原因と直し方は「404エラーとソフト404の違い」で説明しています。
3xx:転送の種類で意味が変わる
Googlebotは、転送を最大10回までたどります。それまでに内容にたどり着けないと、Search Consoleではリダイレクトのエラーとして報告されます。301と308は転送先を正規のURLにする強いシグナル、302と307は弱いシグナルです。転送の書き方と使い分けは「301リダイレクトの設定と確かめ方」にまとめています。
4xx:429以外はクロールの速さに影響しない
Googleは、429を除く4xxをどれも同じように扱い、インデックスに登録しないと説明しています。登録済みのURLが4xxを返すようになると、インデックスから外れます。また、これらの番号はクロールの頻度には影響しません。
5xxと429:クロールを遅くする合図
5xxと429を受け取ると、Googleのクローラーはクロールを一時的に遅くします。登録済みのURLはしばらく残りますが、エラーが続くと最終的にインデックスから外されます。Googleは、遅くする効果はエラーを返したURLだけでなく、そのホスト名全体に及ぶと説明しています。
ネットワークとDNSのエラー:番号が返らない状態
接続がタイムアウトする、途中で切れる、ドメイン名からサーバーの場所を引けない(DNSのエラー)といった場合、番号は返りません。Googleはこれらを5xxと同じように扱い、すぐにクロールを遅くし始めます。届かない状態が続くと、登録済みのURLは数日のうちにインデックスから外れることがあるとされています。
メンテナンスや負荷が高いとき、何を返すべきか
サイトを一時的に止めるときに返す番号を間違えると、戻した後も検索での表示が回復するまで時間がかかることがあります。Googleの説明に沿うと、判断は次のとおりです。
| 場面 | 返す番号 | 理由と注意 |
|---|---|---|
| 数時間のメンテナンスでサイト全体を止める | 503 | 一時的に使えないことを伝えられる。メンテナンス画面を200で返すと、その内容が登録されるおそれがある |
| アクセスが集中し、サーバーが耐えられない | 503または429 | Googleは、クロールを急いで減らしたいときの方法として案内している |
| クロールの量を長く抑えたい | 番号ではなく、サーバーの増強やURLの整理で対応する | Googleは、503や429を1〜2日を超えて返し続けないよう案内している。同じURLで何日も続くと、インデックスから外れることがある |
| クローラーを止めたいので403や404を返す | 使わない | Googleは、クロールの量の調整に403や404を使わないよう呼びかけている。内容が検索から外れる原因になる |
Googleは「Googlebot のクロール頻度を下げる」で、500・503・429でクロールを急いで減らすのは、数時間から1〜2日ほどの短い期間にとどめるよう案内しています。それより長く続けると検索での表示に悪い影響が出ることがあり、同じURLで何日もこれらの番号が続くと、そのURLがインデックスから外れることがあります。ですから、503は「短い時間だけ」使う番号です。メンテナンスが長引きそうなときは、サイトを部分的に開ける、静的なページだけでも200で返すなど、止める範囲を小さくする方法を考えます。
503や429と一緒に、再開の目安を伝えるRetry-Afterという見出し(ヘッダー)を返すこともできます。Googleは同じページで、Retry-Afterを付けると、Googleのクローラーがいつ再びリクエストしてよいかを、秒数(例:Retry-After: 120)か、UTCの日時で伝えられると説明しています。付けた場合も、止める期間そのものは短くとどめます。
# 例:Apache(.htaccess)で、管理者のIP以外に503を返すメンテナンス設定
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^203.0.113.10$
RewriteCond %{REQUEST_URI} !^/maintenance.html$
RewriteRule ^ - [R=503,L]
ErrorDocument 503 /maintenance.html
Header always set Retry-After "3600"
上は説明用の例です。IPアドレスやファイル名は自分の環境に合わせ、本番に入れる前に検証用の環境で番号を確かめます。Headerの行はmod_headersが有効な場合だけ使えます。
状況別:どの番号を返すのが正しいか
番号は「ページが今どういう状態か」を正直に伝えるために選びます。よくある場面を表にまとめます。
| ページの状態 | 返す番号 | 避けたい返し方 |
|---|---|---|
| 普通に公開しているページ | 200 | ― |
| URLを変えた、記事を統合した | 301(または308) | 302で長く転送する、旧URLを404にする |
| キャンペーン中だけ別のページに案内する | 302(または307) | 301にする(終わった後も転送先が正規と見なされやすい) |
| 記事を削除し、代わりになるページが無い | 404または410 | トップページへ一律に301で転送する(ソフト404になりやすい) |
| 会員だけが読めるページ | 401または403(検索に出す必要が無い場合) | ログイン画面を200で返し、同じ内容のURLが大量に登録される |
| 一時的なメンテナンス | 503 | メンテナンス画面を200で返す、何日も503のままにする |
| サイト内検索の結果が0件 | 200で返すなら検索結果ページにnoindex、または404 | 何も無い一覧を200のまま大量に登録させる |
ページを検索に出したくないだけなら、番号ではなくnoindexの指定を使う方法もあります。番号は「ページがあるか無いか、使えるかどうか」、noindexは「あるが検索に出さない」を伝えるもの、と分けて考えると選びやすくなります。
robots.txtの番号はサイト全体のクロールに効く
robots.txtは、クローラーがサイトに来て最初に取りに行くファイルです。このファイルが返す番号によって、Googleのクロールのしかたがサイト全体で変わります。Googleのrobots.txtの説明では、次のように扱うとされています。
| robots.txtが返す番号 | Googleの扱い |
|---|---|
| 2xx | 書かれているルールに従う |
| 3xx | 転送を少なくとも5回たどり、それでも取れなければ404と同じ扱いにする |
| 4xx(429を除く) | 有効なrobots.txtが無いと見なし、制限なしでクロールする |
| 5xx・429・ネットワークやDNSのエラー | 最初の12時間はサイトのクロールを止め、取得を試し続ける。その後30日間は最後に取得できた内容を使う。それも無ければ制限なしと見なす |
つまり、ページは正常でもrobots.txtだけが5xxを返していると、サイト全体のクロールが止まります。サーバーのボット対策やファイアウォールが、robots.txtへのアクセスだけを拒んでいる例もあるため、障害のときはrobots.txtの番号も確かめます。書き方そのものは「robots.txtの書き方と確認方法」で説明しています。
自分のサイトの番号を確かめる方法
ブラウザで画面が見えても、番号が正しいとは限りません。エラー画面が200で返っていることもあれば、転送が何回も重なっていることもあります。目的に合わせて道具を選びます。
| 道具 | 分かること | 向いている場面 |
|---|---|---|
| curl(コマンド) | 番号、転送先、転送の回数 | 1つのURL、または一覧のURLをまとめて調べる |
| ブラウザの開発者ツール(ネットワーク) | ページと、画像・CSS・JavaScriptそれぞれの番号 | 部品の読み込みの失敗を探す |
| Search ConsoleのURL検査 | Googlebotが取得したときの結果 | Googleからどう見えたかを確かめる |
| Search Consoleの「ページのインデックス登録」 | 404・5xx・リダイレクトのエラーなど、理由別の未登録のURL | サイト全体の傾向を見る |
| Search Consoleの「クロールの統計情報」 | レスポンスの番号ごとの割合、robots.txt・DNS・接続の状態 | サーバー側の問題が続いていないかを見る |
curlで番号と転送をたどる
# 1つのURLの番号を見る(-I は見出しだけを取得)
curl -sI https://www.example.com/page/
# 転送をたどり、最後の番号・転送の回数・最後のURLを表示する
curl -s -o /dev/null -L -w "%{http_code} %{num_redirects} %{url_effective}n" https://www.example.com/old/
# urls.txt の URL を1行ずつ調べる
while read u; do
curl -s -o /dev/null -w "%{http_code} $un" "$u"
done < urls.txt
例:301 1 https://www.example.com/new/ のように出れば、1回の転送で新しいURLに着いています。2回以上なら転送が重なっています。サーバーによってはcurlとブラウザで違う番号を返すことがあるため、気になるときは-Aでユーザーエージェントを変えて比べます。
Search Consoleで見る順番
- 「ページのインデックス登録」で、「サーバーエラー(5xx)」「見つかりませんでした(404)」「リダイレクト エラー」などの理由ごとの件数を見ます。
- 気になる理由を開き、例として出ているURLをURL検査で調べます。今も同じ番号かは「公開URLをテスト」で確かめます。
- 5xxやDNSが気になるときは、「設定」の「クロールの統計情報」で、レスポンスの内訳と「ホストのステータス」を見ます。
- 直したら、該当の理由の画面で「修正を検証」を押し、再確認を依頼します。
サーバーのログでGooglebotが受け取った番号を集計する方法はクローラーの仕組みとログの読み方で紹介しています。
番号の誤りが起きやすい場面と直し方
番号の問題は、ページを作るときより、設定を変えたときや、サーバーの外側の仕組みで起きやすいものです。
| 起きること | よくある原因 | 直し方 |
|---|---|---|
| Googlebotにだけ403が返る | CDNやファイアウォールのボット対策が、Googlebotを止めている | Googleが案内する方法(逆引きDNSや公開のIPアドレスの一覧)で本物のGooglebotを判別し、許可する |
| 特定の時間帯に5xxが増える | バックアップや一括処理と、クロールが重なっている | 処理の時間や負荷を見直す。サーバーのログで、5xxが出た時刻を確かめる |
| エラー画面が200で返る | CMSやアプリが、エラーのときも通常のテンプレートで返している | エラーのときは404や503を返すよう設定する |
| 転送が何回も重なる | http→https、wwwあり→なし、末尾のスラッシュを別々に転送している | 最終のURLへ1回で転送するようにまとめる |
| 削除したページがすべてトップに転送される | プラグインの「404をトップへ転送」の設定 | 代わりのページがあるものだけ301、それ以外は404に戻す |
| robots.txtが404・5xxになる | サーバーの移転や設定の変更で、ファイルが消えた・拒否されている | 移転の後に必ず/robots.txtの番号を確かめる |
大きな変更の後は、主要なページの一覧をcurlで流して、番号が想定どおりかを確かめる習慣をつけると、問題を早く見つけられます。
当サイト(seoagent.jp)で番号をそろえた例
当サイト(seoagent.jp)では、トップ / から日本語版 /ja/ への転送が302(一時的)になっていました。これを301(恒久的)に変え、旧サイト時代のURLも1対1で301にしました。
また、記事がまだ無い一覧ページや、存在しない番号のページ(例:記事数を超えたページ番号)が検索の対象になりうる状態でした。記事の無い一覧はnoindexにしてサイトマップから外し、範囲外のページ番号は404、親カテゴリーは一覧ページへ301にしています。これらの番号は、反映のたびに確認しています。
反映のときに追加した処理の名前が既存のものと重なり、本番のサイトが約9分止まったこともあります。以後は、反映の前にPHPの構文と関数名の重なりを自動で確かめ、問題があれば反映を止めるようにしました。サイトが止まると、その間に来たクローラーにも正しい番号を返せません。番号の確認とあわせて、止めない仕組みも大切です。
よくある質問
404が多いと、サイト全体の評価が下がりますか?
Googleは、一部のURLが404でも、ほかのページの順位には影響しないと説明しています。直すべきなのは、残したいページが404になっている場合と、サイト内のリンクが404のURLを指している場合です。
410と404はどちらを使えばよいですか?
Googleの説明では、429以外の4xxは同じように扱われます。削除したことをはっきり示したいなら410、迷うなら404で問題ありません。
一時的なエラーで5xxが出てしまいました。順位は戻りますか?
短い時間であれば、Googleは再試行して、登録済みのURLはしばらく残すと説明しています。原因を直したら、URL検査で今の番号が200に戻っていることを確かめ、クロールの統計情報でエラーが減っていくかを見ます。
304を返すと、ページが更新されていないと見なされて不利になりますか?
304は、前回の取得から内容が変わっていないことを伝える番号で、Googleはインデックス登録には影響しないと説明しています。内容を変えたときは、正しく200で新しい内容を返せているかを確かめます。
SEOAGENTでできること
SEOAGENTでは、公開後の検索データを記事ごとに確認でき、表示回数が急に減った記事を見つける手がかりにできます。番号の設定そのものは、サーバーやWordPressの側で行います。
HTTPステータスコードと関わるテクニカルSEOの記事は「テクニカルSEOの記事一覧」にまとめています。


