robots.txtの記述方法

robots.txtとは、Webクローラに対してWebサイトの収集方法を指示するものです。ここではその記述方法について解説します。

すべてのWebクローラが、robots.txtの指示に従う保証はありません。

robots.txtの配置

robots.txtを記述するファイルは、

  • フォーマット … プレーンテキスト (plain text)
  • エンコード … BOMなしのUTF-8
  • 改行文字 … CR、CR/LFまたはLF

の形式である必要があります。Robots.txt Specifications - Webmasters | Google Developers

そしてこのファイルをrobots.txtのファイル名で、「http://example.com/robots.txt」のようにドメインのルートに配置します。

ところでrobots.txtがこのように配置されていることを利用し、実際のサイトでの記述例を参照できます。

書式

field:value#optional-comment

行頭と行末の空白は無視されます。また 「#」以降は、行末までコメントとして無視されます。

fieldには、

  • User-agent
  • Disallow
  • Allow
  • Sitemap

などを指定できます。

分類 (Grouping)

User-agent以下がグループとしてまとめられ、DisallowとAllowはそのグループに対して適用されます。

文法の確認

Google ウェブマスター ツールrobots.txt テスターで、記述したrobots.txtに問題がないか確認できます。

記述例

User-agent: *
Disallow: /sample/

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

パスの指定方法

パスにはワイルドカードを使用できます。

  • * … ゼロ個以上の任意の有効な文字
  • $ … URLの末尾
記述 適用されるパス 説明
/ / すべてのパス。
/a
/b.html
/* (上に同じ) (上に同じ)
/aa /aa /aaから始まる、すべてのパス。
/aabb.html
/aa/c.html
/aa* (上に同じ) (上に同じ)
/aa/ /aa/ /aa/から始まる、すべてのパス。つまり/aa/フォルダ以下に配置された、すべてのファイル。
/aa/c.html
/aa/dd/e.php
/*.php /aa.phpbb.html .phpに部分一致するすべてのパス。拡張子部分にマッチさせるには、次のようにする必要があります。
/*.php$ /aa.php 末尾が.phpとなっているパスのみ。このとき.php?a=bのようにパラメータが付加されているパスにはマッチしません。
Robots.txt Specifications - Webmasters | Google Developers

クロールのブロック

robots.txtの解釈方法は、クローラによって異なります。

Googleにおいては、クロールをブロックしても他のサイトからリンクされていれば、インデックスに登録されることがあります。robots.txt ファイルについて - Search Console ヘルプ

  • User-agent … 以降のルールを適用するクローラ
  • Disallow … ブロックするURL (検索エンジンへの登録を拒否するURL)

たとえば、すべてのクローラからの/directory1/へのアクセスをブロックし、さらにGooglebotには/directory2/へのアクセスも禁止するならば、

User-agent: *
Disallow: /directory1/

User-Agent: Googlebot
Disallow: /directory2/

のように、2つ続けて記述します。

Googleのクローラ (Googlebot) に対しては、次のような指示が有効です。

  • サイト全体へのアクセスをブロック
    Disallow: /
  • 特定のディレクトリ以下へのアクセスをブロック
    Disallow: /directory1/
    Disallow: /directory1/directory2/
  • 特定のページへのアクセスをブロック
    Disallow: /private_file.html
  • Google画像検索からの、すべての画像へのアクセスをブロック
    User-agent: Googlebot-Image
    Disallow: /
    
  • Google画像検索からの、特定の画像へのアクセスをブロック
    User-agent: Googlebot-Image
    Disallow: /images/dogs.jpg
    
  • 特定の拡張子のファイルへのアクセスをブロック
    User-agent: Googlebot
    Disallow: /*.gif$
    
  • AdSenseのクローラ以外からのアクセスをブロック
    User-agent: *
    Disallow: /
    
    User-agent: Mediapartners-Google
    Allow: /
    

Googlebotのアクセスを広範に遮断すると、Google ウェブマスター ツールでは「プロパティの健全性に重大な問題が発見されました。」として「重要なページが robots.txt によってブロックされています。」と報告されます。Googlebot がブロックされていないかどうか確認する - Search Console ヘルプ

XMLサイトマップ

fieldをSitemapとすることで、クローラに対してXMLサイトマップの場所を示せます。

Sitemap: http://example.com/sitemap.xml
複数の技術系サイトから、まとめて検索