サイトマップのSearch Console登録とnoindexと大誤解

メニュー 店員を呼ぶ
©いらすとや.

「がとらぼ」でWordPress用のGoogle XML Sitemaps (XML Sitemaps)プラグインについて書いたのが2019年だが、その頃は古いバージョンのGoogle XML Sitemapsプラグインにダウングレードしろという話と共にnoindexが云々の話も出ていた。それから3年経って、さすがにプラグインを安全性の低い古いバージョンに戻せというミスリードのツイートは見かけなくなったがnoindex云々は未だに続いている。
これ、なぜかトラブってると思ってる人同士で誤った話を繰り広げてるのでちっとも解決しない。で、誤った解説記事を参照しちゃってなおさら解決しないと。

Search Consoleにサイトマップを登録 何を何処に?

サイトマップのSearch Console登録とnoindexと大誤解 1
GoogleのSearch Sonsoleを開く。複数サイトを登録しているなら左上のプルダウンメニューから操作するウェブサイトを選択する。
左列のメニューから「サイトマップをクリックする。
サイトマップを登録したことが無いとかサイトマップのURLが変わった場合は「新しいサイトマップの追加」の欄にサイトマップのURLを登録する。例: https://example.com/sitemap.xml
WordPressでサイトマップを出力するプラグインを使っている場合はドキュメントを読んでURLを確認。(必ずsmtemap.xmlであるとは限らない)
「登録」ボタンをクリック。
送信したサイトマップURLが有効であれば、Googleさんは毎日程度に自動で再取得してくれるようになるのでURLが変わらない限りは再登録の必要はない。

ここまでがサイトマップ登録初日。以下は初送信から24時間以上経ってから確認

Googleさんがサイトマップを読むと、サイトマップに書かれているページURLや子サイトマップのURLを取得する。さらに子サイトマップを取得して書かれているページURLを取得する。つまりサイトマップに書かれているURLを認識する。
Googleによりこの認識作業が完了すると「送信されたサイトマップ」に読み込み日時やステータス、サイトマップから読み取って認識したURLの数(ページ数)が表示されるようになる。ステータスが「成功しました」になって「検出されたURL」の数がサイトマップに書かれたページURLの総数と等しくなる或いはほぼ等しくなれば「Search Consoleにサイトマップを送信する」という作業は終了
この切り分けが重要。サイトマップはこれだけなの。サイトマップに記載されたURLを基にクローラーがページを取得して検索インデックスに登録するというのはまた別の話なのでゴッチャにしないで。

サイトマップのSearch Console登録とnoindexと大誤解 2
もう少し確認するには、1つ上で「送信されたサイトマップ」の項目で確認した「行」の部分(「成功しました」がある部分)をクリックすると詳細が表示される。
ここでは認識された子サイトマップについてもそれぞれ表示される。子サイトマッブの一部が認識されてなかったり、子サイトマップに含まれるURLの数が大幅に足りなかったりすれば、この画面で確認できる。子サイトマップ無しのサイトマップ(全ページのURLを1つのサイトマップに出力している)ならこのページは確認の必要がない。

サイトマップのSearch Console登録とnoindexと大誤解 3
サイトマップで送信したURLの数の推移というのは「カバレッジ」で確認できる。左列メニューから「カバレッジ」をクリックし、右列の最上部で「すべての送信済ページ」を選択する。少なくとも「有効」をクリックして表示対象にする。サイトマップに書かれているURLの総数は「エラー」「有効(警告あり)」「有効」「除外」の総数だが、殆どは「有効」に含まれる筈。他の「エラー」「有効(警告あり)」「除外」が0ではないなら(インデックス未登録を含め)何か問題が発生していると考えるべき。
上の画像では「有効」の推移グラフが凹になっているが、WordPressのサイトマップ出力用プラグインをGoolge XML Sitemaps (XML Sitemaps)からXML Sitemap&Google Newsに変更していた時期。XML Sitemap&Google NewsのバグでWordPressで特定のカテゴリをアーカイブリストに表示しない設定などを行っていると何故かそのカテゴリがサイトマップにも出力されないという状態になっていた。このせいでサイトマップに含まれているURLの数が本来の半分以下になっていた。バグは他にもあったが、これが一番問題だったのでこのプラグインは使用を停止してGoolge XML Sitemaps (XML Sitemaps)に戻した。何故サイトマップの出力がテーマ内で使われてるpre_get_postsクエリーの影響を受けるんだかホント意味不明なバグというかおそらくプラグイン作者の考慮漏れ。

一部のサイトマップ出力プラグインを使うとnoindexでサイトマップが登録できないという勘違い

Search Consoleにサイトマップを送信する(登録する)というのは前述の方法が全て。
ところが、一部にサイトマップをインデックス登録しようとする人がいる。これがそもそもの大きな勘違い。(以下)

サイトマップのSearch Console登録とnoindexと大誤解 4
新しく作成したページをSearch Consoleからインデックス依頼するのと同じ手法で、Serch Consoleの一番上部にあるURL入力欄にサイトマップのURLを入力する。 [Enter]キーを押す。上の画像のような画面になる。ここで「公開URLをテスト」または「インデックス登録をリクエスト」をクリックする。

サイトマップのSearch Console登録とnoindexと大誤解 5
今回は一部の人が勘違いしてやってしまうであろう「インデックス登録をリクエスト」をクリックした。

サイトマップのSearch Console登録とnoindexと大誤解 6
サイトマップの出力プラグインによってはこの画像のように「インデックス登録リクエストに失敗しました」になる。理由を見るときは「ライブテストを表示」

サイトマップのSearch Console登録とnoindexと大誤解 7
インデックス登録に失敗した旨とその理由が表示される。インデックス登録しようとした場合には「noindexタグによって除外されました」というエラーが表示される。これだけだとよく意味が判らないかもしれないが、その下にさらに「いいえ、'X-Robots-Tag' httpヘッダで'noindex'が検出されました」と具体的に書かれている。
このメッセージが意味するところは、サイトマップをインデックス登録するようリクエストされましたが、サイトマップの「HTTPヘッダ」では「インデックス登録しないで下さい」という意味のnoindexが指定されるのでインデックスできません、というもの。

サイトマップのSearch Console登録とnoindexと大誤解 8
サイトマップのHTTPヘッダにnoindexが指定されているのか確認してみる。curlコマンドだとcurl -I -L https://example.com.sitemap.xml のようなの。Linuxで入っているcurlだと-Lを付けてリダイレクトを追わせる必要がある。(xBSDに入ってるcurlだと -Lは要らないかも)
Search Consoleのメッセージどおりにx-robots-tag: noindexが返ってきている。そりゃインデックス登録はエラーになるわね。

学芸員のイラスト
©いらすとや.

XMLサイトマップは検索エンジンのために提供しているものであって人間向けではない。それをGoogleの検索インデックスに登録したいというのが根本的に大間違い。だから、一部の気の利いたサイトマップ出力プラグインは、httpヘッダにnoindexを出力してくれている。

つまり・・・、作家さんはググルギャラリーに出展することになりました。作家さんは助手さんにググルギャラリーさんに出展する作品の一覧(目録)を渡すよう指示しました。ググルギャラリーさんは作品一覧と照らし合わせて会場に作品を並べてくれます。気の利いた助手さんは作品一覧に「これ(目録)は作品ではないので飾らないでください」とメモしておきました。ググルギャラリーさんはそのとおり目録を飾りませんでした。作家さんが様子を見にきました。「なんで目録を額に入れて飾ってないんだよ?」「え゛っ?」(この作家さんヤベーやつじゃん)
こんな感じ。

XMLサイトマップというのは早い話がURLの一覧だけ、ものによってURL一覧+ページの作成日時や更新日時という情報。本文に相当するものは無いのでコンテンツとしての価値は全く無い。それをわざわざインデックス登録させるとどうなるか。仮に月イチで記事を上げで2年。月別子サイトマップを作成するサイトマッブプラグインを使っていて子サイトマップもインデックス登録をリクエストして登録してたとすると。価値があるかもしれないコンテンツが24、価値が全く無いコンテンツが24。総合的にサイトの価値が低いと判断されかねない?

「送信されたURLにnoindexタグが追加されています」がサイトマップ出力プラグインのバグせいという勘違い

XMLサイトマップは人間向けに提供するものではなく検索エンジン向けです。(既に書いたけど)
ウェブサイトオーナーがサイトマップを検索エンジンに登録するのは、私のサイトにはこれこれこのようなURLのページがあるので(Google,Bings等の検索エンジン様)ご確認ください。(できればASAPで)クロールして検索インデックスに登録して検索結果に出るようにしてくれると嬉しいなぁ。という願いからです。
検索エンジン側は、サイトマップというURL一覧を渡されたのでクロールして検索インデックスに登録してやりましょうかね。と、思ったらその一覧の一部のURLが「インデックスに登録しないで下さい」になってる。どういうこっちゃ?
ここで発生するエラーが「送信されたURLにnoindexタグが追加されています」です。

ウェブサイトというのは企業であれ個人のブログであれページが増えてきたときに「このページは検索で出て欲しくないなぁ」ということがあります。そこでrobots.txtにそのページのURLを書いてdisallowしたりウェブページのHTMLにnoindexタグを書いたりhttpヘッダにnoindexを出力するようにすることでクローラー/検索エンジンにインデックスに登録して欲しくない旨を示します。また、造りによっては特定のページに役目を与えてnoindexしているかもしれません。WordPressだと固定ページの1つを404ページ用にしていてerror 404が発生したらそのページにリダイレクトさせるとか。(オススメしかねる方法ですが)
で、あればその404用のページのようなのはサイトマップには含めてはいけません。そこでそのページをnoindexにしてみたということがあるかもしれない。問題はそのようなnoindexにしたページのことを知らない,或いは忘れてしまっている場合です。

サイトマップのSearch Console登録とnoindexと大誤解 9
Google XML Sitemaps (XML Sitemaps)の設定はWordPressの管理者パネルの「設定」の中に「XML-Sitemap」という項目で存在します。少し下にスクロールすると「Excluded Items」という項目があるのでそこでサイトマップに含めないカテゴリをチェックしたり「投稿」「固定記事」の記事ID (数字)を登録します。複数の記事を登録したいのであれば記事IDの間に「,」を入れて9996,9997のように入力します。設定を保存するには一番下の「設定を更新」ボタンをクリック。このボタンの押し忘れに注意。
他のサイトマップ出力プラグインでも似たようなページやカテゴリの除外機能があるかと。

サイトマップのSearch Console登録とnoindexと大誤解 10
できたてホヤホヤのウェブサイトだとか古くから存在するもののSearch Consoleを使い始めたばかりということでなければサイトマップを登録云々以前からGoogleさんがクロールしている筈。そのようなウェブサイトだと左列のメニューの「カバレッジ」を選択し「すべての既知のページ」を選択した状態で「除外」をクリックして表示します。その中に「indexタグによって除外されました」があればそれらのURLを確認します。(次)

サイトマップのSearch Console登録とnoindexと大誤解 11
「noindexタグによって除外されました」の項目のURLがサイトマップに登録されていないことを確認する。「noindexタグによって除外されました」のURL数が異常に多い場合は次。

サイトマップのSearch Console登録とnoindexと大誤解 12
「すべての既知のページ」を「全ての送信済みページ」に変える。サイトマップで送信したURLの中に「noindexタグによって除外されました」があるということは、それが「送信されたURLにnoindexタグが追加されています」になるだろうということ。上の画像のように「データが見つかりませんでした」なら問題無し。

サイトマップ出力プラグインによってはWordPressの全ページをサイトマップに載せようとしたりそうではなかったりと挙動が違う場合がある。先述のとおりXML Sitemap&Google Newsはpre_get_postsクエリーの影響を受けるので全てのページをサイトマップに載せようとしない代表かもしれない。挙動によってはサイトマップに載るべきURLがサイトマップに載らなくて悩むことになる。
反対にGoogle XML SitemapsはWordPressのデータベースから直接記事情報を取って全てのページのURLをサイトマップに載せようとするのがデフォルトの動作。サイトマップに載せたくないページをWordPress管理者がGoogle XML Sitemapsプラグインの設定に追加してやる必要がある。この挙動の差で「送信されたURLにnoindexタグが追加されています」が発生することがあるかもしれないが、それはnoindexを付けている記事を管理者が把握して適切に設定すれば済むこと。

関連記事: