2016/1/23

robots.txtの書き方

区切り線

2016010091702

Googleなどの検索エンジンのインデックスを制御することが出来る「robots.txt」ですが、存在は知っているけれども自分で設置したことが無い、どうやって記述したらいいのかわからないという方も少なくないかと思います。

今回は、初心者の方でも簡単にできるrobots.txtの書き方を紹介致します。

robots.txt設置の目的

  1. 検索結果に表示する必要の無いページをクローラーに知らせる
  2. sitemap.xmlの場所を知らせる

「1.」の具体的な検索結果に表示する必要のないページとしては、CMSのログインページなどがあるでしょう。

カートの決済画面や閲覧者制限が設けられているページなども考えられますが、そのような動的に自動生成されるページに関しては検索結果にでることはほとんどありませんので、サイトの規模次第ではあえてrobots.txtでクロールをブロックすることも無いかと思います。

大規模サイトとなると、動的に生成されるページも多くなるので、そのような場合は、直前の共通ディレクトリ部分までブロックすればよいです。

他にも、サイト内の広告のリンク先も考えられますが、こちらはrobots.txtで対応するのではなく、「rel=”nofollow”」で対処する方が適切でしょう。

「rel=”nofollow”」に関してはこちらに詳しく書かれています。
https://support.google.com/webmasters/answer/96569?hl=ja

ただし、ここで忘れてはいけないのは、robots.txtは単純に検索結果に表示させたくないページをクローラーに知らせることが目的ではなく、クロールするファイルを制限することで「クロールの巡回効率を助ける」ことが真の目的であるということです。

つまり、重複コンテンツと考えられるページをrobots.txtでブロックすることは適切ではないということです。

SEO対策を行う上で、重複コンテンツは少なからず気にする点ではありますが、重複コンテンツが気になる場合には適切な方法で対処する必要がありますので、こちらの記事もご覧ください。

duplicate
重複コンテンツ/コピーコンテンツによるSEOへの影響と対策

「2.」については、サイトマップの場所を検索エンジンに伝え、サイトマップによってサイト内も効率よくクロールされることになります。

robots.txtの具体的な書き方

準備するものはメモ帳だけあれば問題ありません。
もちろん、エディターを使っても構いません。

対象とするクローラーの指定

User-agent:でクローラー名を指定することで、それぞれのクローラーに対する指示ができます。

#全てのクローラーを対象にする場合
User-agent: *
#Googleのクローラーを指定する場合
User-agent: Googlebot
#Google画像検索のクローラーを指定する場合
User-agent: Googlebot-Image
#Bingのクローラーを対象にする場合
User-agent: bingbot
#Naverのクローラーを対象にする場合
User-agent: Yeti/1.0

YahooはGoogleと同じものを使用しているので、Googleと同じ指定で大丈夫です。

複数のクローラーに対して同時に指定する場合は、改行して下記のように記述します。

#複数のクローラーを同時に指定する場合
User-agent: Googlebot
User-agent: bingbot

ほとんどの場合は対象の検索エンジンを指定することは無いと思いますので、特別な理由が無い限りは「*」(アスタリスク)の記述で問題ありません。

クロールを禁止する

次に、クロールを禁止するディレクトリまたはファイルを指定します。

もちろん、ルートディレクトリ(一番上の階層フォルダ)の指定も可能です。

robots.txtでは、ディレクトリ単位での指定やファイル単位での指定が可能です。
禁止するときは、Disallow:で指定します。

ディレクトリ単位で指定する場合

全ての検索エンジンからの「http://example.jp/hoge/」へのクロールを禁止する場合はこのようになります。

User-agent: *
Disallow: /hoge/

※ルートディレクトリを指定する場合は「/」(スラッシュ)だけ記述すれば大丈夫です。

ファイル単位で指定する場合

特定のファイルだけクロールをブロックしたいという場合は、下記のようにディレクトリとあわせてファイル名まで書けば大丈夫です。

User-agent: *
Disallow: /hoge/sample.html

クロールを許可する

このディレクトリはブロックしたいけれど、その中の特定のファイルはブロックしたくないという場合には、Allow:を使うことでアクセスを許可することが出来ます。
記述のルールはDisallow:と同じです。

具体的には下記のようになります。

User-agent: *
Disallow: /hoge/
Allow: /hoge/sample.html

Disallow:とAllow:のどちらかが優先度が高いということは無く、パスが長い方が優先されます。
Disallow:とAllow:を使う際には必ず「/」(スラッシュ)から始まるように記載します。

末尾の一致でクロールを制御する

robots.txtでは、特定の種類のファイルへのアクセスをブロックすることもできます。
例えば、.phpへのアクセスをブロックする場合にはこのようになります。

User-agent: Googlebot
Disallow: /*.php$

この場合の「*」(アスタリスク)は不特定のディレクトリ及びファイル名の代わりになる記述(ワイルドカード)です。
「$」(ダラス)の記述は、直前までで終わらせる記述です。これが無いと example.phphoge.htmlなども含んでしまうことになるので、拡張子部分で一致させる場合には必要となります。

.php?1=2のようなパラメータがある場合には、「$」(ダラス)の記述は必要ありません。

Sitemapの場所を知らせる

robots.txtでは、クローラーのアクセスをブロックする以外に、サイトマップの場所を知らせる役割を持たせることもできます。

サイトマップの場所を知らせることで、検索エンジンがより効率的にサイト内を巡回してくれるようになるので、上記までと合わせてこちらも記載しておきましょう。

サイトマップの場所を知らせる際の記述は下記のようになります。

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

記述の際の注意点

  • 大文字と小文字の違いを認識
  • 無視される場合がある
  • noindexの設定との重複
  • 単純な記述ミス
  • リアルタイムで反映されるわけではない

大文字と小文字もしっかりと区別されるので、ファイル名などを指定する場合にはコピーして記述すると間違いはないでしょう。
また、<meta name="robots" content="noindex" />といった記述をしているページがある場合に、robots.txtで指定しているページと重複してはいけません。

便宜上、検索結果に表示したくないページを指定することを書いていますが、厳密にはクローラーに対してアクセスを禁止することがrobots.txtの役目ですので、インデックスを禁止すること<meta name="robots" content="noindex" />との使い分けは必要となります。

後述のrobots.txtテスターによって、スペルチェックこそ可能ですが、誤って、クロールしてほしい部分をブロックしてしまうと、サイトのトラフィックに影響を与えてしまう可能性がありますので、誤りが無いかは必ず確認しましょう。

robots.txtをアップロードしたからといって、すぐに反映されるわけではなく、サイトがクロールされた段階で認識されますので、少し待つ必要があります。

robots.txtの置き場所

設置する場所はサイトのルートディレクトリ(最上位のディレクトリ)に置きましょう。
例えばこのブログであれば、このようになります。

http://www.lykaon-search.com/robots.txt

設置方法は、FTPツールを使ってサーバーに接続してファイルをアップロードすれば大丈夫です。

レンタルサーバーによっては、サーバーの管理画面からアップロードできるものもあるので、そちらから設置しても良いでしょう。

設置後のテスト

設置が完了したら、Googleが提供する「SearchConsole」のrobots.txtテスターを使って、きちんと認識されているか確認をしましょう。

robots.txtテスター

robots.txtテスターのページの右下にある送信ボタンをクリックします。
クリックするとウィンドウが出てきますので、3番目の「Googleに更新をリクエスト」の「送信」をクリックします。

201512260416

送信が終わると、「送信しました。すぐにテスターページを再読み込みしてタイムスタンプを確認してください。」というメッセージが表示されますが、実際にはすぐには反映されず、数十秒~数分かかりますので、少し待ってから再読み込みすると認識されていることが確認出来ます。

ここで、記述ミスなどがあるとエラー数と警告数のカウントがされますので、間違いないかを確認しましょう。

201512264018

エラー数、警告数ともに0であれば、記述には問題ないということになります。

まとめ

robots.txtの効力は大きい部分はあるものの、絶対ではない点を踏まえると儚いとも言えますので過信は禁物です。

また、robots.txtはクロールされて初めて効果を発揮するので、設置してから少し時間を置く必要があります。
サイトの規模や目的に合わせて最低限記述するだけでも、クロールの際の巡回効率を助ける役目を果たすことができます。

ブログ等の場合は、そこまで複雑な記述をすることは少ないですが、大規模なサイトのrobots.txtを見てみると、かなり複雑なものもありますので、気にしてみてみるのも楽しいかもしれません。

  • このエントリーをはてなブックマークに追加

区切り線

コメントをどうぞ

メールアドレスが公開されることはありません。