WordPressの各種フィードをX-Robots-Tagでnoindex指定する

WordPressは様々なフィードを自動で出力しますが、それらがGooglebotに発見され、サーチコンソールの「クロール済み – インデックス未登録」に表示されることがあります。このままではインデックスレポートの見通しが悪くなってしまいますが、X-Robots-Tag でnoindexを指定する方法でこの状況を改善できます。

WordPressが出力するフィード

WordPressは下記のように多様なフィードを出力します。これらのフィードがGooglebotに発見されると、インデックスされることもありますが、多くはクロールされるもののインデックスはされずに、サーチコンソールのインデックスレポートで「クロール済み – インデックス未登録」として表示されます。

/feed/
/feed/rss/
/feed/rss2/
/feed/rdf/
/feed/atom/
/comments/feed/
/post-name/feed/
/category/categoryname/feed/
/tag/tagname/feed
/author/authorname/feed/

各種のフィードが大量に「クロール済み – インデックス未登録」としてレポートされる状況は、検索結果のランキングにおけるマイナス要因ではありませんが、インデックスレポートの見通しを悪くしてしまいます。そこで、フィードのHTTPレスポンスヘッダに X-Robots-Tag でnoindexを指定し「noindex タグによって除外されました」のほうにレポートさせます。

フィードに X-Robots-Tag でnoindexを指定

フィードに X-Robots-Tag でnoindexを指定するには、テーマのfuntions.phpに以下のコードを追加します。アクションフックの”template_redirect”1はテンプレートを振り分ける直前に実行されるアクションで、テンプレートが”is_feed”に一致するときに、HTTPレスポンスヘッダに”X-Robots-Tag: noindex”を追加する2、という処理です。

function noindex_feed() {
	if ( is_feed() ) {
		header( 'X-Robots-Tag: noindex', true );
		}
	}
add_action('template_redirect','noindex_feed');

まとめ

サーチコンソールのインデックスレポートの「クロール済み – インデックス未登録」の箇所は、SEOにおいて要チェックの箇所です。ここを確認することで、本来ならインデックスされているべきなのにインデックスされていないページや、低品質でインデックスされないページを発見することができます。

しかし大量のフィードURLが「クロール済み – インデックス未登録」の箇所に表示されていると、SEOにおける本来の用途に使えなくなってしまいます。この記事で紹介した方法でフィードにnoindexを指定しておくと、「クロール済み – インデックス未登録」の欄がスッキリし、見通しをよくすることができます。

脚注

  1. template_redirect – Hook | Developer.WordPress.org ↩︎
  2. PHP: header – Manual ↩︎