X-Robots-Tag を設定して、検索結果から除外したいファイルを守る方法

この記事では、HTML ではないファイルを検索結果から除外するための「X-Robots-Tag」の設定方法を解説していきます。サーバー側での設定なので、一度設定すれば大量のファイルにまとめて適用できる便利な方法です。 Web サイト管理者や SEO 担当者、機密性の高いコンテンツを扱っている方に特に役立つ内容になっていますので、ぜひ最後までお読みください。

X-Robots-Tag とは

X-Robots-Tag は、HTTP レスポンスヘッダーを通じて検索エンジンのクローラーに指示を出すための仕組みです。HTML ファイル内の <meta name="robots" content="noindex"> タグと同様の効果を持ちますが、HTML だけでなく画像や PDF、動画などの非 HTML コンテンツにも適用できる点が大きな特徴です。

なぜ X-Robots-Tag: noindex が必要なのか

特定の URL やディレクトリを検索結果から除外したい状況は多くあります。

機密情報や内部資料の保護として、社内マニュアルやガイドラインや個人情報を含むドキュメント、開発中や準備中のコンテンツなどが該当します。

SEO 最適化の観点では、重複コンテンツの回避や低品質ページの除外、印刷用ページなど代替バージョンの管理が必要なケースもあるでしょう。

WordPress などの CMS でメディアを管理する場合は、/wp-content/uploads/ ディレクトリ内のファイルが直接検索結果に表示されるのを防ぐことが重要です。

これらのコンテンツが検索エンジンにインデックスされると、意図せず公開状態になり、企業情報の漏洩や SEO への悪影響などの問題を引き起こす可能性があります。

meta robots タグと X-Robots-Tag の違い

同じ目的を持つ両者ですが、重要な違いがあります。

meta robots タグは  HTML の <head> セクションに実装し、HTML 文書のみに適用できます。各ページごとに設定が必要で、正規表現には対応していません。

一方、X-Robots-Tag は HTTP レスポンスヘッダーに実装します。あらゆるファイル形式(PDF、画像など)に適用可能で、サーバー設定で一括適用ができます。さらに正規表現に対応しているため、柔軟な条件設定ができることが大きな利点です。

Nginx での実装方法

基本的な設定

Nginx では、add_header ディレクティブを使用して特定のパスに X-Robots-Tag を追加できます。

# 特定のディレクトリに対する設定
location ^~ /wp-content/uploads/ {
    add_header X-Robots-Tag "noindex" always;
}

実装手順

Nginx のファイルを編集しましょう。通常は /etc/nginx/conf.d/ 内にファイルがあります。

sudo vim /etc/nginx/conf.d/your-site.conf

適切な location ブロックに設定を追加しましょう。

# WordPressのアップロードディレクトリ向け設定
location ^~ /wp-content/uploads/ {
    add_header X-Robots-Tag "noindex" always;
}

設定の構文をチェックします。

sudo nginx -t

問題がなければ Nginx を再読み込みしましょう。

sudo systemctl reload nginx

これで設定の変更が反映されました。

ファイル拡張子ベースの設定

特定のファイル拡張子に対して設定することもできます。この場合はディレクティブでファイル拡張子などを指定しましょう。

# PDFとドキュメントファイルに対する設定
location ~* \.(pdf|doc|docx)$ {
    add_header X-Robots-Tag "noindex, nofollow" always;
}

CloudFront での実装方法

AWSの CloudFront を使用している場合、いくつかの実装方法がありますので、それぞれ紹介します。

1. CloudFront Functions

まずは CloudFront Functions を利用する方法です。レスポンスヘッダーを追加する小さな関数を設定しましょう。

まずは CloudFront コンソールから「Functions」を選択します。

[関数を作成]ボタンをクリックしましょう。

add-response-header のようなわかりやすい関数名を設定し、関数を作成します。

コードエディタが開きますので、以下のようなヘッダーを追加するコードを追加しましょう。

function handler(event) {
    var response = {
        statusCode: 200,
        statusDescription: 'OK',
        headers: {
            'cloudfront-functions': { value: 'generated-by-CloudFront-Functions' }
        }
    };
    var uri = event.request.uri;
    if (uri.startsWith('/wp-content/uploads/')) {
        // X-Robots-Tag ヘッダーを追加
        response.headers['x-robots-tag'] = {value: 'noindex'};
    }

    return response;
}

作成した関数をデプロイ(発行)し、準備完了です。

あとは設定したい CloudFront ディストリビューションのビューワーリクエストに、作成した CloudFront Functions 関数を追加しましょう。

これで CloudFront Functions による設定が完了です。パスパターンをカスタマイズしたい場合などでは、Key Value Store を利用することができます。もし DynamoDB や Cognito などと連携させた複雑な処理を実行したい場合は、 Lambda@edge を使うことも検討してください。

2. レスポンスヘッダーポリシー

もう1つの方法は、レスポンスヘッダーポリシーを利用することです。こちらの作成も CloudFront のコンソールから実行できます。

[レスポンスヘッダーポリシーを作成]をクリックし、レスポンスヘッダーの設定を行いましょう。今回は X-Robots-Tag の追加のみですので、シンプルなポリシー名とカスタムヘッダーの登録で完了です。

最後にこちらも CloudFront ディストリビューションのビヘイビア編集画面で、ポリシーの登録を行いましょう。

動作確認方法

設定が正しく適用されているか確認するには以下のコマンドを実行します。

curl -I https://your-site.com/wp-content/uploads/example.jpg

レスポンスヘッダーに X-Robots-Tag: noindex が含まれていれば成功です。

まとめ

X-Robots-Tag: noindex は、特に HTML ではないファイルを検索結果から除外するのに効果的なツールです。WordPress などの CMS を使用している場合、アップロードディレクトリ内のファイルを適切に管理することで、意図しない情報漏洩を防ぎ、SEO も最適化できます。

実装方法は環境によって異なりますが、いずれにせよサーバーや CDN 側での設定がシンプルかつ確実と言えます。特に AWS の CloudFront のような、WordPress 本体やウェブサーバーを操作せずに設定できるものがある場合は、積極的に活用していくことをお勧めします。

最後に忘れてはならないのが、設定後の動作確認です。意図したとおりにヘッダーが追加されているか、必ず確認しておきましょう。

WordPress を AWS で運用する最適解を提案します!

今回解説したような設定は、専門知識がないと難しく感じることもあるでしょう。DigitalCube の提供する LabWorksでは、AWS を活用して WordPress サイトの安定運用をサポートする様々なサービスを提供しています。

24時間365日有人監視によりサイト障害をいち早く検知し対応するサービスや、WordPress エンタープライズサポートとして月額制のプロフェッショナルによるテクニカルサポートを行っています。また、WordPress アップデート代行(年間/スポット)で最新の状態を維持するためのアップデート作業もお任せいただけます。さらに、WordPress 運用の課題を解決するチケット制サービス「プロフェッショナルサポート」も提供しています。

CloudFront や AWS での WordPress 運用でお困りのことがあれば、お問い合わせフォームからご相談ください。WordPress 専門のエンジニアが最適な解決策をご提案いたします。

横浜市立大学附属病院 次世代臨床研究センターmikihouse
日本協創投資JOLLY GOOD!
エピックベース株式会社INFOBAHN GROUP
SHARPInternet Society
freeeLegalOn Technologies
株式会社デジタルガレージ有限会社ワグ
CanCamリクルートダイレクトスカウト
SmartHR旭化成
横浜市立大学附属病院 次世代臨床研究センターmikihouse
日本協創投資JOLLY GOOD!
エピックベース株式会社INFOBAHN GROUP
SHARPInternet Society
freeeLegalOn Technologies
株式会社デジタルガレージ有限会社ワグ
CanCamリクルートダイレクトスカウト
SmartHR旭化成
Contact

当社へご興味をお持ちいただきありがとうございます。
「こんなことやってみたい!」と、ぜひ気軽にご相談ください。
担当者よりご連絡差し上げます。