Skip to content

metaタグによる検索エンジンのインデックス制御とrobots.txtについて

metaタグによる検索エンジンのインデックス制御(いわゆる検索避け)と、それに伴うrobots.txtの書き方について解説しています。
(以下、「検索避け」と表現しているものは「metaタグによる検索エンジンのインデックス制御」のことです)

検索エンジンへのインデックス登録は、Googleなど各検索エンジンごとにクローラー(bot)が自動的にサイトを訪問して行っています。ただしなんでもかんでも登録するということではなく、検索エンジンごとに定められた(検索エンジンである程度共通化されている)基準に沿ってサイトをクロールし、登録しています。この基準をもとに検索クローラーに対しはたらきかけることで、ページをインデックスに登録しないようにします。

サイト(ページ)を検索エンジンに表示しないようにする

検索エンジンにサイトをインデックスしない(表示しない)ようにするには、対象のページの<head></head>内に以下コードを記述します。

html
<meta name="robots" content="noindex,nofollow,noarchive">

それぞれの値は以下です。

  • noindex:指定のあるページを検索結果に表示しないようにする
  • nofollow:指定のあるページからのリンクを辿らないようにする
  • noarchive:指定のあるページのキャッシュを表示しないようにする

補足

noarchiveについて、Google検索ではキャッシュ機能廃止によりこの値のサポートは終了となりましたが、Bingなど他の検索エンジンでは引き続きサポートされているようです。

画像やPDFなどのメディアを検索エンジンに表示しないようにする

画像やPDF、MP4などのメディアファイルは、先述のmetaタグを挿入することができないため、そのままでは制御ができません。
htmlファイルにnofollowが記述されていればリンクを辿られることはないので、基本的には検索結果に表示されることもないのですが、万全ということではなく、また外部サイトからファイルを直にリンクで参照された場合などは検索クローラーが外部サイトのクロール時に拾ってしまう可能性があります。

メディアファフィルについては、.htaccessファイルで制御が可能です。

補足

サーバーの.htaccessファイルを編集する際は、.htaccessファイルがすでに存在している場合は必ずバックアップを取ってください。

また、レンタルサーバー(とくに無料のもの)によっては、.htaccessファイルが許可されていない場合があります。事前にレンタルサーバーのFAQなどで.htaccessファイルの使用可否をご確認ください。

以下、.htaccessファイルへの記述例です。

apache
<Files ~ "\.(xml|mp4|pdf|jpe?g|gif|png|webp)$">
  Header set X-Robots-Tag "noindex, nofollow, noarchive"
</Files>

上記の例では、ファイルの拡張子が下記のものに対してクローラーの制御をしています。

  • xml
  • mp4
  • pdf
  • 画像(jpg, jpeg, gif, png, webp)

|で区切って拡張子を指定します。cssjsファイルの指定も可能です。

特定のファイルのみ、特定の拡張子のみの場合は、以下のように指定します。

apache
# 特定のファイルのみ
<Files "sample.pdf">
  Header set X-Robots-Tag "noindex, nofollow, noarchive"
</Files>

# 拡張子がpdfのファイルのみ
<Files ~ "\.pdf$">
  Header set X-Robots-Tag "noindex, nofollow, noarchive"
</Files>

robotx.txtで検索クローラーを制御する

robotx.txtではさらに各種クローラーに対して細かく制御指示を書くことが可能です。具体的には、クローラー全般(あるいはクローラーごとに)アクセス可能(またはアクセス不可)なURLを指定します。

robots.txtはサイトのトップページ(index.html)と同じ階層に作成・アップロードします。ファイル名はrobotsで決まっています。

補足

サイトの検索避けを目的としてrobots.txtでクローラーを拒否してしまうと、クローラーがmetaタグを読み取ることができず、内容不明のまま検索エンジンに掲載されてしまう可能性があります。
これはクローラーがクロール時にrobots.txtmetaタグの順で読み取るため、robots.txtで一律に拒否してしまうと、サイトが存在するという情報のみで検索エンジンにインデックスしてしまうためです。

サイトの検索避けを目的とする場合は、metaタグや.htaccessファイルでクローラーを制御するようにしたほうがよいです。

基本的には、アクセス不可なURLを指定することが多いです。metaタグや.htaccessファイルでインデックスの登録を拒否したうえで、さらにプログラムや画像が入ったディレクトリなど、そもそもクロールしてほしくないファイルやディレクトリを指定します。

以下の例では、すべてのクローラーに対し、/libフォルダ(配下も含む)と/api/sample.jsonにアクセスしないように指示しています。

txt
User-agent: *
Disallow: /lib/
Disallow: /api/sample.json

検索エンジンにインデックスさせる場合でも、画像やプログラムが入ったフォルダなどはアクセスしないようにするといった制御が可能です。

また、以下の例ではGoogleの画像botに対して、サイト内すべてのURLへのアクセスを拒否しています。

txt
User-agent: Googlebot-Image
Disallow: /

AIや機械学習クローラーに対する制御

本記事の内容から少し逸れますが、AIや機械学習のクローラーに対してもrobots.txtで制御します。
さまざまな種類のクローラーが存在していて、解説記事もさまざまあり迷うところですが、有名どころのサイトのrobots.txtを参考にすると手っ取り早いです。

以下はAIや機械学習botのアクセス拒否設定例です。もちろんこれ以外にも種類はありますが、筆者が把握できているものを挙げています。

txt
User-agent: Applebot
Disallow: /

User-agent: Applebot-Extended
Disallow: /

User-agent: GPTBot
Disallow: /

User-agent: ChatGPT-User
Disallow: /

User-agent: Google-Extended
Disallow: /

User-Agent: ImagesiftBot
Disallow: /

User-Agent: ClaudeBot
Disallow: /

User-agent: CCBot
Disallow: /

補足

以下GitHubのリポジトリでは、AI関連クローラーのリストが公開されています。主要なAI関連クローラーがリスト化されており、随時更新されているので、このリストを元にrobots.txtに記述するとよいかと思います。リスト内のrobots.txtをご参考ください。

定期的に確認する

検索エンジンの仕様は定期的に変更になるため、これをすれば万全で安心ということではなく、定期的なチェックが必要です。

チェックの方法としてはひとつ、サイトにアクセス解析を導入して、サイトの参照元(どこからサイトにきたのか)を確認します。
一例ですが、意図しない検索からの流入があれば、いったんmetaタグや.htaccessの設定を見直し、それでも改善されない場合は明らかにスパムと思われるアクセスであれば、.htaccessを使って該当のIPアドレスをブロックするというような方法を取ります。


本記事は以上です。
.htaccessの書き方については、また別で記事を書く予定です)

補足

metaタグによるインデックスの制御やrobots.txtの書き方については、Google検索セントラルのドキュメントにまとまっているので、ご参考ください。

以下はMicrosoft Bing検索のドキュメント(英語)です。