Search Console のインデックス作成レポートに、こんな項目が出ることがあります。
「送信された URL に noindex タグが追加されています」
設定を見直しても、おかしなところは見つかりません。
noindex にしているページは、意図してそうしているからです。
実はこれ、noindex の設定が間違っているのではありません。
サイトマップ側が、そのページを載せたままになっているだけです。
この記事では、なぜそうなるのかと、設定に合わせて自動で外す方法をまとめます。
なぜ起きるのか
WordPress 5.5 から、本体が wp-sitemap.xml を自動で出すようになりました。
このサイトマップは、公開されている投稿タイプと分類を、そのまま全部載せます。
noindex かどうかは見ていません。
一方、noindex を出しているのは SEO プラグインのほうです。
SEO SIMPLE PACK なら、設定画面の「投稿ページ」や「タクソノミー」にトグルがあります。
つまり、この2つは別々の仕組みです。
- サイトマップ … 「このURLを見に来てください」という申告
- noindex … 「このページは検索結果に載せないでください」という指示
両方を同時に出している状態になります。
案内された先に「入らないでください」と書いてあるので、report に上がります。
どれくらい起きているか
当方で運用しているサイトを数えてみました。
7サイト・22インストール、2026年9月時点の実測です。
| サイトマップの総数 | noindex が載っていた数 | 割合 |
|---|---|---|
| 3,899件 | 181件 | 4.6% |
| 2,131件 | 293件 | 13.7% |
| 999件 | 25件 | 2.5% |
| 162件 | 44件 | 27.2% |
| 117件 | 13件 | 11.1% |
| 105件 | 34件 | 32.4% |
| 104件 | 1件 | 1.0% |
合計で591件ありました。
サイトマップの3分の1が noindex だったサイトもあります。
特徴として、記事は1件も含まれていませんでした。
全部が分類ページ(カテゴリ・タグ・カスタム分類)と著者ページです。
どれも「検索結果には出さない」と決めて noindex にしてあるものでした。
つまり設定は正しく、サイトマップだけが古いままだった、ということです。
自分のサイトで数える
手順は3つです。
robots.txtを開いて、Sitemap の行を見る- そのサイトマップを開いて、載っているURLを集める
- 1つずつ開いて、
robotsメタに noindex があるか見る
数が少なければブラウザだけでもできます。
サイトマップのURLをいくつか開き、ページのソースを robots で検索してください。
ただ、数が増えると手では追えません。
全数を確認するスクリプトは、この記事の後半に置いています。
数えるときに引っかかった3つ
当方はここで3回、判断を誤りました。
同じところで止まらないよう、先に書いておきます。
1. robots メタは1ページに何本も出る
WordPress 本体と SEO プラグインが、それぞれ別に出します。
しかも引用符が違います。
<meta name='robots' content='max-image-preview:large' /> ← WordPress本体
<meta name="robots" content="noindex"> ← SEOプラグイン片方だけを探すと見落とします。
当方はシングルクォートだけを見て、「noindex になっていない」と誤って判断しました。
1本目で止めず、そのページの robots メタを全部集めてください。
2. 転送されたページの中身で判断しない
著者ページを無効にしていると、開いた先がトップページに転送されることがあります。
SEO SIMPLE PACK の「著者ページを無効化する」がこれにあたります。
転送先はトップページなので、当然 noindex は入っていません。
それを読んで「noindex ではないのに外れた」と勘違いしました。
取得したあと、最終URLが最初に指定したURLと同じかを先に見てください。
def get(url):
"""飛ばされた先の中身で判断しないよう、最終URLも返す。"""
req = urllib.request.Request(url, headers=UA)
res = urllib.request.urlopen(req, timeout=60)
return res.read().decode("utf-8", "replace"), res.url
html, final = get(u)
if final.rstrip("/") != u.rstrip("/"):
# 転送された。転送先の robots を読んでも意味がない
print("転送される:", u, "→", final)
continue3. 取得に失敗したものを「問題なし」に数えない
タイムアウトした分を握りつぶすと、件数が実際より少なく出ます。
当方はこれで10件を取りこぼし、あとから数が合わなくなりました。
失敗した件数は、0件でも必ず表示させたほうがよいです。
放置してよいのか
正直に書くと、これ自体ですぐ順位が下がるものではありません。
noindex は効いているので、そのページが検索結果に出ることはありません。
ただ、2つ困ることがあります。
1つは、レポートが読みにくくなることです。
本当に見るべきエラーが、この項目に埋もれます。
当方の場合、1サイトで293件がこれで埋まっていました。
もう1つは、載せる意味のないURLを毎回渡していることです。
サイトマップは「見に来てほしいURL」を伝えるものなので、そこに「見なくていいURL」が3分の1混ざっているのは、伝え方として正しくありません。
プラグインの設定では直りません
SEO プラグインは noindex を出す担当で、本体のサイトマップには手を出しません。
サイトマップを自前で持つプラグインを使っている場合は、そちらの設定で外せます。
本体の wp-sitemap.xml を使っているなら、フィルタで外すことになります。
WordPress には、そのための入り口が用意されています。
| フィルタ | 外せるもの |
|---|---|
wp_sitemaps_taxonomies | 分類ごと(カテゴリ・タグ・カスタム分類) |
wp_sitemaps_post_types | 投稿タイプごと |
wp_sitemaps_add_provider | 著者ページなど、まとまりごと |
wp_sitemaps_taxonomies_query_args | 分類の中の、特定の用語だけ |
wp_sitemaps_posts_query_args | 投稿タイプの中の、特定の記事だけ |
固定で消してはいけません
ここが一番の注意点です。
「カテゴリを消す」と直接書いてしまうと、あとで設定を index に戻したときに、サイトマップに出てこなくなります。
そして、それに気づけません。
サイトマップは普段見ないものなので、間違ったまま何か月も経ちます。
なので、SEO プラグインの設定を読んで判断させます。
トグルを切り替えたら、サイトマップも一緒に変わる形にします。
ここから先(有料部分)
以下を掲載しています。
- そのまま貼れるコード全文(5つのフィルタ)
- 設定キーの落とし穴(カテゴリだけ名前が違います)
- 個別に noindex にしたページも拾う書き方
- 効いたかどうかを全数で確かめるスクリプト
- 複数サイトへ一括で入れる方法
- 入れる前後で必ず見る3点
当方が22インストールに入れて、591件を整理したときのものをそのまま載せます。
この記事だけ読みたい方は単品購入、ほかの有料記事も読みたい方は購読プランをご確認ください。
購読対象の記事・料金は、下のプラン案内で確認できます。
役に立った記事を、ブログやSNSで紹介しませんか?
紹介制度の対象記事・購読プランを購入した方は、codocで専用リンクと報酬条件を確認できます。
専用リンク経由で購入されると、設定された紹介報酬が発生します。
購読プランの紹介報酬は初回課金のみが対象です。
紹介時は、広告・PRであることが読者に分かるように明記してください。



