robots.txtの設定ミスでクロール効率が低下する?実務で見かける3つの落とし穴
こんにちは!
今日は「robots.txtの設定ミスでクロール効率が低下する?実務で見かける3つの落とし穴」について解説します。
これ、ほんま多いんですよ。
SEOのコンサルタントさんもよく指摘するんですが、意外と本気でハマってる案件が多いんです。
robots.txtは「クローラーへの指示書」だという勘違い
僕も最初は勘違いしてたんですが、robots.txtって「クローラーに対する絶対的な指示」だと思ってる人、めっちゃいますよね。
実はそうじゃないんです。
robots.txtは「礼儀正しく動くクローラーに対する*願い*」みたいなもんなんです。
Googleのクローラーはちゃんと守ってくれるんですが、悪意のあるボットはスルーします。
だから「絶対にここは見られちゃいけない情報」を守るためにrobots.txtだけに頼るのはNGなんですよ。
でも、ここからが大事です。
多くの人が誤解してるのは「robots.txtで禁止したページはGoogleに検出されない」ってことなんです。
実際には、Googleはファイル自体は発見できます。
ただ、その内容は見に行きません。
つまり、robots.txtで禁止したからといって、検索結果に出ないわけじゃないんですよ。
現場でよく見るのは、こういう状況です。
クライアントが「このページは見られたくないからrobots.txtで禁止しよう」って言って設定したのに、なぜか検索結果に出てる。
で、「あ、noindexメタタグも入れないとダメなんだ」って気づくパターン。
これ、ほんま多いんです。
設定ミスで大事なページまでブロックしてる現場あるある
さて、ここからが今日の本題なんですが。
実装の落とし穴、3つあります。
落とし穴1: ワイルドカードの使い方を間違える
これ、僕も昔やってました。
以下のような設定を見たことないですか?
Disallow: /*
これね、すべてのページをブロックしちゃいます。
「あ、もう検索対象から外そう」って急いで設定したんでしょう。
でも意外とこのまま本番に上がってたりするんですよ。
もっと危ないのが、こういう設定です。
Disallow: /admin/Disallow: /*.pdf
一見、正しく見えますよね。
でも、実は/*.pdfってのは「.pdfという文字列を含むすべてのパス」をブロックするんです。/files/document.pdfもそうですが、/blog/2024.pdf/articleみたいなパスもブロックしちゃいます。
大事なページまでやられちゃう可能性があるんですよ。
落とし穴2: User-agentの指定を誤る
これ、現場でよく見るんですが、クライアントが「Googleだけに指示を出したい」って言うんですよ。
で、こう書く人がいます。
User-agent: Googlebot
間違いじゃないんですが、非常に危ない設定です。
なぜなら、Google以外のクローラー(Bingとか)には何の指示も与えないことになるから。
結果、すべてのボットが自由にクロールしちゃいます。
「あ、Googleのみに設定したいんだ」という意図は分かるんですが、実装としては微妙です。
ほかの検索エンジンの評価も大事なので、基本的にはUser-agent: *ですべてのボットに同じ指示を出す方が無難ですよ。
落とし穴3: 新しいページやリソースをブロックしてる
これ、ほんまに多いんです。
昔のプロジェクトで「/new/ディレクトリはテスト環境だからブロック」って設定したやつが、そのまま本番環境に残ってた。
で、実際に/new/ディレクトリが新サービスのディレクトリになったんですよ。
結果、新しいサービスがGoogleにクロールされない。
当然、検索結果にも出ない。
売上が上がらない。
これ、ほんまに困った案件です。
要するに、robots.txtの設定は定期的にレビューしないといけないってことなんです。
クロール予算を無駄にしないための実装ルール
では、実践的な設定方法を解説します。
基本形: 必要なもの以外をブロック
基本的な考え方はこれです。
「クローラーに見てほしいページ以外をブロック」するんじゃなくて、「見てほしくないページだけをブロック」するんですよ。
例えば、こんな感じです。
User-agent: *Disallow: /admin/Disallow: /private/Disallow: /tmp/Disallow: /search?
ポイントは、Disallowを具体的にすることです。
「このディレクトリはダメ」「このパラメータ付きのパスはダメ」って明確にするんですよ。
セッションIDやキャンペーンパラメータを外す
めっちゃ重要なのが、これです。
Webサイトを運用してると、同じコンテンツに複数のURLでアクセスできることがあります。
例:/products/item.html/products/item.html?utm_source=email/products/item.html?sessionid=12345
これ、すべて別のURLとしてクローラーが認識しちゃいます。
クロール予算を無駄にしてるんですよ。
だから、こう設定するといいですよ。
Disallow: /*?sessionid=Disallow: /*?utm_
こうすることで、セッションIDやマーケティングパラメータ付きのURLはクロールされません。
大事なコンテンツのクロール予算が増えるんです。
Crawl-delayで丁寧に
最後に、これは上級者向けなんですが、Crawl-delayを設定することで、クローラーが来すぎて負荷がかかるのを防げます。
User-agent: *Crawl-delay: 1
これは「1秒間隔でクロールしてね」という意味です。
サーバーに負荷がかかってる場合とかに使いますよ。