初心者にも分かる!robots.txtの作り方

公開日:

初心者にも分かる!robots.txtの作り方

検索エンジンなどのクロールを制御するためのrobots.txtの基本的な使い方について、初心者向けに説明します。

robots.txtに関するQ&A

初心者向けに、robots.txtとは何かを、Q&A形式でまとめました。

robots.txtとは?

robots.txtとは、GoogleやYahoo!などといった、自サイトの情報を取得(クロール)するプログラム(クローラー)を制御するためのテキストファイルです。例えば、特定のファイルや、ディレクトリをクロール禁止に指定することで、それらの関連ページや画像などを検索エンジンにインデックスさせないようにする、などといったことができます。

何を覚えればいい?

robots.txtの設置方法は簡単です。よほど特殊な事情がない限り、「ここにアクセスしないでね」という記述方法だけを覚えておけば十分です。細かく書いたからといって、SEO上、有利、不利になるようなことはないので安心して下さい。強いて言うなら、細かく書き過ぎて間違った制御をした場合に不利になります。

作成するのにソフトは必要?

必要ありません。robots.txtは、ただのテキストファイルなので、メモ帳があれば十分です。

どこに設置すればいいの?

最上位のディレクトリに、robots.txtという名前のテキストファイルで設置しておけば、クローラーが勝手に参照してくれます。このサイトの場合だったら、https://syncer.jp/robots.txt の位置ですね。robotではなく、robotsであることに注意して下さい。

命令がない場合も設置した方がいい?

設置するべきです。robots.txtは、クローラーに対する規約、説明書のようなものです。「何も制約はないよ」という説明を、robots.txtを通してクローラーに明示して下さい。なお、Googleのことだけを考えるなら、必要ありません。

サイトのページをすべてクロールさせたい場合は、robots.txt ファイルを作成する必要はありません。

Googleによるrobots.txtの取り扱いより引用

強制力はないの?

robots.txtは、.htaccessのような強制力を持ちません。一般的に、Googleなどの信用できるサイトのクローラーは、クロールを開始する前にrobots.txtの内容を確認し、それに従います。行ってはいけない場所には行かないわけですね。しかしながら、これらはあくまでも任意に従っているだけです。世の中には行儀の悪いクローラーがたくさんいて、それらはrobots.txtの内容を無視して自分が取得したい情報を取得します。そういったクローラーに対しては、robots.txtではなく、.htaccessなどで強制的に排除する必要があることを理解しておいて下さい。

robots.txtの作り方

この章では、robots.txtの基本的な作り方を説明します。

クローラーの指定

まずは、命令がどのクローラーに向けたものなのかを指定して下さい。それには、User-agent:の後に、名称を指定します。指定できるのは、1行につき1つです。

全てのクローラー

特定のクローラーではなく、訪れてきた全てのクローラーを指定するには、アスタリスク(*)を利用します。特別な事情がない限り、これだけで大丈夫です。

robots.txt

# 全てのクローラーを対象
User-agent: *

特定のクローラー

例えば、Googleの画像検索のクローラーだけを対象にしたい場合は、Googlebot-Imageを指定します。各クローラーの名称は、後述します。

robots.txt

# Googleの画像検索クローラーのみ対象
User-agent: Googlebot-Image

複数のクローラー

2つ以上のクローラーを指定するには、複数行にわたって指定して下さい。例えば、Googleと、Google画像検索のクローラーを対象にするには下記の通りです。

robots.txt

# Googleと、Google画像検索クローラーの2つを対象
User-agent: Googlebot
User-agent: Googlebot-Image

クロールの禁止

続いて、クロールの禁止するファイル、またはディレクトリを指定する方法です。それには、Disallow:の後に、パスを続けます。例えば、このサイトの運用ポリシー(https://syncer.jp/policy)のページを禁止するには次の通りです。

robots.txt

# 全クローラーを対象
User-agent: *
Disallow: /policy

クロールの許可

逆にクロールを許可したい場合は、Allow:の後にパスを指定して下さい。許可というと、あまり用途が思い付かないかもしれませんが、とりあえず読み進めて下さい。

robots.txt

# 全クローラーを対象
User-agent: *
Allow: /policy

パスの指定

Disallow:Allow:にパスを指定する際のルールを説明します。

スラッシュから開始

まず基本的なルールとして、パスはスラッシュ文字(/)から指定することを覚えておきましょう。ドメインまでは含める必要がありません。

https://syncer.jp/example/privacy.html

特定のページ

特定のページを1つ指定する例です。

robots.txt

# [https://syncer.jp/example/privacy.html]を禁止
Disallow: /example/privacy.html

特定のディレクトリ

ページではなく、ディレクトリを指定するには、スラッシュで終えて下さい。下記の例では、exampleディレクトリ以下の全てのページがクロール禁止となります。

robots.txt

# [https://syncer.jp/example/]以下を禁止
Disallow: /example/

パターンマッチ

正規表現を使用して、不特定多数のファイルやディレクトリを指定することができます。

アスタリスク(*)

似たような名前のファイルを一気に指定したい場合などは、アスタリスク文字(*)を使うことができます。例えば、拡張子が.htmlのファイルを全て禁止するには、次の通りです。

robots.txt

# [example]ディレクトリ内の、[.html]のファイルを全て禁止
Disallow: /example/*.html

アスタリスクは、ディレクトリ名にも利用することができます。例えば、photo-1photo-2photo-3の3つのディレクトリを全て指定するには次の通りです。

robots.txt

# [photo-1][photo-2][photo-3]のディレクトリへのアクセスを禁止
Disallow: /photo-*/
ドル記号($)

末尾を指定したい場合は、ドル記号($)を用います。例えば、先の*.htmlというパターンマッチを指定した場合、次のファイル名も含んでしまいます。こういった事態はあまり起きませんが…。

https://syncer.jp/hoge.html-list.php

末尾を指定することで、こういった混同を防ぎましょう。

robots.txt

# [example]ディレクトリ内の、[.html]のファイルを全て禁止
Disallow: /example/*.html$

サイトマップの指定

robots.txtでは、クローラーにサイトマップの場所を明示することができます。例えば、Googleの場合は専用の管理画面でサイトマップを送信することができるので不要ですが、他の不特定多数の検索エンジンのクローラーを見越して、指定しておいて悪いことはないでしょう。Sitemap:の後に絶対パスで指定して下さい。

robots.txt

# サイトマップの場所を明示する
Sitemap: https://syncer.jp/sitemap.xml

コメントの挿入

robots.txtにメモなどのコメントを残したい場合は、シャープ(#)を用いて下さい。

robots.txt

# ここは〜ため禁止した
Disallow: /deny/admin.php

robots.txtのサンプル

様々なrobots.txtの例を紹介します。「よく分からないうちは何もしないのが一番安定する」ということだけ覚えておいて下さい。

何も指定しない

ここまで説明しておいて何ですが、通常は何も指定する必要はありません。次のように、サイトマップの場所だけ指定したrobots.txtを設置しておけば大丈夫だと思います。

robots.txt

User-agent: *

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

インデックスから削除する

望まないページが検索エンジンにインデックスされてしまった場合、例えば、Googleだったら管理画面からURLの削除を行なうことができますが、それと併せて、robots.txtで、そのページへのクロールを禁止にしておくと、なお、確実です。下記は、3つのページを、インデックスから削除させる目的で記述したものです。

robots.txt

User-agent: *
Disallow: /labetter
Disallow: /age-checker
Disallow: /canvas-noise

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

クエリ以下を禁止する

動的に結果が変更されるプログラムなどのページにおいて、例えば、index.php?q=山index.php?q=川などのページが全て、検索エンジンにインデックスされるのが嫌な場合は、次のように、クエリの付いたURLアドレスへのクロールを禁止しましょう。

robots.txt

User-agent: *
Disallow: /index.php?q=*

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

こういった指定は、大手ウェブサイトのrobots.txtを参考にすると分かりやすいでしょう。設置場所は最上位ディレクトリなので、簡単に参照することができます。

管理画面のみ禁止する

WordPressの運営サイトでよくあるのが、次のように、管理画面のディレクトリ以下を禁止する設定です。

robots.txt

User-agent: *
Disallow: /wp-admin/

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

もちろん、管理画面がGoogleの検索結果に表示されるのは困りますが、個人的には、この方法はオススメできません。何故なら、誰でもrobots.txtを見れば管理画面のURLアドレスが分かってしまうからです。FacebookTwitterなどを見ても分かる通り、robots.txtは誰でもアクセスできるファイルです。管理画面などは、その存在自体を隠匿すべきです。こうではなく、CMS特有のwp-adminというディレクトリ名を変更し、管理画面の各ページのHTML上のMETAタグでインデックスを禁止した上で、さらに管理者以外のアクセスを.htaccessなどで強制的に禁止するべきだと思います。

画像ディレクトリの巡回を制限する

例えば、画像ディレクトリ(例: images)への巡回をGoogleの画像検索エンジンのクローラー(Googlebot-Image)のみに許可したい場合は、次の通り指定します。最初に全クローラーに画像ディレクトリへのアクセスを禁止し、後からGoogleのクローラーにのみ、Allow:で上書きする形で許可しています。クローラーの巡回による余計な転送量を抑えたい場合はこのようにしていいかもしれません。

robots.txt

User-agent: *
Disallow: /images/

User-agent: Googlebot-Image
Allow: /images/

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

ただし、これには問題があります。このディレクトリの中に、オープングラフ用の画像が含まれている場合、例えば、Twitter上でシェアされた際に、Twitterカードの画像部分が白紙になってしまいます。

画像部分が白紙のTwitterカード
画像部分が白紙のTwitterカード

これはまさに、Twitterのクローラー(Twitterbot)がrobots.txtに従って、ディレクトリの中の画像を参照できないことが原因です。Twitterのクローラーは、とても行儀が良いことが分かりますね。ということで、次の通り、Twitterのクローラーに巡回の許可を与えなければいけません。

robots.txt

User-agent: *
Disallow: /images/

User-agent: Googlebot-Image
User-agent: Twitterbot
Allow: /images/

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

こういった問題を考えると、「特定のクローラーにだけアクセスを許可する」という設定の難易度は高いと言えますね。当サイトでは面倒なのでしていません。

ウェブ魚拓を拒否する

特定のURLアドレスのページをコピーして保存する「ウェブ魚拓」というサービスがあります。例えば、そのサービスに自サイトのコンテンツをコピー、保存されたくない場合は、robots.txtで拒否することができます。それには、ウェブ魚拓のクローラー(Megalodon)に対して、アクセスを禁止すればOKです。

robots.txt

User-agent: *
Allow: /

User-agent: Megalodon
Disallow: /

Sitemap: http://example.com/sitemap.xml
クロールの拒否
クロールの拒否

このように、誰かがコピーしようとしても、robots.txtに従い拒否してくれます。ちなみに同じ系統のサービスにInternet Archiveがありますが、このクローラー(ia_archiver)も同じ記述で拒否することができちゃいます。

robots.txtをチェックする

「robots.txtの記述を間違えたのが原因でGoogleにインデックスされなくなってしまった!?」などということがないように、robots.txtを作成、編集した場合は、Googleが提供する確認ツールでチェックしておきましょう。この章では、簡単に使い方を説明します。

robots.txtを送信する

「送信」をクリックする
「送信」をクリックする

自身のサイトにrobots.txtを設置後、「robots.txt テスター」のページに移動したら、右下にある「送信」というボタンをクリックして下さい。

「送信」をクリックする
「送信」をクリックする

モーダルウィンドウで、いくつかの手順が表示されますが、一番下にある「送信」をクリックして下さい。すると、「送信しました。すぐにテスターページを再読み込みしてタイムスタンプを確認してください。」というメッセージが表示されます。

robots.txtが反映される
robots.txtが反映される

「すぐに」というメッセージですが、実際には数分経たないと反映されません。ということで、5分後くらいに再び、この「robots.txt テスター」のページに戻って来てみて下さい。図のように、robots.txtの内容が反映されていれば成功です。

1点、注意なのですが、この「送信した」というのは、あくまでもこのツールでチェックをするために送信したという意味です。従って、「管理画面で送信したから、サーバーのrobots.txtは削除していいな」とはなりません。クローラーが参照するのは、あくまでも、あなたのサーバー上に設置してあるrobots.txtだということを理解しておきましょう。

エラーを確認する

「エラー数」「警告数」を確認する
「エラー数」「警告数」を確認する

次に「robots.txtに不備がないか」を確かめましょう。「エラー数」と「警告数」が、記述が間違っている場合のチェック項目です。ここの数字が0なら、記述自体に間違いはないので安心して下さい。

記述エラーがある場合
記述エラーがある場合

例えば、Disallow:sDisallow:と打ち間違えてしまった場合、エラー数が1となり、さらに、エラーがある行の左側にマークを付けてくれます。図の場合は、12行目がエラーだとすぐに分かりますね。

クロールできるか確認する

設定の確認フォーム
設定の確認フォーム

記述があっているだけではチェックは不十分です。「正しい記述で全てのページをクロール禁止にしていた」などという悲劇が起こらないよう、細かい指定をした場合には、意図通り、検索エンジンが該当ページをクロールできるか、できないかをチェックする必要がありますね。それには、フォームにURLを入力し、「テスト」をクリックして下さい。

正常にクロールできる場合
正常にクロールできる場合

正常にクロールできる場合は、このように「許可」と表示されます。

クロールが禁止されている場合
クロールが禁止されている場合

一方、入力したURLアドレスにクロールできない場合は、このように「ブロック」と表示されて、さらにどの行が原因でクロールできないのかがハイライトされます。図では、14行目が原因だと分かりますね。

クローラーの一覧

主なクローラーのユーザーエージェントの一覧です。クローラーを特定した記述をしたい場合にご利用下さい。名前をクリックすると、それぞれのクローラーの説明ページにアクセスできます。

名称説明
GooglebotGoogleウェブ検索
Googlebot-ImageGoogle画像検索
Googlebot-VideoGoogle動画検索
TwitterbotTwitter
FacebotFacebook
DuckDuckBotDuckDuckGo
bingbotBing
SlurpYahoo! (海外)
Megalodonウェブ魚拓
ia_archiverInternet Archive
Baiduspider百度 (Baidu)

結局どうすればいいの?

robots.txtのことがよく分からない人は、とりあえず、下記内容でrobots.txtという名称のテキストファイルを作り、最上位ディレクトリ(例: https://syncer.jp/robots.txt)に設置しておくだけで大丈夫です。設置する以外、何もしなくて大丈夫です。

robots.txt

User-agent: *

# サイトマップのURLアドレス
Sitemap: http://example.com/sitemap.xml

サイト運営を通して、「このページにクローラーが来るのが嫌だな…」「このページが検索結果に表示されるのは困るな…」などといった問題が生じてきた場合に、よろしければ、このページをまた見に来て下さい。はじめっから色々と細かい記述をした上で、「もしかしたらこれが原因でクローラーが上手く巡回できず、そのせいで検索順位が落ちてるのかも…」などと悩むのはもったいないです。「まずは自由にクロールさせた上で、少しずつ最適化していけばいい」というのが、私の考えです。