2026年6月20日

2026年6月20日

WordPressのrobots.txtを最適化してクローラーの巡回を無駄なくする方法

WordPressのrobots.txtは、多くのサイトでは標準の内容にサイトマップの場所が書かれていれば十分で、「ブロックを増やすほど良くなる」ものではありません。この記事では、WordPressがrobots.txtをどう生成しているか、追記を検討してよいケースとやってはいけない記述、編集方法の選び方、Search Consoleでの確認手順を説明します。目的は、クローラーが価値の低いURLに時間を使わず、重要なページにたどり着きやすい状態を作ることです。

robots.txtでできること、できないこと

robots.txtは、検索エンジンのクローラーに「このパスはクロールしないでください」と伝えるテキストファイルです。ここで押さえておきたいのは、Googleの公式ドキュメントでも明記されているとおり、robots.txtはクロールの制御であって、インデックスの制御ではないという点です。

robots.txtでブロックしたURLでも、外部や内部からリンクされていれば、内容を読まれないままURLだけが検索結果に表示されることがあります。検索結果に出したくないページには、robots.txtではなく noindex を使います。しかも、noindex はクローラーがページを読んで初めて伝わるため、同じURLをrobots.txtでブロックすると noindex が届かなくなります。「noindexにしたページはrobots.txtで塞がない」が基本ルールです。

また、robots.txtは公開ファイルで誰でも読めます。管理画面や非公開ファイルを隠す目的には使えず、むしろ場所を知らせてしまいます。アクセス制限はパスワードやサーバー設定で行ってください。

WordPressが出力する標準のrobots.txt

ドキュメントルートに robots.txt というファイルが存在しない場合、WordPressは https://example.com/robots.txt へのアクセスに対して、コアの do_robots() で内容を動的に生成します(いわゆる仮想robots.txt)。サイトが公開設定になっていれば、おおむね次の内容です。

User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php

Sitemap: https://example.com/wp-sitemap.xml

/wp-admin/ をブロックしつつ admin-ajax.php を許可しているのは、フロント側の機能がAjaxでこのファイルを使うことがあるためです。最後の Sitemap: 行はWordPress 5.5以降のコア標準サイトマップのもので、SEOプラグインのサイトマップを使っている場合は、プラグインによって内容が置き換わったり追記されたりします。

ブラウザで自分のサイトの /robots.txt を開き、実際に何が出ているかを最初に確認してください。

追記を検討してよいケース

Googleは、クロールの量(クロールバジェット)を意識する必要があるのは主に非常に大規模なサイトや、更新頻度が極めて高いサイトだと説明しています。数百〜数千記事程度のブログで、robots.txtの調整によって検索順位が上がることは期待しないでください。そのうえで、次のような「ほぼ無限に生成されるURL」がある場合は、ブロックを検討する価値があります。

  • 内部検索結果(/?s=キーワード)が外部から大量にリンクされ、クロールされている
  • 絞り込み検索や並べ替えのパラメータの組み合わせで、似たページが際限なく作られる(ECサイトの商品一覧など)
  • カレンダー系プラグインが、何年先までも空の日付ページを生成している

内部検索結果については、noindex で対応する方法もあります。インデックスから外したいなら noindex、クロールそのものを減らしたいならrobots.txt、とどちらか一方を選び、両方を同時に設定しないようにします。

よくある「やってはいけない」記述

  • /wp-includes/ や /wp-content/themes/、/wp-content/plugins/ のブロック:古い記事でよく見かける設定ですが、CSSやJavaScriptを読めなくなるとGoogleはページを正しくレンダリングできません。
  • /wp-content/uploads/ のブロック:画像がGoogle画像検索に表示されなくなります。
  • Crawl-delay の記述:Googleはこの指定を解釈しません。
  • 全体を止める Disallow: / の消し忘れ:開発中に入れた記述が本番に残る事故は珍しくありません。

robots.txtを編集する方法

方法1:フィルターで仮想robots.txtに追記する

物理ファイルを置かずに済み、サイトの公開設定とも連動するので、WordPressらしい方法です。コアの robots_txt フィルターを使います。子テーマの functions.php か自作プラグインに追加し、編集前にバックアップを取ってください。

<?php
// 公開サイトのときだけ、内部検索結果のクロールを止める行を追加する
add_filter( 'robots_txt', function ( $output, $public ) {
    if ( '1' === (string) $public ) {
        $output .= "\nUser-agent: *\n";
        $output .= "Disallow: /?s=\n";
        $output .= "Disallow: /search/\n";
    }
    return $output;
}, 10, 2 );

この例では既存の内容の後ろに別グループとして追記しています。Googleは同じ User-agent に当てはまる複数のグループを1つにまとめて解釈しますが、ほかのクローラーの挙動まで揃うとは限らないため、慣れてきたら既存の User-agent: * グループの中に行を差し込む書き方に整理しても構いません。

方法2:SEOプラグインのエディターを使う

Yoast SEO、Rank Math、All in One SEO には、管理画面からrobots.txtを編集する機能があります(2026年10月現在)。メニューの場所や、物理ファイルを作るのか仮想robots.txtを書き換えるのかは、プラグインやバージョンによって異なります。コードを書かずに済む反面、どのプラグインが内容を管理しているのかが分かりにくくなるため、複数の方法を併用しないことが大切です。

方法3:物理ファイルを置く

ドキュメントルートに robots.txt を置くと、Webサーバーがそのファイルを直接返すため、WordPressの仮想robots.txtやフィルターは使われなくなります。シンプルですが、サイトマップのURLが変わったときなどに手で更新し忘れやすい点に注意してください。

書き方の基本ルール

Googleが解釈するのは User-agent、Disallow、Allow、Sitemap の4種類です。パスは大文字と小文字が区別され、*(任意の文字列)と $(URLの末尾)が使えます。同じURLに Allow と Disallow の両方が当てはまる場合は、パスがより長く具体的なルールが優先されます。

ファイルはサイトのルート(https://example.com/robots.txt)に置かれたものだけが有効で、サブディレクトリに置いても読まれません。サブドメインごとにも別々に必要です。また、Googleはrobots.txtを一定時間キャッシュするため、変更がすぐ反映されないことがあります。

AIクローラーへの指定について

最近は、生成AIの学習に使われるクローラーを止めたいという相談も増えています。たとえばGoogleは Google-Extended というユーザーエージェントトークンを用意しており、これを Disallow にしても、Google検索のクロールや掲載には影響しないと説明しています。OpenAIの GPTBot なども同様にrobots.txtで指定できます。ただし、robots.txtに従うかどうかはクローラーの運営者次第で、強制力はありません。各社の名称や扱いは変わることがあるため、追加する前に公式の説明を確認してください。

変更後の確認方法

  1. ブラウザで /robots.txt を開き、意図した内容になっているかを確認します。キャッシュプラグインやCDNを使っている場合は、curl でも確認します。
curl -s https://example.com/robots.txt
  1. Search Consoleの「設定」にあるrobots.txtレポートで、Googleが取得したrobots.txtの内容と取得日時、エラーの有無を確認します(以前の「robots.txtテスター」はこのレポートに置き換わっています。表記は変わることがあります)。
  2. 重要な記事のURLを「URL検査」にかけ、「robots.txtによりブロックされました」となっていないかを確かめます。
  3. 数週間後に「ページのインデックス登録」レポートで、「robots.txt によりブロックされましたが、インデックスに登録しました」のような項目が増えていないかを見ます。増えている場合は、noindexとrobots.txtの組み合わせを見直します。

まとめ

  • robots.txtはクロールの制御で、インデックスを防ぐには noindex を使う
  • noindex にしたURLをrobots.txtでブロックすると、noindex が届かなくなる
  • WordPressの標準robots.txtとサイトマップ行があれば、小〜中規模サイトでは多くの場合十分
  • 追記は内部検索結果やパラメータで無限に増えるURLに絞り、CSS・JS・画像は塞がない
  • 編集方法はフィルター、SEOプラグイン、物理ファイルのいずれか1つに統一する
  • 変更後はブラウザ、Search Consoleのrobots.txtレポート、URL検査で確認する

お気軽にご相談ください

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