結論、noindex化すれば良い。
諸事情でnoindexが難しい場合は以下の対応が考えられる。

  • 既にindexされてしまっているものは削除申請(or ページ削除、別URLに変更)
  • 対象ページ群をdisallow化
  • 万一、クロール導線(リンク)がある場合は閉じる(or 導線をnofollow化)

クローラがコンテンツをindex(noindex)するまでの過程

  1. クローラが何かのURL_Aへアクセスを試みる

    まずrobots.txtへアクセスしてルールを確認しようとする

  2. サーバ側へ /robots.txt へのURLの情報を貰うためのHTTPリクエストを投げる

    パターン①:サーバがクローラのアクセスを完全にシャットダウンしたいので、アクセスを拒否する【処理終了】
    パターン②:robots.txtの中身を返す(HTTPレスポンス200)

  3. robots.txtの中身をクローラが確認する

    パターン①:robots.txtにdisallowと書いてあったので、URL_Aへのアクセスを諦める【処理終了】
    パターン②:robots.txtにdisallow記載が無かったので、URL_Aへのアクセスを試みる

  4. サーバ側へ、URL_Aの情報を貰うためのHTTPリクエストを投げる

    パターン①:サーバがURL_Aにクローラをアクセスさせたくないので、アクセス拒否する【処理終了】
    パターン②:URLが変更になってるので、301を返す(移転先URLを返す) 
    パターン③:URL_Aの中身を返す(HTTPレスポンス200)

  5. URL_AのHTMLを検証する

    パターン①:返されたHTML内にmeta robotsのnoindex記載があるのでindexしない

    パターン②:返されたHTML内にmeta robotsのnoindex記載が無いので、ページ品質の検証に進む

検索結果にコンテンツを表示させない(削除する)方法

やるべき対応と手段
  1. 該当ファイルをクロールさせない(disallow)
    • robots.txtで伝える
  2. 該当ファイルをクロールさせnoindexだと認識させる
    1. HTTPレスポンスヘッダで伝える
      • .htaccessを使って実装
      • .htaccessを使わずに実装
    2. HTMLのmeta robots で伝える

disallowの注意点

disallowはクローラに対する「クロールするな」という命令であって、「indexするな」という命令ではないため、disallowページであっても「他所からのリンクがいっぱい存在する」など何らかの理由で、検索結果にhitしてしまうことはある。

こうしたhit状況になると、サーチコンソールのカバレッジで「ブロックしないほうが良いんじゃない?」的に上がってきてしまうので、disallow以外の対策に置き換える必要が出るかもしれない(やってみないと分からない)。

disallow以外の手段は、何だかんだで工数とリテラシーが要求されるため、まずはdisallowで対応し様子を見るのが安定。

.htaccess でクローラにdisallowページ群を伝えることは不可能

.htaccessにもallowと呼ばれるものはあるが、これはIP制限かけたりする時に使うもので、ここの記述で、クローラにdisallowページ群を伝えることは不可能。

noindexの注意点

「リダイレクト(や類似の処理) = .htaccess」のような理解をされることが多いが、.htaccessを使わずに実装することも可能。(例えば、同じような有名どころの設定ファイルだとhttpd.confを使うなど)

それ以外にもサーバサイドでも(Apacheなど「Webサーバ」での処理ではなく)プログラム言語(phpだとかRubyだとか)を使うこともできる。

robots.txtとnoindexの併用は要注意

noindexが設置されておらず、index(クロール)されている場合で、robots.txt(でdisallow)→noindexの順番でやるとクローラがメタタグのnoindexを読み取れないのでインデックスされ続ける。

なので、検索結果に表示させたくない(消したい)場合は、1度noindexに変えてそれをクロールさせるなどの対応が必要。

noindexの設定をHTTPレスポンスヘッダでやろうがmeta robotsでやろうが、disallowでクロールされなければ伝わらない点に注意する。