サーチコンソールの「feed」を完全に除外する方法は「noindex」の方だった

「robots.txt」による除外では、「餌」を食べに来るクローラーを、完全に除外できないことが判明しました。

WordPressではコメント欄を解放していると、Googleサーチコンソールのインデックス(カバレッジ)内のステータス「除外」にある、「クロール済み-インデックス未登録」に、「feed」というページが大量に発生してしまうことがあります。

これは放っておくと、なにかしらの原因で未登録になってしまった問題のあるページが埋もれてしまうため、この「feed」は除外したほうがいいと思われ、これまで私は問題の解決のために、「robots.txt」でクローラーをブロックする方法を取っていました。

ところが、「robots.txt」では例外に対応できない、つまり完全に「feed」を除外することができないと判明し、完全に除外するには、「noindex」を使用したほうがいいということがわかったので、今回は「robots.txt」を使用する問題点と、新たに取った対策方法についてお話しします。

目次

robots.txtによりブロックされましたが、インデックスに登録しました

robots.txtによりブロックされましたが、インデックスに登録しました

Googleのクローラーによって発見されるも、インデックスはされずに未登録となった大量の「feed」ページを除外するため、「robots.txt」を使用してクローラーの巡回をブロックしていたのは以前お話ししたとおりで、その後は順調にことが運んでいました。

最大で440件ほどあった「feed」のページは、1か月程度で340件ほどにまで減り、新たに「feed」のページが未登録の項目に出現することもありません。

ところがある日、「警告」のステータスとともに、「robots.txtによりブロックされましたが、インデックスに登録しました」というエラーが。

なんと、早くも「robots.txt」を使用したクローラーのブロックは、完璧なものではないことが判明してしまったのです!

robots.txtでもブロックできないことがまれにある

このエラーについてGoogleのヘルプページを確認すると、以下の記述を確認することができました。

このページはウェブサイトの robots.txt ファイルによりブロックされましたが、インデックスに登録されています。(Google は常に robots.txt の内容に従いますが、他のユーザーがページにリンクしている場合、必ずしもインデックス登録が回避されるわけではありません)。Google では、検索結果からページをブロックしてもよいか判断できません。インデックスカバレッジレポート-警告

クローラーはつねに「robots.txt」にしたがう、つまり、基本的には「feed」のページは、「robots.txt」のルールで除外することができますが、ほかのブログなど(SNSもふくまれる可能性あり)によって記事がリンクされると、かならずしもクローラーは「robots.txt」のブロックにはしたがわず、結局はインデックス(登録)されてしまうこともあるということ。

また、これへの対策方法もすぐその下に書かれていて、これは以下のとおりとなっていました。

このページをブロックしたい場合robots.txt はインデックス登録を回避する正しい方法ではありません。インデックスに登録されないようにするには、「noindex」を使用するか、ユーザーにログインを要求してページへのアクセスを制限してください。インデックスカバレッジレポート-警告

「feed」を除外するには、「noidex」を使用したほうがいいらしいのです!

robots.txtはインデックスを回避する正しい方法ではない?

そもそもこの問題の対処に取り組みはじめたとき、対処方法には「robots.txt」を使用してクローラーをブロックする方法と、「noindex」を使用してインデックス(登録)をさせない方法があり、後者のほうが正しいようにも思われたのですが、私はわけあって前者を選択しました。

というのも、「feed」のページは「インデックス未登録」、すなわちインデックスはされていないものなので、「noindex」でインデックスをさせない(インデックスされていないものをインデックスさせない)というのは若干の違和感があり、その方法はまちがっているという指摘も見かけていたからです。

しかしながら、今回のエラーからも考えると、「feed」のページがレアなケースとはいえインデックスされることがあるのであれば、やはりGoogleのいうように、回避する方法としては正しいものではないように思われ、「警告」を放置するのもどうも気分的によくありません。

ということで、この問題の完全解決に向けて、私は「noindex」を使用する方法に切り替えることにしました。以下、その方法についてです。

インデックス未登録「feed」を除外する「noindex」の書き方

//feedをインデックスさせない(noidex)
add_action('template_redirect',function(){
if ( is_feed() && headers_sent() === false ) {
header( 'X-Robots-Tag: noindex, follow', true );
}
});

「feed」のページを、サーチコンソールの「クロール済み-インデックス未登録」に表示させないようにする「noindex」の書き方はこのとおりで、この記述を「functions.php」にそのままコピペすることで対応できるようです。

じっさいの挙動は、やはり経過観察が必要になるので、まだはっきりとしたことはいえませんが、おそらくこれで「feedのインデックス未登録」問題は解決すると思われます。

ただ、これにより、今後はサーチコンソール・カバレッジの「noindexタグによって除外されました」のほうに「feed」のページが入るようになると思われるので、本来の「noindex」をしているページ(当ブログの場合は固定ページなど)が確認しにくくなるというデメリットもあることはあるでしょう。

しかし、警告を放置か除外かを考えると、やはりこれは除外したほうがいいようにも思うので、この問題は「noindex」をしておいたほうがいいのかもしれません。

コメントはSEO(検索順位に関係する基準)にかかわるという話もあり、インデックスをしないことにしてしまうと、検索順位にもかかわってくるのかもしれませんが、当ブログの場合は、コメントを多くいただいたページも「クロール済み-インデックス未登録」になっていたことから、今回はひとまず「noindex」で対策完了とすることにしました。

ややこしいことになってしまいましたが、結論としては、おそらくこの「feed」問題は、最初から「noidex」で対処したほうがいいということです。

(参考:【WP】Search Consoleで、/feed/が大量にインデックス未登録になる問題

今回のまとめ

・robots.txtでの除外では完全に「feed」に対応はできない
・noindexでほぼ完全に「feed」を除外できるもよう
・最終的にはなにも対策しないのもありなのかもしれない

私は50%をはずすヒキの弱い人間なので、今回も2択をはずしてしまうこととなってしまいましたが、それによってべつの問題が出ることを勉強できたので、それはそれでよしとしたい思います。

ただ、「noindex」で「feed」を除外することにすると、さきほどもふれたとおりでこんどは「noindexタグによって除外されました」の件数が爆発的に増えることになり、それはそれでまた問題が起きてしまうような気もします。

このカバレッジ・クロール済み-インデックス未登録「feed」問題は、べつに放置していてもそこまで重大な問題が起きるものではないことから、正直いうと、放置でもいいのではないかと今回の作業をしていて感じました。

もしかすると、最終的には放置という選択にたどりつくかもしれませんが、ひとまずは「noindex」で様子を見たいと思います。

関連記事&スポンサーリンク

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

目次
閉じる