Google Search Consoleで、大量のfeed atom tagが「クロール済み – インデックス未登録」が表示されたことはありませんか?
特にWordPressサイトでは、この問題が発生しやすい傾向があります。
放置しても検索結果に影響はありませんが、見栄えが悪くなるだけでなく、他の重要なページのインデックス漏れにも繋がる可能性があります。
そこでこの記事では、WordPressサイトで発生しがちな「クロール済み – インデックス未登録」を解消する方法をお伝えします。
結論から言うと、Wordpressのfunctions.php内に、以下のコードを追加することで解決します。
// feed、atm、タグをインデックス登録させない // add_action('template_redirect', function(){ if ( is_feed() && headers_sent() === false ) { header( 'X-Robots-Tag: noindex, follow', true ); } });
クロール済みインデックス未登録とは?
まず、「クロール済みインデックス未登録」とは何なのでしょうか?
Googleは、世界中のウェブサイトを巡回(クロール)して、そのページの情報を自身のデータベースに登録(インデックス)しています。
このインデックスに登録されたページが、Google検索の結果に表示されるのです。
しかし、クロールはされたもののインデックスには登録されていないページが存在します。
これが「クロール済みインデックス未登録」の状態です。
クロール済みインデックス未登録になる原因は?
では、なぜこのような状態になるのでしょうか。主な原因は以下の3つです。
- ページの内容が薄い、もしくは重複している
- canonical属性が適切に設定されていない
- noindex属性が設定されている
特にWordPressサイトの場合、「feed」「atom」「tag」などのページは自動生成されるため、コンテンツが薄くなりがちです。
そのため、これらのページがクロールはされてもインデックス登録されないことが多いのです。
feedやatomがインデックス登録されなくても問題ない理由
実はfeedやatomなどのページは、インデックス登録されなくてもSEO的には問題ありません。
その理由は、これらのページが検索結果に表示される必要性が低いからです。
feedやatomは、サイトの更新情報を配信するためのページで、一般的なユーザーがアクセスするものではありません。
同様に、タグページや著者ページも、それ自体が検索結果に表示されるべき重要なコンテンツではないことが多いです。
むしろ、これらのページがインデックス登録されてしまうと、同じ内容のページが重複して登録されてしまう恐れがあります。
これはSEO的にはマイナスに働く可能性があります。
ですので、feedやatomがインデックス登録されていなくても、心配する必要はありません。
ただし、心配無用と言われても、Search Console上で大量のインデックス未登録が表示されると少し不安になってしまいますし、それ以外のものが埋もれて見にくくなってしまうという弊害も生まれます。
ということで、以下は、その解決方法です。
クロール済みインデックス未登録を解消する手順
それでは、クロール済みインデックス未登録を解消する手順を見ていきましょう。
ここではWordPressサイトを例に説明します。
1. Search Consoleでクロール済みインデックス未登録を確認する
まずは、Search Consoleにログインし、メニュー「インデックの作成」「ページ」を選択します。
ここで「クロール済み – インデックス未登録」の項目を見てください。
この項目の数字が多い場合、クロール済みインデックス未登録のページが多くあることになります。
2. インデックス登録したくないページを特定する
クロール済みインデックス未登録の中には、そもそもインデックス登録する必要のないページも含まれています。
例えば以下のようなページです。
- 「feed」「atom」などのフィードページ
- 「tag」などのタグページ
- 「author」などの著者ページ
- 「attachment」などの添付ファイルページ
これらのページは、検索結果に表示される必要性が低いため、インデックス登録しなくて問題ありません。
3. functions.phpにてnoindex属性を設定する
インデックス登録したくないページがある場合、functions.phpを使ってnoindex属性を設定しましょう。
まず、WordPressの管理画面から「外観」→「テーマファイルエディター」を選択します。
次に、右側のファイル一覧から「functions.php」を探して選択してください。
functions.phpの最下部に、以下のコードを追加します。
// feed、atmをインデックス登録させたくない場合の設定 // add_action('template_redirect', function(){ if ( is_feed() && headers_sent() === false ) { header( 'X-Robots-Tag: noindex, follow', true ); } });
解説
- 上記のコードは、すべてのfeedページにnoindex属性を設定します。
- 変更が終わったら、右下の「ファイルを更新」ボタンを押して保存します。
※ カテゴリやタグをnoindexを設定したい場合は、is_feed()
の部分をis_category()
やis_tag()
などに変更してください。
- is_feed() → feed、atom
- is_tag() → tag
- is_archive() → author、アーカイブ
- is_category() → category
以下は、feed、atm、タグをnoindexに設定した場合の例です。
// feed、atm、タグをインデックス登録させない // add_action('template_redirect', function(){ if ( (is_feed() || is_tag() ) && headers_sent() === false ) { header( 'X-Robots-Tag: noindex, follow', true ); } });
4. robots.txtファイルでブロックする(オプション)
functions.phpでnoindex属性を設定して、いくら待っても待っても、「クロール済み – インデックス未登録」が表示され続ける場合があります。
そのような場合は、robots.txtファイルでfeedやatomなどのURLをブロックすることで、Googlebotのアクセスを完全に抑制することができます。
robots.txtファイルに以下の記述を追加します。
Disallow: /feed/
Disallow: /atom/
Disallow: /tag/
Disallow: /author/
注意点
- 通常、この設定は必要ありません。
- robots.txtファイルでブロックする場合、実際にブラウザでアクセスできないURLもブロックしてしまう可能性があります。
- robots.txtファイルの記述を変更する前に、バックアップを取ることをおすすめします。
5. 設定後の確認
functions.phpでnoindex属性を設定したり、robots.txtファイルでブロックしたりした後は、Search Consoleでインデックス状況を確認してください。
ただし、設定の反映には時間がかかる場合があります。
数日〜数週間程度様子を見て、インデックス登録済みのページ数が減少し、クロール済みインデックス未登録のページ数が減少していれば、設定が完了していると考えられます。
もし減少傾向にない場合は、functions.phpのコードが正しく機能していない可能性があります。
エラーがないか確認し、必要であれば修正してください。
まとめ
Google Search Consoleで大量の「クロール済み – インデックス未登録」が表示された場合、以下の手順で解消することができます。
- Search Consoleで具体的なURLを確認する
- インデックス登録したくないページを特定する(feed、tag、authorページなど)
- functions.phpにてX-Robots-Tagを使ってnoindexを設定する
- robots.txtファイルでブロックする(オプション)
- 設定後の状況をSearch Consoleで確認する
本来インデックス登録すべきページまで除外しないよう注意しながら、丁寧に設定を行ってください。
正しく除外設定ができれば、Search Consoleのクロール済みインデックス未登録のページ数は減少していきます。
ただし、繰り返しになりますが、feedやatomなどのページがインデックス登録されていなくても、SEO的には問題ありません。
Search Consoleの見た目を整理したいという方は、ぜひ上記の手順を試してみてください。
サイトの健全性を高め、検索順位を上げるためにも、定期的にSearch Consoleをチェックする習慣を付けておくと良いでしょう。
読者の皆さんも、ぜひこの機会にサイトの最適化に取り組んでみてくださいね。
コメント