👋

特定のディレクトリ配下のコンテンツを、検索結果に表示させないようにする

2025/02/10に公開

要件

特定のディレクトリ以下に配置されたHTMLファイルやPDFをGoogle等の検索結果に表示させたくない。

現状は各HTMLファイル毎にメタタグの設定をしているが、今後配置するファイルが設定漏れするリスクがある。また、過去にアップロード済みのファイル(かなりの数)はメタタグが設定されていない。

結論

調べると、だいたい下記の4つのような対策案が見つかるが、
今回の要件的には、3の X-Robots-Tag の設定がベストだと思われる。

1. メタタグをHTMLファイルに設定

やり方

対象ディレクトリ配下のHTMLファイルに下記のメタタグを記述していく。

<meta name="robots" content="noindex">

もっともシンプルな方法。

今回の要件的には、対象ファイルが多いと大変だし、漏れのリスクあり。

PDFには設定できない。

2. robots.txt の設定

下記のrobots.txt をサーバのルートに設置

User-agent: *
Disallow: /target-path/

target-path の箇所を対象のディレクトリに合わせて変更

注意点として、サーバのルートに置かなければいけない。

また、公式によると、検索結果に表示させないために使うものではない。とのこと。

サーバの過負荷を軽減したりする目的のときに使用するらしい。

検索結果に説明は表示されないものの、URLは表示されることがある。

https://developers.google.com/search/docs/crawling-indexing/robots/intro?hl=ja

3. X-Robots-Tag の設定

下記の.htaccess を対象ディレクトリへ置く(または追記)

<FilesMatch ".*">
    Header set X-Robots-Tag "noindex, nofollow"
</FilesMatch>

今回の要件だとこれを採用。

対象のディレクトリ配下のすべてのファイルに対して、noindex(ついでにnofollowも)追加している。

4. アクセス制限をかける

下記の.htaccess を対象ディレクトリへ置く(または追記)

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /target-path/.htpasswd
Require valid-user

target-path の箇所を対象のディレクトリに合わせて変更
htpasswd コマンドで認証ユーザーを追加

そもそもアクセスするときに認証が必要なので今回の要件的には不採用

まとめ

単一ファイルならメタタグで。
たくさんファイルがある場合、またPDFも含みたい場合は X-Robots-Tag で設定するとよさそう。

以上です。
なにか間違いがありましたら、教えていただけると幸いです。

Discussion