robots.txtを正しく設定できていない?検索エンジンのクロールを効率化する方法|現場で使える実践テクニック

C
クリオ
Web制作ディレクター / フロントエンジニア

こんにちは!

今日は「robots.txtを正しく設定できていない?検索エンジンのクロールを効率化する方法」について解説します。

robots.txtって本当に必要?現場で見かけるあるあるミス

僕も最初の頃、robots.txtについて「設定しなくても大丈夫でしょ」って思ってたんですよね。
ほんまにそれで痛い目にあいました。

Web制作の現場でよく見るのが、サイトを公開する際にrobots.txtを完全に放置してるケース。
特に中規模のサイトだと、クローラーが無駄にクロールしてくれる場所まで見に行ってて、本当に見てほしいコンテンツへのクロール予算を圧迫してるんです。

検索エンジンのクローラー(GooglebotとかBingbot)には「クロール予算」って概念があります。
つまり、一定の時間内にサイトをどれだけ見に来られるか、っていう制限があるわけですよ。
だから、管理画面とか検索結果に出す必要のないページをクロールさせ続けてると、大事なコンテンツの更新を見逃されちゃう可能性があるんです。

robots.txtはそれを制御するめっちゃ重要なファイルなんですよ。

robots.txtの基本的な書き方と設定のコツ

では具体的に説明していきますね。
robots.txtはサイトのルートディレクトリに置くテキストファイルです。
つまりhttps://example.com/robots.txtでアクセスできる場所に配置する必要があります。

一番シンプルな例はこんな感じです:

User-agent: *
Disallow: /admin/
Disallow: /private/
Allow: /

これは「すべてのクローラーに対して、/admin//private/以下は見ないでね」という意味です。
User-agent: *は「すべてのクローラーに対して」という指示ですね。

もう少し実践的な例をあげますと:

User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /search/
Disallow: /*.pdf$
Disallow: /?

User-agent: Googlebot
Allow: /

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

ちょっと複雑に見えるかもしれませんが、説明しますね。
上の部分で「すべてのクローラー」に対してWordPressの管理画面とか検索ページは見ないでと指示してます。
/*.pdf$というのは「PDFファイルはすべて拒否」という意味です。

その後、User-agent: Googlebotで「Googlebotだけは特別にOK」という設定をしてます。
これはGoogleに検索結果に載せてほしいけど、他のクローラーには制限をかけたい時に使うんですよ。

最後のSitemapは「ここにサイトマップがありますよ」という親切な案内ですね。
これがあると、Googlebotがサイト構造を理解しやすくなるので、めっちゃ重要なんです。

よくある勘違いと実例で学ぶ設定方法

ここからは、僕が現場で見かけた「あ、これ間違ってる」っていうパターンを紹介します。

よくある勘違い①:robots.txtで削除指示ができると思ってる

これ、めっちゃよくあるんですよ。
「このページをGoogleの検索結果から消したいから、robots.txtでDisallowすればいい」って思ってる人。

実は違うんです。
robots.txtでページをDisallowすると、クローラーがそのページを見に来なくなるだけで、すでにインデックスされてるページは検索結果に残ったままなんです。

ほんまに削除したければ、そのページにnoindexメタタグを入れるか、Google Search Consoleで削除リクエストを出さなきゃいけません。
robots.txtはあくまで「クロール」を制御するものなんですよ。

よくある勘違い②:すべてをDisallowしてしまう

新しいサイトを作ってて「とりあえず完成するまでクローラーに見られたくない」って理由で、こう書いてる人がいます:

User-agent: *
Disallow: /

これ自体は問題ないんですが、本公開時に消し忘れてしまうことがめっちゃあるんです。
そうなると、サイトが完全に検索結果に出なくなっちゃいます。

本公開前の環境では、robots.txtじゃなくて.htaccessでベーシック認証をかけるとか、別の方法を使うのが安全ですよ。

よくある勘違い③:ワイルドカードの使い方を間違える

「すべてのクエリパラメータ付きURLを拒否したい」ってときに、こう書く人がいます:

Disallow: /?*

これは意味がないんです。
robots.txtで*は「任意の文字列」という意味じゃなくて、単なる文字列として扱われるんですよ。

クエリパラメータを制御したいなら、こう書きます:

Disallow: /*?

?の前に*を付けることで「?以降のクエリパラメータがあるすべてのページ」という意味になります。

実践的な設定例:ECサイトの場合

最後に、実際のECサイトでよく使う設定をお見せします:

User-agent: *
Disallow: /cart/
Disallow: /checkout/
Disallow: /account/
Disallow: /search
Disallow: /*?sort=
Disallow: /*?filter=
Disallow: /tmp/
Crawl-delay: 2

User-agent: Googlebot
Crawl-delay: 0.5

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

この設定の意図は:

  • ショッピングカート、チェックアウト、アカウント画