日本語 English(Home)

HTTPステータスコードとは:SEOで知っておくべき番号と対処

ページが正しく見えていても、サーバーが返す番号が違えば、Googleには別の状態として伝わります。SEOで知っておくべき番号と、Googleの扱い、メンテナンスや削除のときに返す番号の選び方、robots.txtの番号の影響、確かめ方を整理します。

HTTPステータスコードとは:SEOで知っておくべき番号と対処

この記事の要点:

  • 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の主な番号の意味は次のとおりです。

番号名前意味
100Continueリクエストの続きを送ってよい
101Switching Protocols通信の方式を切り替える
200OK成功
201Created成功し、新しいものが作られた
204No Content成功したが、返す内容は無い
206Partial Content求められた一部だけを返す
番号名前意味
301Moved Permanently恒久的に移動した
302Found一時的に別のURLにある
303See Other別のURLを取りに行くよう案内する
304Not Modified前回から変わっていない
307Temporary Redirect一時的な移動(求め方を変えずに転送)
308Permanent Redirect恒久的な移動(求め方を変えずに転送)
400Bad Requestリクエストの形が正しくない
401Unauthorized認証が必要
403Forbiddenアクセスが禁止されている
番号名前意味
404Not Found見つからない
405Method Not Allowedその求め方(メソッド)は使えない
410Gone削除され、もう無い
429Too Many Requestsリクエストが多すぎる
500Internal Server Errorサーバー内部のエラー
502Bad Gateway中継のサーバーが、先のサーバーから正しい応答を得られない
503Service Unavailable一時的に使えない
504Gateway 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または429Googleは、クロールを急いで減らしたいときの方法として案内している
クロールの量を長く抑えたい番号ではなく、サーバーの増強や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で見る順番

  1. 「ページのインデックス登録」で、「サーバーエラー(5xx)」「見つかりませんでした(404)」「リダイレクト エラー」などの理由ごとの件数を見ます。
  2. 気になる理由を開き、例として出ているURLをURL検査で調べます。今も同じ番号かは「公開URLをテスト」で確かめます。
  3. 5xxやDNSが気になるときは、「設定」の「クロールの統計情報」で、レスポンスの内訳と「ホストのステータス」を見ます。
  4. 直したら、該当の理由の画面で「修正を検証」を押し、再確認を依頼します。

サーバーのログで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の記事一覧」にまとめています。

参考情報

関連する記事

「テクニカルSEO」の記事をすべて見る →

クロールバジェットとは:Googleの説明と、気にすべきサイト・しなくてよいサイト
テクニカルSEO

クロールバジェットとは:Googleの説明と、気にすべきサイト・しなくてよいサイト

クロールバジェットは、多くのサイトでは気にする必要がありません。Google の「クロール バジェットの管理」の原文に沿って、決まる仕組み、対策が必要なサイトの目安、クロールの統計情報での確かめ方、クロールを無駄にする原因と対処を、当サイトの点検結果とあわせて説明します。

AIでSEO対策を、もっと続けやすく。

機能と使い方、料金・契約条件は、サービス資料でご案内します。