robots.txtを使ったほうがいい時と使わないほうがいい時

[レベル: 初〜中級]

管理しているサイトにあなたはrobots.txtを設置していますか?
どんなURLに対するクロールをrobots.txtでブロックしていますか?

GoogleのJohn Mueller(ジョン・ミューラー)氏が英語版のウェブマスター向けオフィスアワーで、一般的に言える、robots.txtを使う場面と使わない場面について説明しました。

クロールが問題を引き起こすときは間違いなく使うべきケースだ。

たとえば、サイトの一部をクロールするのときに、サーバーとたくさん相互にやりとりしたりサーバーがデータベースをたくさん参照したりして、それぞれのページを表示するのに30秒もかかるようだったら、サーバーが暴走してしまうかもしれない。
すべてをダウンさせてユーザーが利用できなくなってしまうかもしれないから、そういうのはGooglebotにクロールさせたくない状況だろう。
robots.txtを使うことに確かに意味がある。

同じようなことがサイト内検索の結果ページにも当てはまるかもしれない。

どんなURLやどんな検索キーワードでも基本的に有効なURLになってしまいそうだから、どういう結果をもたらすかを判断しなければならないだろう。
サイト内検索結果もrobots.txtが意味を成す状況だと思う。

重複コンテンツや内容が薄いコンテンツに対しては私は絶対にrobots.txtを使わないようにする。
なぜなら、そういったページが持っているかもしれないシグナルをすべて失ってしまうからだ。

そのページに向けて内部リンクが張られていたとしたら流れるはずのPageRankを失ってしまうだろうし、外部リンクが張られていたとしても同じようにPageRankをすべて失ってしまう。
そうした重複ページを本当に1つにまとめていいのか、既存の1ページを強くしていいのかがわからなくなるからだ。

したがって、rel=”canonical”やnoindex、リダイレクトを設定してクロールさせたほうが、私の観点からするとずっと意味を成す。

ミューラー氏の説明に僕からの補足を交えながら、robots.txtを使うべきケースと使わないほうがいいケースをまとめます。

robots.txtを使うべき代表的なケース

robots.txtを使ったほうがいい代表的なケースにはたとえば次のようなものがあります。

  • クローラがサーバーに与える高負荷を抑制する
  • サイト内検索結果
  • 自動生成ページ

クローラがサーバーに与える高負荷を抑制する

特定の種類のURLに対してクローラがあまりにも頻繁にリクエストを発生させることで、サーバーに高い負荷がかかり反応が遅くさせてしまうことがあるかもしれません。
負荷によって、ページ表示が極端に遅くなったりそれこそサーバーがダウンしてしまったりしたら、ウェブサイトを本当に提供したい人間のユーザーのアクセスに支障が出てきます。
静的なコンテンツで発生することはほぼないでしょうが、生成するのにデータベースやプログラムの処理が絡んでくるコンテンツで発生するかもしれません。

サイト内検索結果

サイト内検索の結果ページはクロールさせるべきではないページです。
2つの問題点があります。

1つ目は、ユーザーが検索する度に新しいURLが作られる可能性があることです。
そのサイトが本来持っているページの数百倍、数千倍、数万倍のURLができあがるかもしれません。
本当にクロールされるべきページがクロールされづらくなりクロール効率が悪くなるかもしれないし、ひょっといしたらサーバーに必要以上の負荷がかかることがあるかもしれません。

2つ目は、ユーザー体験を損ねることです。
Googleの検索結果からやってきたユーザーに、また検索結果を見せてしまいます。
ユーザーはサイトに訪れたあとで再び探さなければなりません。
探していものがすぐに見つかるようにすることはユーザー体験を高めるうえでは大切です。

自動生成ページ

たとえば、自動翻訳ツールを使って作ったページはクロールさせるべきではありません。
自動翻訳は必ずしも意味が通じるように訳されているとは限りません。
ユーザーにとって価値のないページになっている可能性があります。
クロール、インデックスさせるのであれば、人間の手によってきちんと監修して公開した翻訳ページにしてください。

自動生成ページは、悪質な場合には手動対策の対象になるかもしれません。

この3つほかにもrobots.txtを使うケースは当然あります。
ただ一般的なサイトではrobots.txtによるクロールのブロックが必要な場面はそれほど多くないのではないかと思います。

robots.txtを使わないほうがいいケース

反対に、robots.txtを使いたくなるけど使わないほうがいいケースです。

  • 重複コンテンツ防止・低品質ページ対策
  • JavaScript・CSS
  • モバイル向けサイト

重複コンテンツ対策・低品質ページ対策

重複コンテンツや低品質ページの対策としてrobots.txtを使いたくなります。
ですが、Googleは推奨していません。

Googleはこうしたページをクロールして内容を見たうえで、どうすべきかを自分たちで判断したいのです。
robots.txtでブロックされていたら中身を知ることができません。

ミューラー氏が指示するように、重複コンテンツや低品質ページにはrel=”canonical”か、noindex robots metaタグ301リダイレクトで対応します(本当にすべきは、重複コンテンツや低品質ページを作らないこと。低品質ページがあるなら、インデックスさせないのではなく質を高めること)。

クロールさせても検索結果に出さないようにします。

JavaScript・CSS

JavaScriptやCSS、画像など主要なコンテンツのレンダリングに必要なリソースをrobots.txtでブロックしてはいけません。
現在のGooglebotはページをレンダリングした状態でも評価します。
こうしたリソースのクロールがブロックされていると正しく評価されず、結果として本来あるべき検索順位よりも低い順位に掲載されてしまうかもしれません。

モバイル向けサイト

ウェブ検索の結果にモバイル向けページが出てきてしまったので、robots.txtでモバイル向けサイトをブロックした

こんな投稿をヘルプフォーラムで何回か目にしたことがあります。
絶対にやめてください。
原因はGoogleがサポートするモバイル向けサイトの推奨構成ができていないからです。

モバイルページのレンダリングに必要なJavaScriptやCSSももちろんブロックしてはいけません。

基本的には、すべてのページとCSSやJavaScriptなどすべてのリソースを今はクロールさせたほうがいいでしょう。
ブロックすることに確かな意味があると言い切れるときに、robots.txtを使います。

少なくとも、その効果をきちんと把握できていない状態ならむしろ何もブロックしないほうがいいと僕は思います。
予期せぬトラブルのもとになります。
クロールをまったくブロックしないときのrobots.txtの設定は以前に解説しました。

もちろん、ガイドラインに触れるかもしれないサイト内検索結果や自動生成ページは自発的にブロックします。