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が、内容のないままインデックスに残ることがあります。
すでに検索結果ページがインデックスされている場合は、次の順番で進めます。
- noindex が出力されていることを確認する(robots.txt ではブロックしない)
- Search Consoleのページのインデックス登録レポートで、該当URLが noindex による除外のステータス(表記は変わることがあります)に移るのを待つ
- インデックスから十分に消えたあと、クロールの無駄を減らしたい場合に限って 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 は順位を上げる施策ではなく、不要なページをインデックスから外すための設定