robots.txt、なんか難しく考えてない?
えーっと、今日はrobots.txtの話をしようかなと思って。なんか、SEOの話になると必ず出てくるじゃないですか、これ。でも、正直、多くの人がちょっと…なんていうか、過大評価してるか、逆に誤解してるか、どっちかな気がするんですよね。
すごく基本的なファイルで、やることもシンプルなんです。要するに、サイトに来るクローラー、まあ、Googlebotとかですね、そういうロボットに「ここは見てもいいけど、こっちは見ないでね」ってお願いする、ただのテキストファイル。 それ以上でもそれ以下でもない、っていうのが僕の考えです。
これを設定したから順位が上がる、みたいな魔法のファイルじゃない。 どっちかというと、サイトを整理整頓して、クローラーが無駄足を踏まないように手伝ってあげる、みたいな。まあ、そういう地味な役割ですね。
一番多い勘違い、たぶんこれ
で、一番よくある間違いが、検索結果から消したいページをrobots.txtの`Disallow`で指定しちゃうこと。 これ、気持ちはすごく分かるんですけど、実は逆効果になることもあるんです。
なんでかっていうと、`Disallow`は「クロールしないで」っていうお願いであって、「インデックスしないで(検索結果に出さないで)」っていう命令じゃないからです。 だから、Googleはページの中身を見に行けないけど、他のサイトからリンクが貼られてたりすると、「なんか、こういうURLがあるらしい」ってことは認識できちゃう。 そうすると、タイトルとかURLだけが検索結果に出る、みたいな、ちょっと格好悪い状態になったりするんです。
本当に検索結果から消したいなら、それはrobots.txtの仕事じゃなくて、ページのHTMLに`noindex`タグを入れるのが正解。 クローラーには来てもらって、「このページはインデックスしないでね」って書いてあるのを確認してもらう必要があるんです。この違い、すごく大事。
じゃあ、どう書くんだっけ…基本の書き方
それで、実際の書き方ですけど、まあ、すごくシンプル。 メモ帳とか、なんでもいいんですけど、テキストエディタで`robots.txt`っていう名前のファイルを作るだけ。 中身はだいたいこんな感じ。
まず、`User-agent`。 これは「誰に対するお願いか」を指定するところですね。「*(アスタリスク)」にしとけば、「すべてのクローラーさんへ」っていう意味になります。 Googlebotだけとか、Bingbotだけとか、個別に指定もできます。
最近だと、ChatGPTのクローラーである`GPTBot`をブロックしたい、なんていうニーズもありますね。 その場合は、`User-agent: GPTBot`と書いて、その下に`Disallow: /`と書けば、サイト全体を学習データに使われるのを防げます。
User-agent: *
Disallow: /admin/
Disallow: /tmp/
User-agent: GPTBot
Disallow: /
Sitemap: https://www.example.com/sitemap.xml
次に`Disallow`。 これが「このディレクトリ(フォルダ)から下は見ないでください」っていうお願いの部分。WordPressなら管理画面の`/wp-admin/`とか、そういうところを指定するのが一般的ですね。
逆に、特定のファイルだけ許可したいときは`Allow`を使います。 でも、基本は全部許可されてるので、`Disallow`で指定したフォルダの中の一部だけを特別に見せたい、みたいな複雑なことしない限り、あんまり出番はないかも。
最後に`Sitemap`。 これは「サイトの地図はここにありますよ」ってクローラーに教えるためのもの。書いておくと、クローラーがサイトの構造を理解しやすくなるので、まあ、親切心で書いておくのがいいと思います。
「Disallow」と「noindex」、どう使い分ける?
さっきもちょっと話しましたけど、この二つの使い分けが、まあ、一番の肝かもしれません。 どっちも「見られたくない」っていう気持ちは同じでも、やりたいことが全然違うので。 ちょっと整理してみますか。
| robots.txt の Disallow | meta タグの noindex | |
|---|---|---|
| 目的は? | 「このドアから入らないで」。つまり、クロールさせないこと。 | 「部屋には入っていいけど、内容は口外しないで」。つまり、インデックスさせないこと。 |
| どうなる? | 中身は見られない。でも、存在が知られてたらURLだけ検索結果に出るかも。 | 中身を見た上で、検索結果に表示しなくなる。こっちのほうが確実。 |
| どんな時に使う? | サーバーに負荷をかけたくない、価値の低いページ(パラメータ付きURLとか)へのクロールを制限したいとき。 いわゆる「クロールバジェットの最適化」ですね。 | 内容が薄いサンクスページとか、会員限定情報とか、とにかく検索結果に載せたくないページ全般。 |
| 注意点 | これで`noindex`をつけたいページをブロックしちゃうと、`noindex`の指示をクローラーが読めなくなる。最悪の組み合わせ。 | `noindex`を付けたら、robots.txtではブロックしちゃダメ。読んでもらわないと意味がないから。 |
失敗しないための、いくつかの注意点
設定は簡単なんですけど、いくつか落とし穴もあって。一番怖いのは、やっぱり記述ミス。例えば、うっかり `Disallow: /` って書いちゃうと、サイト全体をブロックすることになる。 これはもう、サイトが存在しないのと同じ状態になっちゃうんで、致命的です。
なので、ファイルをアップロードする前に、必ずGoogle Search Consoleにある「robots.txtテスター」で確認するのがおすすめです。 特定のURLがちゃんとブロックされてるか、あるいはブロックされるべきじゃないページが間違ってブロックされてないか、テストできます。
あと、Googleの公式ドキュメントにも書いてあるんですけど、このファイルはあくまで「お願い」ベース。 悪意のあるクローラーとか、一部のクローラーは無視することもあるんで、本当に機密情報とかなら、.htaccessとかでパスワード保護をかけるべきですね。 robots.txtは、そういうセキュリティのためのものじゃない、っていう認識は持っておいたほうがいいです。
まとめみたいなもの
結局、robots.txtって、ほとんどの小〜中規模サイトでは、そんなに凝った設定は要らないんですよね。 WordPressの管理画面をブロックして、サイトマップの場所を教えてあげる。だいたい、それで十分。
これが重要になるのは、何百万ページもあるような巨大なECサイトとか。 そういうサイトだと、検索結果の絞り込みで生まれる無数のパラメータ付きURLとか、価値の低いページにクローラーが時間を使っちゃうと、本当に見てほしい新商品ページとかになかなか来てくれなくなる。 そういう「クロールの効率化」を考えるときに、初めてrobots.txtの戦略的な使い方が生きてくるんだと思います。
だから、まずは基本を間違えないこと。特に`noindex`との使い分け。 そこさえ押さえておけば、大きな失敗はしないはずです。あなたのサイトのrobots.txt、どんなルールを書いてますか?もし何か特別な工夫をしてたら、よかったら教えてください。
