備忘録の使い方はこちら

Search Consoleで大量発生する/feed/ページの「クロール済み – インデックス未登録」を対処する方法

WordPress
この記事は約6分で読めます。

何度かタイトルの対処をすることがあり、今後もWPでサイト作成をする場合に必要になると思うので、備忘録として残します。

feed(フィード)とは?

フィードリーダー(※)などがアクセスすることで自動的にコンテンツの更新情報を取得できる文書形式のこと。

読者はフィードを使えばブログの更新情報を追うことができる。

フィードには、RSS、ATOM、RDF形式のファイルが含まれることがある。

フィードリーダー

ニュースリーダーやRSSリーダーとも言う。

購読情報フィードをRSSやATOM、RDFを通じて追跡するプログラムのこと。

WordPressでは、RSSおよびATOM形式でフィードを生成できる。

前提:なぜ/feed/のクロール済み – インデックス未登録を対処するのか?

「クロール済み – インデックス未登録」は、グーグルのロボットがページを読み込んだが、インデックス(データベース)に登録されていない、または価値がないと判断したので登録しなかったという意味。

後者の価値がないと判断されたことで登録されなかった(=クロール済み – インデックス未登録になった)場合、SEOの観点で言えば低品質なページがサイトの中にあるという判断になるため、サイトの評価が落ちることに繋がる。

そのため、通常であれば、クロール済み – インデックス未登録は少ないほうが良い。

ただし、WordPressの場合は、コメント欄をつけるとコメント欄用のRSS(feed)ができるので、記事URL/feed/が大量に発生するのは正常の動作であり、問題はない。

  • /feed/は存在するためURLが生成される⇒正しい
  • グーグルのロボットがページをクロールする⇒正しい
  • /feed/自体にはコンテンツやサイトに影響するような重要な内容がないからインデックスしない⇒正しい

しかしながら、/feed/のクロール済み – インデックス未登録が大量に発生することで通常のコンテンツのインデックス漏れが確認しづらくなることや、そもそも/feed/をグーグルに読み込ませる必要がないといったことが考えられるため、SEO対策をするのならこれを対処する必要がある。

WordPressで自動生成される/feed/をnoindexにする方法

HTML形式のサイトであれば、ページの<head>に<meta name=”robots” content=”noindex”>を設置することでインデックスを除外することができるが、WordPressのfeedはXML形式のファイルのため、上記の方法では設定ができない。

そこで、HTTPヘッダーのX-Robots-Tagを使って除外する。

HTTPヘッダーのX-Robots-Tagを使って除外する方法

簡単な方法として挙げられるのが、「All in One SEO Pack」や「Yoast SEO」といったSEO対策用のプラグインを用いる方法。

これらのプラグインをインストールして有効化すれば、自動的にfeedページのHTTPヘッダーに「X-Robots-Tag: noindex, follow」が追加される。

しかしながら、個人的に多数のプラグインを抱えたくないことや、使用テーマにSEO機能が搭載されていて、それらが競合してしまうことも考えられるので、今回はプラグインを使わずに除外する方法を記載する。

プラグインを使わずに除外する方法

子テーマのfunction.phpに、

//RSSの配信停止
add_action( ‘do_feed_rdf’, ‘do_feed_rdf’ );
add_action( ‘do_feed_rss’, ‘do_feed_rss’ );
add_action( ‘do_feed_rss2’, ‘do_feed_rss2’ );
add_action( ‘do_feed_atom’, ‘do_feed_atom’ );

//サイト全体の記事更新フィード、サイト全体のコメントフィードのURL削除
remove_action(‘wp_head’, ‘feed_links’, 2);

//記事のコメント、記事アーカイブ、カテゴリー、タグなどのフィードのURL削除
remove_action(‘wp_head’, ‘feed_links_extra’, 3);

//feedのnoindex
add_action(‘template_redirect’,function(){
if ( is_feed() && headers_sent() === false ) {
header( ‘X-Robots-Tag: noindex, follow’, true );
}
});

を記載する。

これにより、/feed/をnoindexすることはもちろん、RSSを配信させないようにしたり、生成URLされたURLを削除することができる。

HTTPヘッダーのX-Robots-Tagを確認する方法

  1. chromeなどで該当ページ(記事URL/feed/)を開き、デベロッパーツールを呼び出す。
  2. デベロッパーツールの上部にある「NETWORK」タブをクリックする。
  3. NETWORK画面でCtrl+Rを押す(※HTTPヘッダー情報はHTMLファイルを受信する際にやり取りされるため、再度リクエストを送信しないと情報が表示されない)
  4. リクエストを送信するとデータの送受信が開始され、様々なデータが表示されるが、この中の一番上のファイルが元となるHTMLファイルなので、選択する。
  5. Responce Headersに「X-Robots-Tag: noindex, follow」の記載があればOK

上記の確認ができてから数か月すると、「クロール済み – インデックス未登録」から「noindex タグによって除外されました」項目に徐々に移動していき、実装完了となる。

追記:WordPressのコア XML サイトマップを手動で完全に無効化

WordPress 5.5から検索エンジン向けの XML サイトマップを作成する機能をコア機能として標準実装されている。

コア サイトマップはWordPressをインストールしたディレクトリの直下に作られていて、ファイル名は「wp-sitemap.xml」となっている。

WordPress のコア サイトマップを利用しない場合は、function.phpに

//WordPressのコア XML サイトマップを手動で完全に無効
add_filter( ‘wp_sitemaps_enabled’, ‘__return_false’ );

を書き足す必要がある。

よって、最終的にfunction.phpに記述する内容は

//RSSの配信停止
add_action( ‘do_feed_rdf’, ‘do_feed_rdf’ );
add_action( ‘do_feed_rss’, ‘do_feed_rss’ );
add_action( ‘do_feed_rss2’, ‘do_feed_rss2’ );
add_action( ‘do_feed_atom’, ‘do_feed_atom’ );

//サイト全体の記事更新フィード、サイト全体のコメントフィードのURL削除
remove_action(‘wp_head’, ‘feed_links’, 2);

//記事のコメント、記事アーカイブ、カテゴリー、タグなどのフィードのURL削除
remove_action(‘wp_head’, ‘feed_links_extra’, 3);

//feedのnoindex
add_action(‘template_redirect’,function(){
if ( is_feed() && headers_sent() === false ) {
header( ‘X-Robots-Tag: noindex, follow’, true );
}
});

//WordPressのコア XML サイトマップを手動で完全に無効
add_filter( ‘wp_sitemaps_enabled’, ‘__return_false’ );

となる。