みなさんのサイトは、robots.txt(ロボッツテキスト)をきちんと設定していますか?
robots.txtは、検索エンジンのクロール(サイトを巡回し、ページの内容を収集・保存する処理)を制御することができるテキスト形式のファイルです。
「え? なにそれ?」と思った方はもちろん、「設定しているけど、これでいいのかな・・・?」と心配に感じている方も、ぜひこの記事を読んで参考にしていただければ幸いです。
目次
「うちのサイトにはあるのかないのかわからないなあ・・・」という場合、下記のようなURLをブラウザに直接入力し、設置されているか確認してみましょう。
※「https://www.example.com/」部分にあなたのサイトのURLを入力してください。
下記のような文字が表示された場合、設置されています。「404エラー」などと表示された場合は、設置されていない可能性があります。
robots.txtのブラウザで表示された例
検索エンジンは、クローラと呼ばれるロボットにサイトをクロールさせ、ページの情報を取得しています。
robots.txtは、検索エンジンのクロールを制御することができるテキスト形式のファイルです。
クローラは、サイトにアクセスする際、まずrobots.txtを最初に読み込んで、クロールすべきページとクロールすべきでないページを確認し、効率的にサイト内をクロールします。
robots.txtは、Googleなどの検索結果にページを表示しないようにするためのファイルではありません。Googleなどの検索結果にページを表示しないようにするには、noindexメタタグを使用する、または「ログイン認証」などでブロックします。
robots.txtは、設置していなくても問題ありません。
検索エンジンは、サイトにアクセスする際、まずrobots.txtを取得しクロールすべきページを判断します。
robots.txtが設置されていないサイトは、HTML内のrobotsメタタグ、またはX-Robots-Tag HTTPヘッダーがクロールされ、問題なくインデックスに登録されます。
ファイル名は「robots.txt」でなければいけません。「ROBOTS.TXT」など大文字もNGです。
robots.txtファイルは、テキストエディタを使用して作成します。
robots.txtのファイル形式は、UTF-8でエンコードされた書式なしテキストです。UTF-8でテキストファイルが作成できるテキストエディタを使用する必要があります。
BOM(バイトオーダーマーク)は、無しに設定します。BOMが設定してあっても無視されます。
robots.txtの最大ファイルサイズは、Googleでは、500KiB(512KB)のサイズ制限があります。最大ファイルサイズを超えた場合、超えた分の内容は無視されます。
● 1サイトに設置できるrobots.txtは、1つだけです。
● robots.txtは、サイトのルート直下に設置します。
● サブドメインや標準以外のポートにもそれぞれ設置することができます。
HTTPステータスコード | 説明 |
---|---|
2xx(成功) | robots.txtが正常に取得できています。
robots.txtに記述されているルールによって、どのページをクロールするかを決定します。 |
3xx(リダイレクト) | 5回以上リダイレクトした後、robots.txtが見つからない場合は、404エラーとして処理します。
robots.txtファイルのリダイレクトの処理(「フレーム」「JavaScript」「meta refresh」なども含む)は推奨されていません。 |
4xx(クライアントエラー) | すべてのページをクロールします。
すべての400番台のエラーは同じに扱われ、robots.txtファイルが存在しないものとみなします。 |
5xx(サーバーエラー) | クロールできるページはありません。(クロールしません)
500番台は一時的なエラーとみなされ、クロールの「完全不許可」となります。 Google固有:サイトの構築にミスがあり、robots.txtファイルが存在しない場合「404」ではなく、500番台のステータスコードが返されていると判断できる場合、Googleはそのサイトからの500番台のエラーを「404」エラーとして扱います。 |
要求の失敗または不完全なデータ | DNSやネットワークの問題(タイムアウト、無効な応答、接続のリセットやハングアップ、HTTPチャンクのエラーなど)が原因で、robots.txtファイルが取得できない場合、サーバーエラーとして扱います。 |
キャッシュ | robots.txtがキャッシュされている期間は、基本的に最長で24時間です。 タイムアウトや500番台のエラーのためにキャッシュが更新できないと、さらに長くキャッシュされる場合があります。 |
それでは、robots.txtの適切な記述方法をご紹介します。
User-agent: * Disallow: /entry/ Allow: /entry/kiyaku.php #これはコメントです Sitemap: https://www.example.com/sitemap.xml
各行は、「フィールド」「コロン(:)」「値」の順で、記述します。スペースは省略可能ですが、読みやすくするために使用しても問題ありません。使用する場合は、半角スペースを使用してください。
ファイル内にコメントを残す場合は、「#」を記述し、そのあとにコメントを記述します。「#」から行の終わりまでの内容は、コメントとして処理されます。
「フィールド」は大文字と小文字は区別しません。
「値」は「フィールド」によって大文字と小文字が区別されます。
利用可能なディレクティブを以下に説明します。
ディレクティブ | 設定 | 説明 |
---|---|---|
User-agent | 必須:グループごとに1つまたは複数 | ルールを適用する検索エンジンのロボットの名前を記述します。 グループごとに1つまたは複数記述することができます。 記述するユーザーエージェント名は、「Web Robots Database」または「Googleのユーザーエージェント一覧」をご確認ください。 プレフィックス(接頭辞)、サフィックス(接尾辞)、または文字列全体にワイルドカード(*)を使用することができます。 # 例1:Googlebotだけをブロックする
User-agent: Googlebot Disallow: / # 例2:GooglebotとAdsbotをブロックする
User-agent: Googlebot User-agent: AdsBot-Google Disallow: / # 例3:すべてのクローラをブロックする
User-agent: * Disallow: / ※値の大文字と小文字は区別しません。 |
Disallow | ルールごとにDisallowまたはAllowのどちらか1つ必要 | User-agentで設定したクローラによるクロールを禁止するディレクトリまたはページ(ルートドメインの相対URL)を記述します。
ページの場合は、ブラウザで表示される完全なページ名にする必要があります。ディレクトリの場合は、末尾を「/」にする必要があります。 プレフィックス(接頭辞)、サフィックス(接尾辞)、または文字列全体にワイルドカード(*)を使用することができます。 # 例1:pages配下のページをすべてのクローラからブロックする
User-agent: * Disallow: /pages/ # 例2:test.htmlをすべてのクローラからブロックする
User-agent: * Disallow: /test.html ※値の大文字と小文字が区別されます。 |
Allow | ルールごとにDisallowまたはAllowのどちらか1つ必要 | User-agentで設定したクローラによるクロールを必要とするディレクトリまたはページ(ルートドメインの相対URL)を記述します。
ページの場合は、ブラウザで表示される完全なページ名にする必要があります。ディレクトリの場合は、末尾を「/」にする必要があります。 プレフィックス(接頭辞)、サフィックス(接尾辞)、または文字列全体にワイルドカード(*)を使用することができます。 Allowを使用すると、Disallowをオーバーライド(上書き)して、Disallowに設定したディレクトリまたはページのクロールを許可します。 ※値の大文字と小文字が区別されます。 |
Sitemap | オプション:複数設定可 | サイトマップのURLを完全修飾(https://から始まるURL)で記述します。
Sitemapは、クロールを禁止・許可するディレクトリまたはページを設定するのではなく、クロールする必要のあるページを設定するのに最適な手段です。 例:「https://www.example.com/」
Sitemap: https://www.example.com/sitemap.xml
Sitemap: https://example.com/sitemap.xml Sitemap: http://www.example.com/sitemap.xml Sitemap: https://www.aaaaa.com/sitemap.xml ※Googleは、「http」か「https」か、「wwwあり」か「wwwなし」かのチェックは行いません。 |
robots.txtに使用できるのはASCII文字のみです(ワイルドカード・特殊文字を除く)(日本語はASCII文字ではありません)。robots.txtにASCII文字以外の文字が含まれていると、クローラに正しい情報を伝えられなくなる可能性があります。
ASCII文字以外の文字をUTF-8文字または「RFC3986」に従って%記号でエスケープします。
下記のURLは非ASCII文字のエンコードが必要な文字「新宿」を使用している例です。
UTF-8エンコードを使用するサーバーでホストされている場合は、次のようにUTF-8エンコードでURLをエスケープします。
GoogleやBingなどの検索エンジンでは、パスの値として、決まった形式の「ワイルドカード」「特殊文字」をサポートしています。サポートしている「ワイルドカード」「特殊文字」は下記のとおりです。
文字 | 説明 | 例 |
---|---|---|
# | 「#」の後にコメント記述をします。 「#」から行の終わりまでの内容は、コメントとして処理されます。 |
Allow: /entry/kiyaku.php #これはコメントです
Allow: /entry/kiyaku.php
#これもコメントです |
$ | 指定の文字列で終わるURLの終わりに設定します。 「$」の後にURLは記述できません。 |
Disallow: /product/campaign/$
|
* | 0個以上の任意の文字を指定します。 一般的に「ワイルドカード」と呼ばれています。 |
Allow: /blog/*/news.html
|
「不許可」
Disallowディレクティブは、User-agentで設定したクローラが、アクセスしてはならないパスを設定します。パスを設定しない(空欄)場合、このディレクティブは無視されます。
「許可」
Allowディレクティブは、User-agentで設定したクローラが、アクセスできるパスを設定します。パスを設定しない(空欄)場合、このディレクティブは無視されます。
[path]には、ルートドメインの相対URLを記述します。
[path]の最初には、ルートを意味する「/」を付けます。
[path]の値では、大文字と小文字が区別されます。
Google、Bingなどの検索エンジンは、「Sitemap」をサポートしています。
[absoluteURL]にはサイトマップ、サイトマップインデックスなどのURLを完全修飾(https://から始まるURL)で設定します。このURLは、robots.txtと同じドメインでなくてもかまいません。複数の「Sitemap: 」を設定することができます。
非グループメンバーのため、特定のユーザーエージェントには関連付けられません。すべてのクローラが使用できます。
「https://www.example.com/robots.txt」の例
# (グループ②)
# サイト全体を「bingbot」からブロック
User-agent: bingbot
Disallow: /
robots.txtは、1つまたは複数のグループで構成されます。
各グループは、User-agent行から始まり、グループの適用対象を設定します。
サイトからすべてのクローラを除外するには
すべてのクローラが完全にアクセスできるようにするには
※または、空のrobots.txtを作成するか、まったく使わない
一部のディレクトリからすべてのクローラを除外するには
※ディレクトリ名の後にはスラッシュを付けます。
※非公開ページへのアクセスをブロックする場合は、robots.txtを使用するのではなく、ログイン認証など、適切な認証方法を使用してください。
※robots.txtでブロックしているページであっても、クロールされないままインデックスに登録されることがあります。
※robots.txtはすべてのユーザーが見ることができるため、非公開ページの場所を知られてしまう可能性があります。
指定のクローラを除外するには
User-agent: *
Allow: /
指定のクローラだけをアクセスできるようにするためには
User-agent: *
Disallow: /
User-agent: *
Disallow: /
User-agent: googlebot
Allow: /
※異なる「User-agent」に同じパスを設定し、「Disallow」「Allow」を設定している場合、クローラは、合致する最も限定的なユーザーエージェントを適用します。上記は、限定的なユーザーエージェント「googlebot」が適用されるので、googlebotだけアクセスできると判定します。
指定のページに対するクロールを禁止するには
※スラッシュの後に対象ページを設定します。
指定の画像に対するGoogle画像検索からのクロールを禁止するには
サイト内すべての画像に対するGoogle画像検索からのクロールを禁止するには
指定のファイル形式のファイルに対するクロールを禁止するには
指定の文字列で終わるURLに対するクロールを禁止するには
※最後の文字の後に「$」を記述します。「.xlsx」で終わるすべてのURLのクロールが禁止されます。
質問)下記の記述は、クローラはどう読み取るでしょうか?
答え)クロールをすべて許可します。
解説)同じURLで、同一のユーザーエージェントで、「Disallow」と「Allow」がある場合は、「Allow」が、「Disallow」をオーバーライド(上書き)して、Disallowに設定したディレクトリまたはページのクロールを許可します。
パスの例 | 説明 |
---|---|
/ | ルート配下にあるすべてのURLが一致。 |
/* | 「/」と同じくルート配下にあるすべてのURLが一致。末尾の「*(ワイルドカード)」は、無視されます。 |
/fruit | 指定の文字列「/fruit」で始まるURLが対象となります。
🙆一致します: 🙅一致しません: |
/fruit* | /fruitと同じです。末尾の「*(ワイルドカード)」は、無視されます。 |
/fruit/ | 末尾が「/」の場合、このディレクトリ内のすべてが対象となります。
🙆一致します: 🙅一致しません: |
/*.php | 指定の文字列「.php」の前に0個以上の任意の文字列があるURLが対象となります。
🙆一致します: 🙅一致しません: |
/*.php$ | 指定の文字列「.php」で終わるURLが対象となります。
🙆一致します: 🙅一致しません: |
/fruit*.php | 指定の文字列「/fruit」で始まり、0個以上の任意の文字列の後に「.php」があるURLが対象となります。
🙆一致します: 🙅一致しません: |
ホスティングサービスを使用している場合は、セキュリティの関係上、robots.txtファイルを直接編集できない場合があります。そのような場合、ホスティングサービス側でrobots.txtの設定をすることができるツールが用意されていることがあります。詳しくは、ホスティングサービスへ問い合わせてください。
設定したページへのクロールを禁止する手段として、robots.txtだけでは難しい場合があります。そういった場合、他の方法を検討することが必要です。
robots.txtの指示に従うかどうかはクローラしだいです。Googlebotなどの信頼できるクローラは、robots.txtの指示に従います。他の検索エンジンのクローラは、robots.txtの指示に従うとは限りません。そのため、サイトを信頼できないクローラからブロックするには、ファイルをパスワードで保護するなど、他の方法を利用することをおすすめします。
Googlebotなどの信頼できるクローラは、robots.txtファイルの指示に従いますが、各検索エンジンのクローラごとにディレクティブ(命令・ルール)の処理が異なる可能性もあります。各クローラに対応するように最適な構文を設定する必要があります。
robots.txtでクローラをブロックしているページが他のサイトからリンクされている場合、そのURLを検出してインデックスに登録してしまう可能性はあります。そのため、robots.txtでブロックしているページが検索結果に表示されることもあります。
特定のページが検索結果に表示されるのを確実に防ぐ方法は、ページをパスワードで保護するか、noindexメタタグまたはレスポンスヘッダーを使用します。もしくは該当ページを完全に削除します。
もし、すでにインデックスされているURLを削除したいときは、まず、noindexメタタグを指定するなどして、インデックスが無くなったことを確認してからrobots.txtで「Disallow」を設定します。robots.txtで「Disallow」が設定してあると、そのページに設定してあるnoindexメタタグも見ることができません。
robots.txtの「Disallow」はあくまでクロールの拒否であってインデックスの削除ではありません。
検索エンジンなどのクローラーを制御したい時に利用します。例えばWebサイトの規模が大きい場合、クローラによってサーバーに負荷がかかり、表示速度などに影響してしまうことがあります。そのようなサイトではrobots.txtで不要なページへのアクセスを制御することで、クローラは効率的にサイト内を巡回することができサーバーへの負荷が軽減します。
検索エンジンにクロールされる必要のないページやクロールされると困るページに設置します。例えば会員ページ、カートの決済ページ、ユーザーにとって価値のないページなどが有効です。
SEO効果に直接関わるというわけではありません。robots.txtでsitemap.xmlを伝えたり、不要なクロールをコントロールすることでサイト内の重要なコンテンツを検索エンジンに認識しやすくすることが可能です。特に大規模サイトは最適な利用方法が望ましいです。
robots.txtでクロール制御をしても、他のページからのリンクでページが到達できる場合、インデックスされる可能性はあります。robots.txtだけでは限界があるので、重複コンテンツの対策には使用しないようにしましょう。
robots.txtは誤った使用をしてしまうとSEOにも影響を及ぼしてしまう可能性があります。サーバーに負荷がかからない場合であればrobots.txtの記述をする必要はないため、robots.txtを設置すべきページかを確認しなければいけません。もしrobots.txtの設置に関して分からないことがあれば、当社の「SEOコンサルティングサービス」にご相談ください。
さて、ここまでロボッツテキスト(robots.txt)の記述方法をご紹介してきましたが、いかがでしたか?
ロボット(検索エンジン)をテキストファイルで制御するのには、複雑でとても手間がかかりますが、サイトを効率よく見てもらい、クロールしてもらいたくないファイルを知らせるには必要な作業です。みなさまもぜひ、この記事を参考に設定してみてください。
パンくずリストは、見ているページのサイト構造を教えてくれるのでユーザーを迷わせない役割も持ちます。またパンくずリストは検索エンジンがサイト構…
SEO対策を行う際に、キーワードの選定は非常に重要な項目です。 Webマーケティングは、顧客となりうるターゲットユーザーを明確に定義するとこ…
SEOを考える上で検索エンジンのことを知ることは非常に重要なポイントです。 なぜなら、SEO(Search Engine Optimizat…
「デザインを変えたい」「更新をもっと楽にしたい」などホームページをリニューアルする理由は様々だと思いますが、折角リニューアルしたからには今ま…
アンカーテキストとは、HTMLファイルに記述するアンカータグ(<a>~</a>)で囲まれたテキストのことで、リンクテ…
世の中のインターネット利用が進み、インフラ環境が整ったりデバイスが進化したりしたことによって、デジタルコンテンツの需要が多くなってきました。…
今話題のAIによるコンテンツ自動生成機能も!SEO対策に本当に必要な機能だけを搭載した使いやすさとコストパフォーマンスに優れたWeb集客支援ツールです。
Webマーケティングに関わる施策全般をワンストップで
ご提供します。
お気軽にご相談ください。
Webマーケティング最新ニュースのレポートや無料セミナーの先行案内が届く、お得なメルマガ配信中!