2026年9月11日

2026年9月11日

WordPressのサイト内検索結果ページをインデックスさせない設定方法(noindex)

WordPressのサイト内検索結果ページ(/?s=キーワード)は、新しいWordPressでは標準で noindex が付く仕組みになっています。そのため多くのサイトでは、まず「今、本当に noindex が出ているか」を確認し、出ていない場合だけ原因に応じて設定を足すのが正しい順番です。この記事では、確認方法、SEOプラグインとテーマで設定する場合の考え方、コードで設定する方法、robots.txt との使い分けまでを説明します。

なぜ検索結果ページを noindex にするのか

検索結果ページは、入力された語句ごとにURLが無限に作られ、中身はほかのページの抜粋の寄せ集めです。Googleも以前から、サイト内検索結果のように検索ユーザーにとって価値の少ない自動生成ページは、クロールやインデックスの対象から外すよう案内しています。

もう一つの理由が、いわゆる検索スパムです。第三者が ?s=宣伝文句やURL のようなリンクを外部に大量に貼り、検索結果ページに表示される検索語を通じて、そのサイトに宣伝文を載せたように見せる手口があります。検索結果ページに noindex が付いていれば、こうしたページがインデックスに残りにくくなります。

なお、noindex は検索順位を上げる施策ではありません。目的は、不要なページをインデックスから外し、検索エンジンと読者に見てほしいページをはっきりさせることです。

まず現状を確認する

WordPress 5.7で導入された wp_robots の仕組みにより、標準状態では検索結果ページの <head> に noindex, follow を含む robots メタタグが出力されます。現行版でも同様の動作です(2026年10月現在)。テーマやプラグインによってはこれが出ていないことがあるので、実際に確認します。

ブラウザで確認する

サイトで適当な語句を検索し、結果ページでページのソースを表示(多くのブラウザで Ctrl+U)して、name="robots" または name='robots' を検索します。noindex を含むタグが1つだけあれば問題ありません。

コマンドで確認する

# HTML内の robots メタタグ
curl -s "https://example.com/?s=test" | grep -io "<meta name=.robots[^>]*>"

# HTTPヘッダーの X-Robots-Tag(設定している場合)
curl -sI "https://example.com/?s=test" | grep -i "x-robots-tag"

ページキャッシュを使っている場合は、キャッシュされた古いHTMLが返ることがあります。設定を変えたらキャッシュを削除してから確認してください。Google側でどう見えているかは、Search Consoleの「URL検査」でも確かめられます。

noindex が出ていないときの原因と対処

原因1: テーマが wp_head() を呼んでいない

robots メタタグはテーマの header.php(ブロックテーマでは自動)で呼ばれる wp_head() を通じて出力されます。古い自作テーマなどで wp_head() が抜けていると、検索結果ページに限らずタグが出ません。この場合は子テーマで header.php を修正し、</head> の直前に <?php wp_head(); ?> があることを確認します。

原因2: SEOプラグインが robots メタを上書きしている

Yoast SEO、Rank Math、All in One SEO などのSEOプラグインは、robots メタタグを独自に制御します。多くの場合、検索結果ページは標準で noindex になるか、設定で切り替えられますが、項目の場所や名前はプラグインとバージョンによって変わります。「検索結果」「その他のページ」「アーカイブ」といった分類の中に、検索ページの noindex に関する項目がないかを探してください。

確認したいのは次の2点です。

  • 検索結果ページが「インデックスしない」設定になっているか
  • robots メタタグが重複していないか(テーマがタグを直接書いていて、プラグインのタグと2つ出ているなど)

タグが2つあり内容が食い違う場合、検索エンジンはより制限の強いほうを採用するとされていますが、意図しない結果を避けるため1つにそろえるのが無難です。

原因3: テーマや別のコードが wp_robots を書き換えている

wp_robots フィルターで noindex を外しているコードがあると、標準の動作が打ち消されます。functions.php や mu-plugins を wp_robots で検索し、意図しない処理がないかを確認します。

コードで設定する方法

SEOプラグインを使っていない、またはテーマの都合で確実性を高めたい場合は、wp_robots フィルターで明示的に指定します。functions.php に直接書くとテーマ更新で消えるため、子テーマか mu-plugin に置きます。作業前にはバックアップを取ってください。

<?php
// wp-content/mu-plugins/search-noindex.php

// 検索結果ページの robots メタタグに noindex, follow を指定する
add_filter( 'wp_robots', function ( array $robots ) {
    if ( is_search() ) {
        $robots['noindex'] = true;
        $robots['follow']  = true;
    }
    return $robots;
}, 20 );

// 検索結果のフィードなどHTML以外のレスポンスにも伝えるため、HTTPヘッダーも付ける
add_action( 'template_redirect', function () {
    if ( is_search() && ! headers_sent() ) {
        header( 'X-Robots-Tag: noindex, follow', true );
    }
} );

follow を残しているのは、検索結果ページ自体はインデックスさせなくても、そこから記事へのリンクはたどってもらってよいからです。template_redirect を使うのは、この時点ではリクエストの解析が終わっていて is_search() が正しく判定できるためです(send_headers ではまだ判定できません)。

SEOプラグインを使っている場合は、このコードとプラグインの設定が二重にならないよう、どちらか一方で管理するのがおすすめです。

robots.txt で Disallow するのは後回しにする

「検索ページを robots.txt でブロックすればよい」と考えがちですが、robots.txt の Disallow はクロール(ページの取得)を止める指示で、インデックスを消す指示ではありません。クロールを止めると、検索エンジンはページ内の noindex を読めなくなります。その結果、外部からリンクされている検索結果URLが、内容のないままインデックスに残ることがあります。

すでに検索結果ページがインデックスされている場合は、次の順番で進めます。

  1. noindex が出力されていることを確認する(robots.txt ではブロックしない)
  2. Search Consoleのページのインデックス登録レポートで、該当URLが noindex による除外のステータス(表記は変わることがあります)に移るのを待つ
  3. インデックスから十分に消えたあと、クロールの無駄を減らしたい場合に限って robots.txt での制限を検討する

大規模サイトでクロールの負荷が問題になっているのでなければ、noindex だけで運用しても問題ありません。

あわせて見直したいポイント

  • サイト内から検索結果ページへのリンクを貼らない: メニューやタグクラウドから ?s= のURLにリンクしていると、検索エンジンに検索結果ページを案内することになります。カテゴリーやタグのアーカイブへのリンクに置き換えます。
  • 「検索エンジンでの表示」設定と混同しない: 「設定 > 表示設定」の「検索エンジンがサイトをインデックスしないようにする」はサイト全体に効く設定です。検索結果ページだけを外したいときに使うものではありません。
  • 検索フォームを置いた固定ページは別物: 「検索ページ」として固定ページを作り、そこにフォームを置いている場合、その固定ページは検索結果ページではありません。インデックスさせたくなければ、SEOプラグインの個別設定などで別途指定します。

まとめ

  • 検索結果ページは、WordPress 5.7以降の標準状態で noindex, follow を含む robots メタタグが出る。まずソースや curl で実際の出力を確認する
  • 出ていない場合は、wp_head() の有無、SEOプラグインの設定、wp_robots を書き換えるコードの順に原因を探す
  • コードで設定するなら、子テーマか mu-plugin で wp_robots フィルターを使い、必要に応じて X-Robots-Tag ヘッダーも付ける
  • robots.txt の Disallow はインデックス削除の手段ではない。noindex が読まれてインデックスから外れたあとに検討する
  • noindex は順位を上げる施策ではなく、不要なページをインデックスから外すための設定

お気軽にご相談ください

お見積りへ お問い合わせへ
▲