はじめに
PDFをGoogle検索結果に表示させたくない場面がありました🙈
調べてみると、Webページを検索結果から除外するnoindexという設定があることを知りました。
noindexとnofollowの基本と、PDFなどHTML以外のリソースへの適用方法について調べたことをまとめます。
💡 この記事でわかること
-
noindex/nofollowとは何か - HTML以外のリソースでのインデックス制御方法
💬 用語
- インデックス登録:Googleは、見つけたページ上のテキストや画像を解析し、その情報をGoogleインデックス(大規模なデータベース)に保存します
-
robots.txt:検索エンジンのクローラーに対して、サイトのどのURLにアクセスできるか、できないか伝えるものです - クロール:自動プログラムウェブ上で見つけたページからテキストや画像をダウンロードすること
noindexとは
noindexは、ページを検索結果に表示しないようにするための設定です。
Googlebotがページをクロール(アクセスして内容を読み取ること)して noindex を検出すると、他のサイトからリンクされているかどうかに関係なく、そのページをGoogle検索結果から完全に削除します。
HTMLページでのnoindex設定
HTMLページの場合は、<head> セクション内にmetaタグを配置します。
<meta name="robots" content="noindex">
⚠️ 注意点
noindexを有効にするには、robots.txtでページへのアクセスをブロックしてはいけません。
ブロックされていると、クローラーがnoindexを認識できず、他のページからリンクされていれば検索結果に表示され続ける可能性があります。
nofollowとは
nofollowは、ページのリンクを辿らないようにするための設定です。
サイト内にあるリンクとそのサイトを関連付けたくない場合、自サイトからリンク先のページへクロールさせないようにします。
HTMLでのnofollow設定
個別のリンクに設定する場合
<a rel="nofollow" href="https://example.com/page">リンク</a>
ページ全体のリンクに設定する場合
<meta name="robots" content="nofollow">
✍️ 補足
nofollowを設定しても、リンク先が完全にクロールされなくなるわけではありません。
他のサイトからのリンクなど、別の方法でクロールされる可能性があります。
関連するrel属性
2019年、nofollow に加えてより具体的な用途を示す属性が追加されました。
| 属性 | 用途 |
|---|---|
rel="sponsored" |
広告や有料リンクを示す |
rel="ugc" |
ユーザー生成コンテンツを示す |
rel="nofollow" |
サイトと関連付けたくないリンク |
noindex と nofollow の違い
| noindex | nofollow | |
|---|---|---|
| 対象 | ページ自体 | ページ内のリンク |
| 効果 | 検索結果に表示させない | リンクを辿らせない |
| 影響範囲 | 自サイトのページ | リンク先のページ |
- noindex: このページを検索結果に表示しない
- nofollow: このページのリンクを辿らない
X-Robots-Tagとは
X-Robots-Tag は、HTTPレスポンスヘッダーで robots metaタグと同様の設定を指定することができる仕組みです。
PDF、動画、画像など、HTMLのmetaタグが使用できないリソースに対してインデックス制御をする場合に使用できます。
HTTP/1.1 200 OK
X-Robots-Tag: noindex, nofollow
✍️ 補足
X-Robots-Tag は正式な標準仕様には含まれていませんが、Googleなどの検索エンジンで使用されているデファクトスタンダードです。
実装例
DjangoでPDFを返す場合の実装例です。
from django import http
with open(pdf_path, 'rb') as pdf:
response = http.HttpResponse(pdf.read(), content_type='application/pdf')
response['Content-Disposition'] = 'inline; filename=some_file.pdf'
response['X-Robots-Tag'] = 'noindex, nofollow'
return response
✍️ 補足
noindex, nofollowの代わりにnoneと書くこともできます。どちらも同じ意味です。
動作確認
ブラウザの動作確認ツール(DevTools)のNetworkタブでレスポンスヘッダーにX-Robots-Tag: noindex, nofollow が設定されていることを確認できます。
まとめ
-
noindexは検索結果への表示をさせないようにする -
nofollowはリンク先のサイトと関連付けないようにする - PDFなどHTML以外のリソースを検索結果から除外するには
X-Robots-TagHTTPヘッダーを使用する
参考