Googleサーチコンソールの「クロール済み インデックス未登録」に「/feed/」や「/feed/atom/」といったfeedページが追加される時の対処法です。
WordPressはRSS配信などに対応するために、自動的にfeedページを作成、出力しますが、このページがインデックス未登録として登録されることがあります。
SEOに大きな影響は出ませんが、feedページにnoindexを付与することで登録を回避することができるので、やり方を解説します。
functions.phpでfeedページにX-Robots-Tag: noindexを設定しましょう!
この記事の目次
サーチコンソールにfeedページが大量発生
当サイトはWordPressを使って構築しているのですが、先日Google Search Consoleで「クロール済み インデックス未登録」が爆増していることに気が付きました。
早速内容を確認してみると、インデックス未登録になっているほとんどのページがWordPrssで自動作成されて公開されるfeedページのようです。
feedページ自体はRSS配信や検索エンジンに利用されるページなので、インデックス(検索エンジン)に登録されていなくても何ら支障はありません。そしてWordPressを使っているならこの結果が普通というか、当然の結果です。
しかし、本当に「クロール済み -インデックス未登録」になっている記事ページがこのfeedページに埋もれて見つけられにくくなるのがイヤなので今回対処しました。
WordPressのfeedページにnoindexを設定する
WordPressの場合はfeedページが自動的に作成され、カスタムパーマリンクを使っているなら、フィードURLは以下のような感じになります。
- http://example.com/feed/
- http://example.com/feed/rss/
- http://example.com/feed/rss2/
- http://example.com/feed/rdf/
- http://example.com/feed/atom/
上記のようなURLがサーチコンソールの「クロール済み -インデックス未登録」に大量発生する時は、これらのフィードページの応答ヘッダーに「X-Robots-Tag: noindex」というタグを設定することで、インデックス登録を拒否することができます。
SEOを考えると、feedページ自体のクロールは許可しておくべきです。
なので最終的には「X-Robots-Tag: noindex,follow」というタグをHTTP応答ヘッダーに設定して「クロール許可・インデックス拒否」という設定にします。
feedページの出力自体を無効化するのはSEO的に良くないのでナシです。
では早速設定していきましょう・w・
functions.phpを使ってnoindexを設定する
WordPressのfeedページにnoindex,followを設定する方法は主に以下2つです。
- functions.phpを使う
- プラグイン「All in One SEO」などに付属している機能を使う
一応プラグインを使う方法もありますが、これくらいの設定にはfunctions.phpを使う方法が圧倒的にお勧めです。以下のコードをfunctions.phpに追記すればOKです。
//feedページにX-Robots-Tag:noindex,followを設定 add_action('template_redirect', function(){ if ( is_feed() && headers_sent() === false ) { header( 'X-Robots-Tag: noindex, follow', true ); } });
template_redirect
フックでページの表示前に関数を実行。
フィードページかつヘッダーがまだ送信されていないなら、header()関数でヘッダーに「X-Robots-Tag: noindex, follow」を送信するというもの。
このコードにより全てのfeedページに「noindex,follow」が設定されます。
つまり「インデックスは拒否しつつ、クローラーは許可する」という設定です。
プラグインを使いたい場合について
調べたところ、WordPressのプラグインである「All in One SEO」にはfeedページにnoindexを設定できる機能が存在するようなので、このプラグインを使っている人は設定を確認してみましょう。
この手のプラグインを使っていない人はfunctions.phpで実装しましょう。初心者の方など、functions.phpが分からない方は以下の関連記事を参考に挑戦して下さい。
今回のように、サーチコンソールの「クロール済み -インデックス未登録」から/feedページを除外する目的だけでプラグインを導入するのは良くないので、functions.phpを使いましょう。
feedページにnoindexが設定されたか確認
作業を終えたらフィードページにnoindex,followが設定されているか確認します。
まずはChromeでレスポンスヘッダーを確認してみましょう。
Chromeでfeedページにアクセスし、右クリックから「検証」をクリック。
デベロッパーツールが起動したら以下の手順でレスポンスヘッダーを確認します。
- 「Network」タブに移動
- F5などでページをリロード(更新)する
- nameでfeed/となっている個所をクリックする
- Response Headersの項目のX-Robots-Tag:を確認する
無事にレスポンスヘッダーに「X-Robots-Tag: noindex,follow」が設定されました。
参考
サーバーキャッシュやブラウザキャッシュをクリアしないと反映されないことが多々あります。よく分からない方はサーチコンソールで確認すればOKです。
サーチコンソールでfeedページを確認する
最後に肝心のサーチコンソールの方でも確認しましょう。
サーチコンソールにログインして、該当のfeedページを検索します。
(インデックス未登録の一覧から虫眼鏡マークを押してもOK)
ページの内容が出たら「公開URLをテスト」を押してみましょう。
すると“URLはGoogleに登録できません”の文字が出るはずです。
ここでステータスを確認して、
- クロールを許可?:はい
- インデックス登録を許可?:いいえ、'X-Robots-Tag'httpヘッダーで'noindex'が検出されました
となっていれば作業完了です。お疲れさまでした~・w・
サーチコンソールにはすぐに反映されないので、3か月ほど待ちましょう。
徐々に「クロール済み -インデックス未登録」からfeedページが減っていくはずです。
まとめ
以上、サーチコンソールの「クロール済み インデックス未登録」にWordPressのfeedページが大量に登録される時の対処法でした。
今回の内容はSEO対策というよりは、サーチコンソールのインデックス未登録の項目を見やすくする方法と言えます。SEOに影響はありませんが気になる方はどうぞ。
僕が過去に運営していたサイトでは300以上のfeedページが「インデックス未登録」になったまま放置でしたが、検索ランキングに影響はありませんでした。
WordPressや色々なテーマであらかじめ対策されていないことを見ても、feedページにnoindexを設定してもしなくてもSEOに影響はないと言えるでしょう。
なので、作業が難しい!無理!!と感じた方は放置でも全然OKだと思います。