robots.txtの書き方|設定でよくある間違いと確認方法
三橋竜彰・
robots.txt は、クローラーにどのURLを取得してよいかを伝えるファイルです。サイトのルート(https://example.com/robots.txt)に置くテキストファイルで、書式は数行で済みます。
難しいのは書式ではなく、何を止められて何を止められないかの理解です。ここを取り違えると、消したいページが消えなかったり、出したいページが消えたりします。
基本の書き方
最小構成はこれだけです。
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
- User-agent:どのクローラーへの指示か。
*はすべて - Disallow:取得を許可しないパス。空欄なら制限なし
- Allow:Disallow の中で例外的に許可するパス
- Sitemap:サイトマップの場所。任意だが書いておく
特定のディレクトリを止めるならこうです。
User-agent: *
Disallow: /admin/
Disallow: /tmp/
Sitemap: https://example.com/sitemap.xml
パスは前方一致で、/admin/ と書けばその配下すべてが対象になります。末尾に $ を付けると完全一致、* はワイルドカードとして使えます。
よくある間違い
実装で事故が起きるのは、たいてい次のどれかです。
1. noindex と併用してしまう
最も多く、最も逆効果になる誤りです。
検索結果から消したいページに noindex を書き、同時に robots.txt でも Disallow にする。二重に確実そうに見えますが、逆になります。
結果として noindex が伝わらないまま、外部リンク経由でURLだけが登録されることがあります。**検索結果から消したいなら、robots.txt では止めず、クロールさせて noindex を読ませてください。**使い分けはnoindexとは?canonicalとの使い分けとインデックス制御の基本にまとめています。
2. インデックス制御のつもりで使う
robots.txt が止めるのは**クロール(取得)**であって、インデックス(登録)ではありません。上と同じ理由で、Disallow にしたURLが検索結果に出ることはあります(本文が読めないため、URLだけの表示になります)。
3. アクセス制限だと思っている
robots.txt はお願いであって、アクセス制御ではありません。ファイル自体が誰でも読めるので、Disallow: /secret-admin/ と書くことは「ここに管理画面があります」と公開するのに近い行為です。見せたくないものは認証で守ってください。
4. CSS や JS を止めてしまう
/assets/ や /static/ をまとめて Disallow にすると、検索エンジンがページを正しく描画できなくなります。レンダリングに必要なファイルは止めないでください。
5. 書き換えたつもりが反映されていない
WordPress では、実ファイルが無い場合に仮想の robots.txt が出力されます。サーバーにファイルを置いたつもりでも、プラグインが上書きしていることがあります。次の節で確認します。
反映を確認する
書いたあと、必ず3つを見てください。
- 本番のURLを直接開く:
https://example.com/robots.txtをブラウザで開いて、意図した内容が出ているか - Search Console の URL 検査:対象URLがブロックされているかを個別に確認できる
- 意図しないパスを巻き込んでいないか:前方一致なので、
/blogと書くと/blog-archiveも止まります
AIクローラーの扱い
近年は検索エンジン以外のクローラーも robots.txt を見ます。GPTBot・ClaudeBot・PerplexityBot・Google-Extended などです。
これらは User-agent 名を指定して個別に許可・拒否できます。ただし学習用と検索用でボットが分かれているため、「AIに引用されたいが学習には使われたくない」といった要望は、どのボットを許可するかの選択になります。具体的な書き分けはGPTBotの許可・拒否設定|robots.txtでの制御方法で整理しました。
クロールバジェット目的で使うべきか
「不要なURLを Disallow してクロールを節約する」という話を見かけますが、個人・小規模サイトで効いてくる場面は多くありません。クロールバジェットが実際に制約になるのは数万URL規模からで、それ以前はクロールされない原因が別にあります。
判断の目安はクロールバジェットとは?小規模サイトで効くのはクロールデマンドに、インデックスされない原因の切り分けはインデックスされない原因の切り分け方|まず見る3つの分岐にまとめています。
よくある質問
robots.txtの基本的な書き方を教えてください。
User-agent でどのクローラーへの指示かを示し、Disallow で取得を許可しないパスを書きます。最小構成は User-agent: * と Disallow:(空欄=制限なし)、そして Sitemap の行です。パスは前方一致で、/admin/ と書けばその配下すべてが対象になります。
robots.txtでページを検索結果から消せますか?
消せません。robots.txt が止めるのはクロール(取得)で、インデックス(登録)ではありません。Disallow にしたURLが、本文の読めない状態で検索結果に出ることもあります。消したいときは noindex を使い、robots.txt では止めないでください。
noindexとrobots.txtを両方設定してもいいですか?
いけません。Disallow でページの取得を止めると検索エンジンがHTMLを読めなくなり、そこに書いた noindex も読めなくなります。noindex が伝わらないまま外部リンク経由でURLだけが登録されることがあります。クロールさせたうえで noindex を読ませてください。
robots.txtでアクセスを制限できますか?
できません。robots.txt はクローラーへのお願いであり、アクセス制御の仕組みではありません。ファイル自体は誰でも読めるため、隠したいパスを書くことは、その存在を公開するのに近い行為になります。見せたくないものは認証で守ってください。
書き換えたのに反映されません。
WordPress では実ファイルが無い場合に仮想の robots.txt が出力され、プラグインが上書きしていることがあります。まず本番のURL(https://example.com/robots.txt)をブラウザで直接開いて、意図した内容が出ているかを確認してください。
まとめ
- robots.txt が止めるのはクロール(取得)。インデックス(登録)ではない
- noindex と併用しない。取得を止めると noindex が読まれない
- アクセス制限ではない。隠したいものは認証で守る
- CSS・JS は止めない。描画できなくなる
- 書いたら本番URLを直接開いて確認する。仮想ファイルに上書きされていることがある
- AIクローラーは User-agent 名で個別に指定できる
書式で迷うことはあまりありません。迷うのは「何を止めたいのか」のほうです。