2026年10月10日

2026年10月10日

WordPressで機密情報・個人情報を検索結果に載せないための設定

社内向けの資料、会員向けのページ、お問い合わせの添付ファイルなど、検索結果に出てほしくない情報がWordPressにある場合、まず押さえておきたいのは「noindex は隠す仕組みではない」という点です。noindex は検索エンジンに「結果に表示しないでほしい」と伝えるだけで、URLを知っている人は誰でも開けます。この記事では、本当に守るべき情報と、検索に出なければよい情報を分けたうえで、WordPressでの noindex の設定方法、PDFなどのファイルの扱い、すでに検索に出てしまった場合の対応までを説明します。

最初に、情報を2種類に分ける

設定を始める前に、対象の情報がどちらに当たるかを決めます。

見られてはいけない情報:個人情報、顧客名簿、契約書、社外秘の資料、パスワードの入った文書など。これは noindex では守れません。ログインが必要な場所に置く、公開フォルダから外す、そもそもWordPressに置かない、のいずれかが必要です。

見られても困らないが、検索に出る必要がない情報:フォーム送信後のお礼ページ、キャンペーンの限定ページ、内容の薄いタグページ、ステージング環境など。こちらが noindex の出番です。

迷った場合は前者として扱ってください。検索に出なくても、URLはメールの転送、ブラウザの履歴、アクセス解析、リンク元の情報などから第三者に伝わることがあります。

見られてはいけない情報の守り方

WordPressの公開範囲の機能は次のとおりです。

  • パスワード保護:投稿ごとに閲覧パスワードを設定できます。本文は隠れますが、同じパスワードを共有する仕組みなので、個人情報の保護には向きません。
  • 非公開:ログインしている、権限のあるユーザーだけが見られます。投稿のURLを知っていても、ログインしていない人には表示されません。
  • 会員プラグイン:ユーザーごとに閲覧を制御したい場合に使います。

注意が要るのはメディアです。投稿を非公開にしても、本文に貼ったPDFや画像は wp-content/uploads/年/月/ファイル名 のURLで直接開けます。投稿の公開状態とファイルの公開状態は連動しません。機密性のあるファイルは、公開フォルダの外に置いてPHP経由で権限を確認してから渡す仕組みにするか、別の保管サービスで管理するのが基本です。

あわせて、サーバー設定でフォルダの一覧表示(ディレクトリリスティング)が無効になっていることも確認します。Apacheでは Options -Indexes で無効にできます。

投稿・固定ページを noindex にする

検索に出る必要がないページは、<meta name="robots" content="noindex"> を出力して検索エンジンに伝えます。

SEOプラグインを使っている場合

Yoast SEO、Rank Math、All in One SEO などのSEOプラグインを入れているなら、投稿編集画面にあるプラグインの設定欄で、ページごとに noindex を指定するのが簡単で、設定の重複も起きません。項目の名前や場所はプラグインとバージョンによって異なります(2026年10月現在)。

コードで設定する場合

WordPress 5.7 以降には、robots メタタグをまとめて出力する仕組みがあり、wp_robots フィルターで内容を変えられます。コアには、ログイン画面などで使われている wp_robots_sensitive_page() という関数があり、noindex と noarchive をまとめて付けられます。

<?php
/**
 * Plugin Name: Sensitive pages noindex
 * Description: 指定したページに noindex, noarchive を出力する
 */
add_filter( 'wp_robots', function ( $robots ) {
    // 対象ページのスラッグを指定(例)
    if ( is_page( array( 'thanks', 'campaign-private' ) ) ) {
        $robots = wp_robots_sensitive_page( $robots );
    }
    return $robots;
} );

これを wp-content/mu-plugins/ に置くと、テーマを変えても設定が残ります。SEOプラグインも同じ仕組みや独自の方法で robots を出力するため、両方で設定すると矛盾したタグが出ることがあります。どちらか一方に寄せ、ページのソースを表示して robots のタグが1つだけになっているかを確認してください。

サイトマップから外す

noindex にしたページがXMLサイトマップに残っていると、検索エンジンに矛盾した信号を送ることになります。WordPress標準のサイトマップ(/wp-sitemap.xml)から特定の投稿を外すには、wp_sitemaps_posts_query_args フィルターを使います。

add_filter( 'wp_sitemaps_posts_query_args', function ( $args, $post_type ) {
    if ( 'page' === $post_type ) {
        $args['post__not_in'] = array( 123, 456 ); // 除外する投稿ID(例)
    }
    return $args;
}, 10, 2 );

標準のサイトマップには投稿者の一覧も含まれます。投稿者のユーザー名を出したくない場合は、wp_sitemaps_add_provider フィルターで users を外せます。

add_filter( 'wp_sitemaps_add_provider', function ( $provider, $name ) {
    return ( 'users' === $name ) ? false : $provider;
}, 10, 2 );

SEOプラグインが独自のサイトマップを出している場合は、プラグイン側の除外設定を使います。

PDFやWordファイルを noindex にする

PDFなどのファイルにはmetaタグを書けないため、HTTPレスポンスヘッダーの X-Robots-Tag で伝えます。

Apacheでは、mod_headers が有効なら wp-content/uploads/ の .htaccess に次のように書けます。

<FilesMatch "\.(?i:pdf|docx?|xlsx?|pptx?|csv)$">
    Header set X-Robots-Tag "noindex, noarchive"
</FilesMatch>

Nginxでは次のように書きます。

location ~* ^/wp-content/uploads/.*\.(pdf|docx?|xlsx?|pptx?|csv)$ {
    add_header X-Robots-Tag "noindex, noarchive" always;
}

Nginxの add_header は、location の中に書くと、上位の server ブロックに書いた add_header(セキュリティ系のヘッダーなど)が引き継がれなくなります。必要なヘッダーはこの location の中にも書き直してください。

設定後は curl -I https://example.com/wp-content/uploads/2026/10/sample.pdf で、応答に X-Robots-Tag が含まれているかを確認します。

robots.txt で隠そうとしない

よくある誤解が、robots.txt の Disallow で検索から消せるという考え方です。Disallow はクロール(ページを読みに来ること)を止めるもので、他のサイトからリンクされていればURLだけが検索結果に出ることがあります。しかも、クロールを止めると検索エンジンはページ内の noindex を読めなくなります。noindex で外したいページは、robots.txt でブロックしないでください。

また、robots.txt は誰でも読めるため、隠したいURLを書くと、かえって場所を知らせることになります。

添付ファイルページ・投稿者アーカイブを確認する

見落とされがちな公開ページもあります。

  • 添付ファイルページ:メディアごとに作られる個別ページです。WordPress 6.4 以降の新規サイトでは標準で無効になっていますが、それより前から運用しているサイトでは有効なままのことがあります。SEOプラグインにも、これを親の投稿やファイルへ転送する設定があります。
  • 投稿者アーカイブ:/author/ユーザー名/ の形でログインに使うユーザー名が見えることがあります。表示名とユーザー名を分けておくと影響を減らせます。

すでに検索結果に出てしまった場合

  1. まずページやファイルを非公開にする、削除する、ログインが必要な場所へ移すなど、元の情報へのアクセスを止めます
  2. Google Search Console の「削除」ツールで、検索結果からの一時的な非表示を申請します。これは一時的な措置で、元のURLが開ける状態のままだと再び表示される可能性があります
  3. 恒久的には、ページを 404 / 410 にするか、noindex を出したままクロールさせます
  4. URL検査ツールで、現在の状態と robots の判定を確認します

個人情報が外部から見られる状態だった場合は、検索からの削除だけでなく、影響範囲の確認と、個人情報保護法に基づく対応(個人情報保護委員会への報告や本人への通知が必要な場合があります)を検討してください。判断が難しいときは専門家に相談するのが安全です。プライバシーポリシーに書いている取り扱いと実態が合っているかも、この機会に見直します。

まとめ

  • noindex は「検索に出さない」ための仕組みで、情報を守る仕組みではない
  • 見られてはいけない情報は、非公開・ログイン必須・公開フォルダ外への移動で守る。メディアのURLは投稿の公開状態と連動しない
  • ページの noindex はSEOプラグインか wp_robots フィルター(wp_robots_sensitive_page())で設定し、サイトマップからも外す
  • PDFなどのファイルは X-Robots-Tag ヘッダーで noindex にする
  • robots.txt の Disallow では検索から消えず、noindex も読まれなくなる
  • 出てしまった場合は、元の情報を止めてから Search Console で削除を申請する

お気軽にご相談ください

お見積りへ お問い合わせへ
▲