Robots.txtはSEO施策において重要なツールであり、クローラーやボットに対してサイトのどの部分をクロールさせるか、させないかを指示するルール構築のために使用されます。しかしRobots.txtを編集する際には、その高い影響力ゆえに大きな責任が伴うということを心に留めておいてください。つまり、小さなミスでさえも検索エンジンのインデックスからすべてのサイトを除外されるような事態に繋がってしまう可能性があるということです。
サイトにRobots.txtファイルを正しく設定することの重要性を考慮した上で、検索エンジンやその他のボットに想定したページをクロールさせるにあたり回避するべき典型的な誤りを見つけるべく、DeepCrawlのプロフェッショナルサービスチームにヒアリングした内容を以下にまとめています。
1.ユーザーエージェント指定ブロックで一般ユーザーエージェントディレクティブを繰り返さない
検索エンジンのボットは、robots.txtファイル内で最も類似するユーザーエージェントブロックに反応し、その他のユーザーエージェントブロックを無視します。
次の例の場合、GooglebotはGooglebot専用に指定された1つのルールにのみ反応し、他のルールを無視します。
User-agent: *
Disallow: /something1
Disallow: /something2
Disallow: /something3
User-agent: Googlebot
Disallow: /something-else
この結果を考慮すると、検索エンジンのボットに対してルールを追加する際には、より特定のボットに適用される一般的なユーザーエージェントディレクティブを繰り返すことが大切です。
2.より長い一致ルールが優先されることを忘れている
許可ルールを使用する場合、マッチングルール内の文字数が一番多い場合にのみ適用されます。
例:
Disallow: /somewords
Allow: /someword
上記の例では、example.com/somewordsの場合、拒否ルール内でより多くの文字数がマッチしたためアクセス拒否されます。
ただしこの例では、さらにワイルドカード(*)文字を使用して許可ルールを長くすることで、この仕様をうまく回避することもできます。
Disallow: /somewords
Allow: /someword*
3.ルールの最後にワイルドカードを追加する
デフォルトではルールの最後で部分一致するため、ルールの文字列を最長にしたいという目的で使用していない限り、ワイルドカードである(*)をrobots.txt内のルールの最後に追加する必要はありません。通常、これが問題を引き起こすことはありません。
Disallow: /somewords*
4.サブドメインやプロトコル毎に個別のルールを使用しないこと
robots.txtファイルには、異なるサブドメインとプロトコルに横断的に適用されるルールを含めるべきではありません。ドメイン上の各サブドメインとプロトコルには、それぞれ個別のrobots.txtファイルが必要です。例えば、https://www.example.com, http://www.example.com as well as subdomain.example.comのそれぞれに異なるrobots.txtファイルが必要です。
5.サイトマップの指定に相対URLを使用することs
robots.txtファイル内では、サイトマップを相対パスで指定することはできず、絶対URLで指定する必要があります。以下に例を示します。
- /sitemap.xml
は考慮されませんが、
- https://www.example.com/sitemap.xml
は考慮されます。
誤)Sitemap: /sitemap.xml
正)Sitemap: https://www.example.com/sitemap.xml
6.大文字と小文字の区別を無視すること
robots.txt内のマッチングルールは大文字と小文字を区別するので、異なる場合でも一致するように複数のルールを設定する必要があります。
Disallow: /something
Disallow: /Something
7.存在しないスラッシュを追加すること
URLにスラッシュが存在しない場合、不一致となってしまうため、robots.txt内のルールにスラッシュを追加しないでください。例えば、実際のURLが/pathの場合、disallowに/path/を指定すると www.example.com/pathとは一致せず、不許可になりません。
誤)/path/
正)/path
8.スラッシュでdisallowルールを開始しないこと
robots.txtファイル内でルートパスを指定している場合、意図せず深い階層のパスをdisallowしてしまうリスクを避けるため、ワイルドカードではなくスラッシュでルールの記述を開始するようにしてください。
次のルールは、ルートパス www.example.com/something上のすべてのURLをdisallowします。
Disallow: /something
次のルールは、例えばwww.example.com/stuff/something-else上の ”something” を含むすべてのURLをdisallowします。
Disallow: *something
9.Googlebotユーザーエージェントがより一般的なユーザーエージェントトークンを参照できることを忘れている
Googlebotのユーザーエージェントは指定のブロックに特定のユーザーエージェントトークンが含まれていない場合、より一般的なユーザーエージェントトークンを参照します。
例えば、googlebot-newsの場合、もし指定のブロックにgooglebot-newsが含まれていなかったとしても、googlebotを参照することができます。
10.エンコードしたURLをエンコードしていないルールに一致させること
エンコードしたURLではエンコードしていないルールに一致するはずですが、エンコードしていないURLはエンコードしたルールに一致しません。少なくとも、robots.txtテストツールが指摘するところにしたがって、ルールはエンコードしないようにしてください。
経験のあるSEOの方にとっても、この記事を読んでRobotsの除外基準に関して知らなかったことの発見があることと思います。このトピックについてより深く学びたい場合は、robots.txtに関する初心者向けガイドや、robots.txtにおけるnoindexの動作とインデックス制御に対する代替案についての記事を公開しているので、ご覧になってください。