サイトが Google に表示されない?原因を見つける7つのチェック
結論: サイトが Google に表示されないときは、原因を自分で確認できることがほとんどです。まず、そのページが本当に Google のインデックスにないかを確かめます。そのうえで、ステータスコード、noindex、robots.txt、ソフト404、JavaScript、サイトマップと内部リンク、時間という7つを、この順に確認します。ページがいつ表示されるかは誰にも言えません。Google はクロールに「数日から数週間かかることがある」(“can take anywhere from a few days to a few weeks”)としており、インデックスに登録されることと、上位に表示されることも別の話です。
Google に表示されない?まず本当に載っていないか確認する
「表示されない」には3つの意味があり、この記事が扱うのは最初の1つだけです。
- ページが Google のインデックスにない。 Google がページを保存していないので、どんな検索にも表示されません。次の7つのチェックは、その理由を探すためのものです。
- インデックスにはあるが、探している場所に出てこない。 Search Console の「ページのインデックス登録」レポートのヘルプによると、検索結果はユーザーごとの検索履歴や場所などの条件に合わせて調整されます。インデックスに登録されたページでも、すべての検索に出るわけではなく、毎回同じ順位とも限りません。これはインデックスではなく、順位の問題です。
- ページを公開したばかり。 この場合は、時間がもっとも可能性の高い原因です(チェック7)。
どのケースかは、次の2つの方法で確かめられます。
- 正確なアドレスで検索する。 Google に
site:https://your-site.example/your-pageと入力します。ページのインデックス登録レポートのヘルプは、site:に正確な URL を続けるこの形を、小規模サイトの最初のテストとして挙げています。URL 検査のヘルプは、ページの URL で検索することを、表示されるかどうかを確かめる確実な方法としています。 - Search Console に聞く。 「URL 検査」ツールは、1つのアドレスについて Google が保存している情報を表示します。「URL は Google に登録されています」(英語表示では “URL is on Google”)は、ページが検索結果に表示される資格はあるものの、表示が保証されているわけではない、という意味です。「URL は Google に登録されていません」は、表示されないということです。「URL は Google に認識されていません」(“URL is unknown to Google”)は、Google がそのアドレスをまだ見ていないということです。表示される内容は保存された状態で、リアルタイムのものではありません。いまのページは「公開 URL をテスト」で確認します。
Search Console の「ページがインデックスに登録されない理由」の表にすでにそのページが載っているなら、表示されている状態名から、どのチェックに進むかが分かります。
| Search Console の表示 | 確認する項目 |
|---|---|
| サーバーエラー (5xx)/見つかりませんでした (404)/401 または 403 が原因でブロックされました(英語表示では “Blocked due to unauthorized request (401)”、“Blocked due to access forbidden (403)”)/リダイレクトのあるページ | チェック1 |
| 「noindex」タグによって除外されました(“URL marked ‘noindex’”) | チェック2 |
| robots.txt によってブロックされました/robots.txt によってブロックされましたが、インデックスに登録しました | チェック3 |
| ソフト 404 | チェック4 |
| URL は Google に認識されていません | チェック6と7 |
| 検出 - インデックス未登録/クロール済み - インデックス未登録 | チェック7 |
| ユーザーにより選択された正規ページがない重複ページ(“Duplicate without user-selected canonical”) | 7つのどれでもない。Google が別のアドレスを正規版に選んだ状態で、Google は「エラーではない」としています |
7つのチェックを、実行する順番で
前のチェックは、あとのチェックすべてを妨げます。your-site.example は、自分のアドレスに置き換えてください。
チェック1:ページはステータス 200 を返しているか
サーバーの応答は、必ずステータスコードから始まります。Google の HTTP ステータスコードに関するページによると、Google は 4xx のステータスを返す URL をインデックスに登録せず、すでに登録されている URL が 4xx を返し始めると、インデックスから削除されます。サーバーエラー (5xx) が続くとクロールの頻度が下げられ、そうした URL はやがて対象から外れます。リダイレクトは判断を転送先に委ねます。Google はリダイレクト元の URL のコンテンツを無視し、「ページのインデックス登録」レポートでも、「リダイレクトのあるページ」自体はインデックスに登録されません。また、200 は条件であって約束ではありません。2xx のステータスはインデックス登録を保証しない(“doesn't guarantee indexing”)と、Google は書いています。
見落としやすい妨げが2つあります。1つはログインです。Googlebot は認証情報を送らないので、ログインが必要なページには入れません。もう1つはファイアウォールやボット対策です。自分のブラウザーではページが見えているのに、Googlebot にはエラーを返していることがあります。Google のヘルプは、誤った設定のファイアウォールや DoS 対策システムが、意図せず Googlebot をブロックしてしまう例として挙げています。
curl -s -L -o /dev/null -w "%{http_code} %{url_effective}\n" https://your-site.example/your-page
望ましい結果は 200 と、想定したアドレスです。これで分かるのは、あなたのパソコンが受け取る応答です。Google が受け取る応答は、URL 検査の「公開 URL をテスト」で確認します。
SEOgrinder では: 「Google 上のページ」タブの「インデックス」カードに HTTP ステータスが表示されます。ステータスが悪い場合はタスクにもなります。たとえば「サーバーがステータス 503 を返しました」です。
チェック2:ページに noindex が設定されていないか
noindex は、ページをインデックスに入れないよう Google に伝える指示です。ページの head にある robots メタタグか、HTTP ヘッダーの X-Robots-Tag に書かれます。Googlebot がページをクロールしてこの指示を読むと、noindex のドキュメントにあるとおり、Google はそのページを検索結果から完全に外します(“Google will drop that page entirely from Google Search results”)。意図せずこの指示が入ってしまうのは、たとえば次のような場合です。
- CMS の設定。 WordPress の「表示設定」には「検索エンジンがサイトをインデックスしないようにする」(英語表示では “Discourage search engines from indexing this site”)という項目があります。WordPress のドキュメントによると、バージョン 5.3 以降、これを有効にすると、WordPress はページの head に
noindex,nofollowを指定した robots メタタグを書き込みます。 - ヘッダー。 サーバーや CDN が
X-Robots-Tag: noindexを送ることがあります。ページのソースには現れないので、見落としやすい設定です。 - 削除リクエスト。 誰かがこのアドレスについて「削除」ツールを使っていた場合、リクエストの効力は約6か月だけで、「一時的な削除」タブに一覧が表示されます(Search Console ヘルプ)。
curl -s -D - -o /dev/null https://your-site.example/your-page | grep -i x-robots-tag
curl -s https://your-site.example/your-page | grep -i -E 'name="(robots|googlebot)"'
何も出力されなければ、そのヘッダーもタグも見つからなかったということです。行が表示されたら、noindex(または none)がページをインデックスから遠ざけています。robots.txt がそのページをブロックしている場合(チェック3)、クロールする側が noindex の指示を見ることはありません(“the crawler will never see the noindex rule”)。先にブロックを外す必要があります。JavaScript があとから追加するタグは curl には現れません。Google が受け取った内容は、公開 URL のテストで確認します。
SEOgrinder では: robots メタタグが noindex になっていると、「インデックス」カードの1行目が「ページはインデックスから除外されています」に変わり、タスク一覧に「ページが Google から除外されています」が出ます。HTTP ヘッダーの noindex は「HTTP ヘッダーがページを Google から締め出しています」というタスクになります。
チェック3:robots.txt がページをブロックしていないか
https://your-site.example/robots.txt は、クローラーに「このパスは取得しないでください」と伝えるファイルです。Google の robots.txt の概要は、これを主にクローラーのトラフィックを管理する手段として説明しています。ページに一致するルールがあると、Googlebot はそのページを取得できません。ブロックされた URL は、リクエストを一切送らずにスキップされます(JavaScript SEO の基本)。ほかのページからリンクされていれば、その URL が検索結果に出ることはありますが、Google がページを読んでいないので、説明文は付きません。
よくある事故は、次の2行です。
User-agent: *
Disallow: /
この2行は、ファイルに従うすべてのクローラーに対して、サイト全体をブロックします。Disallow: /shop/ のようにもっと狭いルールなら、そのフォルダーとその下のすべてがブロックされます。Disallow の各行を、自分のページのパスと見比べてください。
SEOgrinder では: 「インデックス」カードに「この URL はクロールがブロックされています」と表示され、一致したルールも示されます。タスクの名前は「robots.txt がこの URL をブロックしています」です。
チェック4:ページがソフト404になっていないか
ソフト404とは、「見つかりません」と表示する、あるいはほとんど何も表示しないのに、ステータス 200 を返しているページのことです。Google のステータスコードのページによると、2xx の応答がエラーメッセージや空のページを含んでいる場合、Search Console はソフト404エラーとして表示します。本当に存在しないページには、Google は本物の 404 を勧めています。存在すべきページの場合は逆で、実際のコンテンツを用意することが解決策です。
「ページのインデックス登録」レポートで、理由が「ソフト 404」になっていないかを探します。1つのアドレスについては、「公開 URL をテスト」を実行して「テスト済みのページを表示」を開くと、Google が表示した状態のスクリーンショットが見られます。そのうえで、存在し得ないアドレスをサーバーに尋ねます。
curl -s -L -o /dev/null -w "%{http_code} %{url_effective}\n" https://your-site.example/page-that-cannot-exist
望ましい結果は 404 です。200 が返ってきたら、サーバーはどのアドレスにも「成功」と答えています。これがソフト404の背後にあるパターンです。nginx、Node、シングルページアプリでの直し方は、ソフト404の記事にまとめています。
SEOgrinder では: 「インデックス」カードに、「存在しないアドレスは正しく 404 を返しています」または「存在しないアドレスが 404 ではなく 200 を返しています」という行が出て、後者ではタスクも作られます。SEOgrinder は存在しないアドレスを自分で作ってサーバーに尋ねるので、確認できるのは、存在しないアドレスをサーバーがどう扱うかです。Google があなたのページをソフト404に分類したかどうかは、Search Console でしか分かりません。
チェック5:コンテンツがブラウザー内でしか作られていないか
Google は JavaScript を実行します。JavaScript SEO の基本によると、ステータス 200 のページはレンダリングの待ち行列に入り、数秒で済むこともあれば、もっとかかることもあります(“a few seconds, but it can take longer”)。つまり、JavaScript を使っているだけでは、ページが Google から外れることはありません。同じページが挙げている、次の4つの場合に原因になります。
- 元の HTML に noindex がある。 Google は noindex を見つけるとレンダリングを省略することがあり、そのタグを JavaScript で消そうとしても、期待どおりに動かないことがあります(“may not work as expected”)。インデックスさせたいページなら、元のコードに noindex を入れないでください。
- スクリプトがブロックされている。 「ブロックされたファイルや、ブロックされたページの JavaScript は、Google 検索ではレンダリングされません」(“Google Search won't render JavaScript from blocked files or on blocked pages.”)。
- リンクがリンクになっていない。 Google が見つけられるのは、
href属性を持つ<a>要素のリンクだけです。#のあとだけが違うアドレスは、確実ではありません。 - シングルページアプリのエラーページ。 どのアドレスにも 200 を返すアプリは、ソフト404を生みます(チェック4)。
確認するには、「ページのソースを表示」を選び(開発者ツールの「要素」パネルではありません)、見出しと本文を探します。見つからなければ、JavaScript が作っています。そのうえで、公開 URL のテストと「テスト済みのページを表示」で、Google がどうレンダリングしたかを確認します。Google は、サーバーサイドレンダリングやプリレンダリングは今も良い方法だと付け加えています。すべてのボットが JavaScript を実行できるわけではないからです(“not all bots can run JavaScript”)。そうしたほかのボットについては、AI クローラーと JavaScript の記事で扱っています。
SEOgrinder では: サーバーが返す HTML にテキスト、見出し、内部リンクがほとんど含まれていないと、「ページがブラウザー内でしか組み立てられていない」というタスクが出ます。JavaScript を実行しないクローラーにとってのリスクを知らせるものです。Google があなたのページを正しくレンダリングしているかどうかは、公開 URL のテストで確認します。
チェック6:Google はページを見つけられるか(サイトマップと内部リンク)
Google がインデックスに登録できるのは、見つけたページだけです。「ページのインデックス登録」レポートのヘルプによると、Google がページを知る経路は、サイトマップ、クロールのリクエスト、どこかからのリンクのいずれかです。Googlebot は、すでにクロールしたページで見つけた URL を取得します。そのため、どこからもリンクされていないページは、とくに外部リンクの少ない新しいサイトでは、知られないままになることがあります(サイトマップの概要)。
- サイトマップを見る。
https://your-site.example/sitemap.xml、または robots.txt に書かれたアドレスを開いて、そのページを探します。Google が求めているのは、完全な絶対 URL で、しかも検索結果に表示させたい URL だけです(サイトマップの作成)。404 を返す、リダイレクトする、noindex が付いているページは、載せるべきではありません。 - 送信する。 Search Console の「サイトマップ」レポートには、Googlebot がファイルを読んだ日時とエラーが表示されます。robots.txt でそのファイルをブロックしてはいけません。
- ページへリンクする。 すでにインデックスされているページ、たとえばトップページや関連記事から、少なくとも1か所リンクを張ります。
- インデックス登録のリクエストは控えめに。 新しいウェブサイトでは、トップページのインデックス登録をリクエストするのが最良の最初の一歩だと、Google は述べています。URL 検査ツールは「ごく少数の URL」向けで、上限があり、同じ URL を繰り返しリクエストしても、クロールは早くなりません(“won't get it crawled any faster”、再クロールのヘルプ)。
サイトマップは Google がアドレスを見つける助けになりますが、載せたものがすべてクロールされ、インデックスに登録されることは保証しません(“doesn't guarantee”)。Google は、約500ページ以下で、すべてのページがしっかりリンクでつながっているサイトなら、サイトマップは不要かもしれないとも述べています。
SEOgrinder では: 「インデックス」カードに、「この URL はサイトマップに含まれています」または「この URL はサイトマップにありません」と表示されます。タスク一覧には、「サイトマップが見つかりません」、「サイトマップに noindex のページが 1 件あります」のようなタスク、そして 200 を返さないサイトマップの URL の件数を示すタスクが出ることがあります。サイトの巡回では、「2 ページに内部リンクがありません」のようなタスクで、どこからもリンクされていないページが分かります。
チェック7:Google に十分な時間を与えたか
Google は日付を示しません。再クロールのヘルプには、こう書かれています。「クロールには数日から数週間かかることがあります」(“Crawling can take anywhere from a few days to a few weeks.”)。「ページのインデックス登録」レポートのヘルプは、新しいページやサイトのクロールとインデックス登録が始まるまでに「1週間ほどかかることがあります」と補足し、インデックス登録は、クロールを直接リクエストしても決して即時ではないこと、すべてのページがインデックスに入るとは Google も保証していないことを述べています。
Search Console には、待機を意味する状態が2つあります。「検出 - インデックス未登録」は、Google がページを見つけたもののまだクロールしていない状態で、たいていはクロールによってサイトに負荷がかかりすぎると見込まれたためです。「クロール済み - インデックス未登録」は、Google がページを取得したうえで、インデックスに追加しなかった状態です。Google はこれを「多くのサイトに見られる一般的なメッセージ」(“a common message for many sites”)とし、「必ずしも対処が必要な問題を示すわけではない」と述べ、サイトのすべての URL がインデックスに登録されると期待しないよう助言しています。
チェック1〜6に問題がなく、ページの公開から数週間以上たっている場合、「クロール済み - インデックス未登録」について、Google はそれ以上の理由を挙げていません。ここからは私たちの見方で、Google の見解ではありません。ほかのページにはない内容がそのページにあるか、重要なページからリンクされているかを見てください。
SEOgrinder では: Google の時計は読み取れません。Search Console に接続したローカル環境の SEOgrinder なら、スキャンしたページについて URL 検査を呼び出し、Google が保存している回答を、たとえば「Google はまだこのアドレスを認識していません」のようにレポートに表示できます。seogrinder.com で使える版は、あなたの Search Console アカウントには接続しません。
スキャンで分かることと分からないこと
SEOgrinder は私たちのツールで、私たちが開発しています。外部からのスキャンで読み取れるのは、ページの内容とサーバーの応答です。具体的には、ステータス、noindex、robots.txt、サーバーのソフト404の挙動、配信された HTML、サイトマップです。Google のインデックスの中身は見えません。Google がクロールしたページをなぜインデックスに入れなかったのかも、スキャンでは分かりません。インデックスについての答えは、Search Console と、正確なアドレスでの検索が出してくれます。レポートがすべて緑でも、ページが表示されること、まして順位が決まることを約束するものではありません。それは誰にもできません。
よくある間違い
- 1回の検索だけで判断する。 検索結果は、人や場所によって違います。正確なアドレスで検索するか、URL 検査を使ってください。
- robots.txt でブロックしたうえで noindex も付ける。 それでは Google が noindex を読めません。目的ごとに、手段は1つにします。
- noindex を1か所だけ消す。 プラグインの設定、メタタグ、HTTP ヘッダーの3か所に同時にあることもあります。
- インデックス登録のリクエストを何度も繰り返す。 何も早くなりません。
- 最初の原因で止める。 1つのページに、複数の原因が重なっていることがあります。7つすべてを確認してください。
よくある質問
公開したばかりのサイトが Google に表示されないのはなぜですか?
考えられる理由の1つは、Google がまだクロールしていないことで、これには1週間ほどかかることがあります。サイトマップを送信し、トップページのインデックス登録をリクエストして、7つのチェックを確認してください。
Search Console に「URL は Google に登録されています」と出るのに、ページが見つかりません。なぜですか?
「URL は Google に登録されています」は、ページが表示される可能性があるという意味で、どの検索でも表示されるという意味ではありません。正確なアドレスで検索してみてください。それで出てくるなら、インデックス登録は問題なく、話は順位のことです。
ページが Google にあったのに、消えてしまいました。どのチェックが当てはまりますか?
チェック1〜3から始めてください。Google は、4xx のステータスを返すインデックス済みの URL を削除します。また、エラーの増加を伴わずにインデックス済みページが減った場合は、robots.txt、noindex、ログインによって既存のページをブロックしている可能性があると、Google は述べています。削除リクエストが出ていないかも探してください。
次の一歩
表示されないページのアドレスを、SEOgrinder の無料スキャンに入力してください。「Google 上のページ」タブで「インデックス」カードを読み、赤い行をすべて直します。何を先に直すかは、タスク一覧に出ています。修正したら「再チェック」を押します(レポートは最長24時間キャッシュされることがあります)。そのあとサイトマップを送信し、Google に時間を与えてください。インデックス以外も含めたサイト全体の点検には、SEOチェックリストの記事が役立ちます。