この記事はAhrefs公式ブログの日本語訳です。
原文:Robots.txt and SEO: Everything You Need to Know
(著者:Joshua Hardwick、Reviewed by Michal Pecánek/ 原文の最終更新日:January 29, 2021)
※フルスピード註:この記事は2021年1月29日時点の記載をもとに翻訳しています。Ahrefs公式ブログの記事は今後追記・再公開されることがありますことをご了承ください。
Robots.txt は Web サイト上で最も単純なファイルの 1 つですが、最も混乱しやすいファイルの 1 つでもあります。たった 1 文字が場違いに存在するだけで SEO に大混乱が生じ、検索エンジンがサイト上の重要なコンテンツにアクセスできなくなる可能性があります。
これが、経験豊富な SEO 専門家の間でもrobots.txt の設定ミスが非常によく起こる理由の1つです。
このガイドでは、目次に沿って以下のを学べます。
テクニカル SEO は初めてですか? 私たちのガイドをチェックしてください。
robots.txt ファイルとは?
robots.txt ファイルは、サイト上のどこにアクセスできるか、どこにアクセスできないかを検索エンジンに伝えるものです。
主に、Google などの検索エンジンからロックしたいコンテンツをすべてリストアップします。一部の検索エンジン(Google ではない)に、許可されたコンテンツをクロールする方法を指示することもできます 。
重要な注意点
ほとんどの検索エンジンは従順です。彼らはエントリーを破る習慣がありません。とは言え、いくつかの比喩的な鍵を破ることを恥ずかしがらない検索エンジンもいます。
Google はそれらの検索エンジンの 1 つではありません。これらは robots.txt ファイルの指示に従います。
一部の検索エンジンはそれらの指示を完全に無視するものもいることに注意してください。
robots.txt ファイルはどのようなものですか?
robots.txt ファイルの基本的な形式は次のとおりです。
Sitemap: [URL location of sitemap] User-agent: [bot identifier] [directive 1] [directive 2] [directive ...] User-agent: [another bot identifier] [directive 1] [directive 2] [directive ...]
これらのファイルをこれまで見たことがない場合は、難しく感じるかもしれません。ただし、構文は非常に単純です。つまり、ユーザーエージェントの後にディレクティブを記述して、botにルールを割り当てます。
これら 2 つのコンポーネントをさらに詳しく見てみましょう。
User-agent(ユーザーエージェント)
各検索エンジンは、異なるユーザーエージェントでそれ自体を識別します。robots.txt ファイルでこれらのそれぞれにカスタムで命令を設定できます。何百ものユーザーエージェントがありますが、SEO に役立つものをいくつか紹介しましょう。
- Google:Googlebot
- Google 画像: Googlebot-Image
- Bing:Bingbot
- ヤフー:Slurp
- 百度:Baiduspider
- DuckDuckGo: DuckDuckBot
注:robots.txt ではすべてのユーザーエージェントの大文字と小文字が区別されます。
star (*)ワイルドカードを使用して、すべてのユーザーエージェントにディレクティブ(指示)を割り当てることもできます。
たとえば、Googlebot を除くすべてのボットがサイトをクロールできないようにしたいとします。その方法は次のとおりです。
User-agent: * Disallow: / User-agent: Googlebot Allow: /
robots.txt ファイルには、好きなだけユーザーエージェントのディレクティブを含めることができることに注意してください。とはいえ、新しいユーザーエージェントを宣言するたびに、それは白紙の状態で機能します。
つまり、複数のユーザーエージェントにディレクティブを追加した場合、最初のユーザー エージェントに対して宣言されたディレクティブは、2 番目、3 番目、4 番目などには適用されません。
このルールの例外は、同じユーザーエージェントを複数回宣言する場合です。その場合、関連するすべてのディレクティブが結合されて実行されます。
重要な注意点
クローラーは、ユーザーエージェントで宣言された、最も正確に適用されるルールのみに従います。そのため、上記の robots.txt ファイルは、Googlebot(および他の Google ボット)を除くすべてのボットがサイトをクロールするのをブロックします。Googlebot は、あまり具体的ではないユーザーエージェント宣言を無視します。
ディレクティブ(Directives、指示)
ディレクティブは、宣言されたユーザーエージェントに従わせたいルールのことです。
サポートされているディレクティブ
Google が現在サポートしているディレクティブとその用途を以下に示します。
Disallow(許可しない)
このディレクティブを使用して、特定のパスに属するファイルやページにアクセスしないよう検索エンジンに指示します。たとえば、すべての検索エンジンがブログとそのすべての投稿にアクセスできないようにしたい場合、robots.txt ファイルは次のようになります。
User-agent: * Disallow: /blog
注:disallow ディレクティブの後にパスを定義しないと、検索エンジンはそれを無視します。
Allow(許可する)
このディレクティブを使用すると、検索エンジンがサブディレクトリまたはページをクロールできるようになります(通常は許可されていないディレクトリ内であっても)。たとえば、検索エンジンが 1 ページを除いて、ブログのすべての投稿にはアクセスできないようにしたい場合、robots.txt ファイルは次のようになります。
User-agent: * Disallow: /blog Allow: /blog/allowed-post
この例では、検索エンジンは /blog/allowed-post
にアクセスできます。ただし、以下のものにはアクセスできません。
/blog/another-post
/blog/yet-another-post
/blog/download-me.pdf
Google と Bing は両方ともこのディレクティブをサポートしています。
注:Disallow ディレクティブと同様、Allow ディレクティブの後にパスを定義しないと、検索エンジンはそれを無視します。
矛盾するルールに関するメモ
注意して記述しないと、Disallow ディレクティブとAllow ディレクティブは簡単に互いに競合する可能性があります。以下の例では、 /blog/
へのアクセスを禁止し、 /blog
へのアクセスを許可しています。
User-agent: * Disallow: /blog/ Allow: /blog
この場合、URL /blog/post-title/
は禁止されているように見えますが、許可されているようにも見えます。では、どちらが優先されるのでしょうか?
Google と Bing の場合、ルールとしては最も多くの文字を含むディレクティブが優先されます。これが Disallow ディレクティブです。
Disallow: /blog/
(6文字)Allow: /blog
(5文字)
Allow ディレクティブとDisallow ディレクティブの長さが等しい場合は、最も制限の少ないディレクティブが優先されます。この場合、それはAllow ディレクティブになります。
注:ここでは、/blog
(末尾のスラッシュなしでも) アクセス可能でクロール可能です。
重要なのは、これは Google と Bing にのみ当てはまることです。他の検索エンジンは、最初に一致したディレクティブに従います。この場合はDisallowとなります。
Sitemap(サイトマップ)
このディレクティブを使用して、サイトマップの場所を検索エンジンに指定します。サイトマップに慣れていない場合は、サイトマップには通常、検索エンジンがクロールしてインデックスを作成するページが含まれています。
以下は、サイトマップディレクティブを使用した robots.txt ファイルの例です。
Sitemap: https://www.domain.com/sitemap.xml User-agent: * Disallow: /blog/ Allow: /blog/post-title/
robots.txt ファイルにサイトマップを含めることはどの程度重要なのか? すでに Search Console を通じて送信している場合、Google にとっては多少冗長になります。ただし、Bing など他の検索エンジンにサイトマップの場所を通知するため、それでも良い習慣となります。
ユーザーエージェントごとにサイトマップのディレクティブを複数回繰り返す必要はないことに注意してください。どちらか一方だけに当てはまるわけではありません。したがって、robots.txt ファイルの先頭または末尾にサイトマップのディレクティブを含めることをお勧めします。例えば:
Sitemap: https://www.domain.com/sitemap.xml User-agent: Googlebot Disallow: /blog/ Allow: /blog/post-title/ User-agent: Bingbot Disallow: /services/
Google は、Ask、Bing、Yahoo と同様にサイトマップディレクティブをサポートしています。
注:robots.txt ファイルには、好きなだけサイトマップを含めることができます。
サポートされていないディレクティブ
ここでは、Google によってサポートされなくなったディレクティブを示します。その中には、技術的にサポートされていなかったディレクティブもあります。
Crawl-delay(クロール遅延)
以前は、このディレクティブを使用してクロール遅延を秒単位で指定できました。たとえば、Googlebot が各クロール アクションの後に 5 秒待機するようにしたい場合は、次のようにクロール遅延を 5 に設定します。
User-agent: Googlebot Crawl-delay: 5
Google はこのディレクティブをサポートしなくなりましたが、Bing とYandex は サポートしています。
ただし、特に大規模なサイトを所有している場合は、このディレクティブを設定するときは注意してください。クロール遅延を 5 秒に設定すると、ボットが 1 日に最大 17,280 個の URL をクロールするように制限されます。何百万ものページがある場合、これはあまり役に立ちませんが、小規模な Web サイトの場合は帯域幅を節約できます。
Noindex
このディレクティブは Google によって正式にサポートされたことはありません。ただし、最近まで、Google には「サポートされていない未公開のルール(noindex など)を処理するコード」が存在していたと考えられていました。したがって、Google がブログ上のすべての投稿をインデックスに登録しないようにしたい場合は、次のディレクティブを使用できます。
User-agent: Googlebot Noindex: /blog/
ただし、2019 年 9 月 1 日、Google はこのディレクティブがサポートされていないことを明らかにしました。検索エンジンからページまたはファイルを除外する場合は、代わりに meta robots タグまたは x-robots HTTP ヘッダーを使用します。
Nofollow
これは、Google が正式にサポートしたことのないもう 1 つのディレクティブであり、特定のパスにあるページやファイルのリンクをたどらないように検索エンジンに指示するために使用されていました。たとえば、Google がブログ上のすべてのリンクをフォローしないようにしたい場合は、次のディレクティブを使用できます。
User-agent: Googlebot Nofollow: /blog/
Google は、このディレクティブが 2019 年 9 月 1 日に正式にサポートされなくなったことを発表しました。現在、ページ上のすべてのリンクを nofollow にしたい場合は、robots メタ タグまたは x-robots ヘッダーを使用する必要があります。ページ上の特定のリンクをたどらないように Google に指示したい場合は、rel=“nofollow” リンク属性を使用してください。
robots.txt ファイルは必要か?
robots.txt ファイルがあることは、多くの Web サイト、特に小規模な Web サイトにとっては重要ではありません。
とはいえ、持たない理由はありません。これにより、Web サイト上で検索エンジンがアクセスできる場所とアクセスできない場所をより詳細に制御できるようになり、以下のようなケースに役立ちます。
- 重複コンテンツのクロールを防止します。
- Web サイトのセクションを非公開に保ちます(ステージング サイトなど)。
- 内部検索結果ページのクロールを防止します。
- サーバーの過負荷を防止します。
- Google が「クロールバジェット」を無駄にしないようにします。
- 画像、動画、リソースファイルが Google の検索結果に表示されないようにします。
Google は通常、robots.txt でブロックされている Web ページをインデックスに登録しませんが、robots.txt ファイルを使用して検索結果から確実に除外する方法はないことに注意してください。
Google が言うように、コンテンツがウェブ上の他の場所からリンクされている場合でも、Google の検索結果に表示される可能性があります。
robots.txt ファイルを見つける方法
ウェブサイト上に robots.txt ファイルがすでにある場合は、 domain.com/robots.txtからアクセスできます。ブラウザで URL に移動してください。以下のようなものが表示された場合は、robots.txt ファイルがあることになります。
robots.txt ファイルの作成方法
robots.txt ファイルをまだ持っていない場合でも、簡単に作成できます。空の .txt ドキュメントを開いて、ディレクティブの入力を開始するだけです。たとえば、すべての検索エンジンがディレクトリをクロールできないようにしたい場合は/admin/
を指定し、次のようになります。
User-agent: * Disallow: /admin/
満足のいく内容が得られるまで、ディレクティブを作成し続けましょう。ファイルを「robots.txt」として保存します。
あるいは、次のような robots.txt ジェネレーターを使用することもできます。
このようなツールを使用する利点は、構文エラーを最小限に抑えられることです。1 つの間違いがサイトの SEO に大惨事をもたらす可能性があるため、これは良いことです。したがって、用心しすぎて失敗することは有益です。
欠点は、カスタマイズ性の点で多少制限があることです。
robots.txt ファイルを置く場所
robots.txt ファイルを、それが適用されるサブドメインのルートディレクトリに配置します。たとえば、domain.comでのクロール動作を制御するには、 domain.com/ robots.txt で robots.txt ファイルにアクセスできる必要があります。
blog.domain.comなどのサブドメインでのクロールを制御する場合は、 blog.domain.com/robots.txtで robots.txt ファイルにアクセスできる必要があります。
robots.txt ファイルのベストプラクティス
よくある間違いを避けるために、これらの点に留意してください。
ディレクティブごとに新しい行を使用する
各ディレクティブは新しい行に配置する必要があります。そうしないと、検索エンジンが混乱してしまいます。
悪い例:
User-agent: * Disallow: /directory/ Disallow: /another-directory/
良い例:
User-agent: * Disallow: /directory/ Disallow: /another-directory/
ワイルドカードを使用して指示を簡素化する
ワイルドカード (*) を使用すると、ディレクティブをすべてのユーザー エージェントに適用できるだけでなく、ディレクティブを宣言するときに URL パターンと一致させることもできます。たとえば、検索エンジンがサイト上のパラメータ化された製品カテゴリの URLにアクセスできないようにしたい場合は、次のようにリストを作成できます。
User-agent: * Disallow: /products/t-shirts? Disallow: /products/hoodies? Disallow: /products/jackets? …
しかし、それはあまり効率的ではありません。次のようにワイルドカードを使用して物事を簡略化することをお勧めします。
User-agent: * Disallow: /products/*?
この例では、検索エンジンが /product/ サブフォルダーの下にある疑問符を含むすべての URL をクロールするのをブロックします。言い換えれば、パラメータ化された製品カテゴリの URLをブロックしています。
URLの末尾を指定するには「$」を使用する
URL の終わりを示すには、「$」記号を含めます。たとえば、検索エンジンがサイト上のすべての .pdf ファイルにアクセスしないようにしたい場合、robots.txt ファイルは次のようになります。
User-agent: * Disallow: /*.pdf$
この例では、検索エンジンは .pdf で終わる URL にはアクセスできません。つまり、/file.pdf にはアクセスできませんが、/file.pdf?id=68937586 は「.pdf」で終わらないためアクセスできます。
各ユーザーエージェントは 1 回だけ使用する
同じユーザーエージェントを複数回指定しても、Google は気にしません。さまざまな宣言のすべてのルールを 1 つに結合し、それらすべてに従うだけです。たとえば、robots.txt ファイルに次のユーザー エージェントとディレクティブがあったとします。
User-agent: Googlebot Disallow: /a/ User-agent: Googlebot Disallow: /b/
… Googlebot はこれらのサブフォルダーのいずれもクロールしません 。
そうは言っても、混乱を避けるため、各ユーザーエージェントを 1 回だけ宣言することは理にかなっています。言い換えれば、物事をきちんとシンプルに保つことで、重大な間違いを犯す可能性が低くなります。
特異性を使用して意図しないエラーを回避する
ディレクティブを設定するときに具体的な指示を提供しないと、見落としやすい間違いが発生し、SEO に壊滅的な影響を与える可能性があります。たとえば、多言語サイトがあり、/de/ サブディレクトリで利用できるドイツ語版を開発していると仮定します。
まだ準備が整っていないため、検索エンジンがアクセスできないようにしたいと考えています。
以下の robots.txt ファイルは、検索エンジンがそのサブフォルダーとその中のすべてにアクセスできないようにします。
User-agent: * Disallow: /de
ただし、検索エンジンが /de
。で始まるページやファイルをクロールすることもできなくなります
例えば:
/designer-dresses/
/delivery-information.html
/depeche-mode/t-shirts/
/definitely-not-for-public-viewing.pdf
この場合、解決策は簡単です。末尾にスラッシュを追加しましょう。
User-agent: * Disallow: /de/
コメントを使用して robots.txt ファイルを人間向けに説明すうr
コメントは、robots.txt ファイルを開発者、さらには将来の自分自身に説明するのに役立ちます。コメントを含めるには、行をハッシュ (#) で始めてください。
# This instructs Bing not to crawl our site. User-agent: Bingbot Disallow: /
クローラーは、ハッシュで始まる行上のすべてを無視します。
サブドメインごとに個別の robots.txt ファイルを使用する
Robots.txt は、それがホストされているサブドメインでのクロール動作のみを制御します。別のサブドメインでのクロールを制御したい場合は、別の robots.txt ファイルが必要になります。
たとえば、メイン サイトがdomain.comにあり 、ブログがblog.domain.comにある場合は、2 つの robots.txt ファイルが必要になります。1 つはメイン ドメインのルート ディレクトリに配置し、もう 1 つはブログのルート ディレクトリに配置する必要があります。
robots.txt ファイルの例
以下に、robots.txt ファイルの例をいくつか示します。これらは主にインスピレーションのためのものですが、要件に一致するものがあった場合は、それをコピーしてテキスト文書に貼り付け、「robots.txt」として保存し、適切なディレクトリにアップロードしてください。
すべてのボットをオールアクセス可能にする
User-agent: * Disallow:
注:ディレクティブの後に URL を宣言しないと、そのディレクティブが冗長になります。言い換えれば、検索エンジンはそれを無視します。そのため、この禁止ディレクティブはサイトに影響を与えません。検索エンジンは引き続きすべてのページとファイルをクロールできます。
すべてのボットをアクセス不可にする
User-agent: * Disallow: /
すべてのボットに対して 1 つのサブディレクトリをブロックする
User-agent: * Disallow: /folder/
すべてのボットに対して 1 つのサブディレクトリをブロックする (許可される範囲内に 1 つのファイルが含まれる)
User-agent: * Disallow: /folder/ Allow: /folder/page.html
すべてのボットに対して 1 つのファイルをブロックする
User-agent: * Disallow: /this-is-a-file.pdf
すべてのボットに対して 1 つのファイルタイプ (PDF) をブロックする
User-agent: * Disallow: /*.pdf$
Googlebot に対してのみパラメータ化された URL をすべてブロックする
User-agent: Googlebot Disallow: /*?
robots.txt ファイルのエラーを監査する方法
Robots.txt の間違いは非常に簡単にネットをすり抜けてしまう可能性があるため、問題に常に注意を払うことは有益です。
そのためには、Search Consoleの「カバレッジ」レポートで robots.txt に関連する問題がないか定期的に確認してください。以下に、表示される可能性のあるエラーの一部とその意味、および修正方法を示します。
特定のページに関連するエラーをチェックする必要がありますか?
Search Console の Google の URL 検査ツールに URL を貼り付けます。robots.txt によってブロックされている場合は、次のような内容が表示されるはずです。
送信された URL が robots.txt によってブロックされた
これは、送信したサイトマップ内の URL の少なくとも 1 つが robots.txt によってブロックされていることを意味します。
サイトマップを正しく作成し、正規化されたページ、インデックスなしの ページ、およびリダイレクトされたページを除外した場合、送信 されたページは robots.txt によってブロックされません。該当する場合は、影響を受けるページを調査し、それに応じて robots.txt ファイルを調整して、そのページのブロックを削除します。
Google の robots.txt テスターを使用して 、どのディレクティブがコンテンツをブロックしているかを確認できます。これを行うときは注意してください。他のページやファイルに影響を与える間違いを犯しやすいです。
robots.txt によってブロックされた
これは、現在 Google でインデックスに登録されていない、robots.txt によってブロックされているコンテンツがあることを意味します。
このコンテンツが重要であり、インデックスを作成する必要がある場合は、robots.txt 内のクロール ブロックを削除します。(コンテンツにインデックスが付けられていないことを確認することも重要です)。
Google のインデックスから除外する目的で robots.txt 内のコンテンツをブロックした場合は、クロール ブロックを削除し、代わりに robots メタ タグまたは x-robots-header を使用します。これが、Google のインデックスからコンテンツを確実に除外する唯一の方法です。
注:検索結果からページを除外する場合は、クロールブロックを削除することが重要です。これを行わないと、Google は noindex タグや HTTP ヘッダーを認識できないため、インデックスに登録されたままになります。
robots.txt でブロックされているものの、インデックスに登録されている
これは、robots.txt によってブロックされたコンテンツの一部が依然として Google でインデックスに登録されていることを意味します。
繰り返しになりますが、このコンテンツを Google の検索結果から除外しようとしている場合、robots.txt は正しい解決策ではありません。クロール ブロックを削除し、代わりにメタ ロボット タグまたは x-robots-tag HTTP ヘッダーを使用して インデックス作成を防止します。
このコンテンツを誤ってブロックし、Google のインデックスに保存したい場合は、robots.txt のクロール ブロックを削除してください。これにより、Google 検索でのコンテンツの可視性が向上する可能性があります。
おすすめ記事: GSC で「インデックスは作成されていますが、robots.txt によってブロックされています」を修正する方法
よくある質問
ここでは、ガイドの他の部分には当てはまらなかった、よくある質問をいくつか紹介します。不足しているものがあればコメントでお知らせください。それに応じてセクションを更新します。
robots.txt ファイルの最大サイズはどれくらいですか?
(およそ) 500 キロバイトです。
robots.txt は WordPress のどこにありますか?
同じ場所にあります:domain.com/robots.txt。
WordPress で robots.txt を編集するにはどうすればよいですか?
手動で行うか、WordPress バックエンドから robots.txt を編集できる Yoast などの多くの WordPress SEO プラグイン の 1 つを使用します。
robots.txt のインデックスなしコンテンツへのアクセスを禁止するとどうなりますか?
Google はページをクロールできないため、noindex ディレクティブを認識することはありません。
まとめ
Robots.txt はシンプルですが強力なファイルです。賢く使用すれば、SEO にプラスの影響を与えることができます。無計画に使用すると、一生後悔することになるでしょう。
さらに質問がありますか? コメントを残すか、Twitter で私に ping を送ってください。
著者プロフィール
Joshua Hardwick
Ahrefsのコンテンツ責任者(わかりやすく言うと、私たちが公開するすべてのブログ記事が素晴らしいことを保証する責任者です)。
コメント