結論、noindex化すれば良い。
諸事情でnoindexが難しい場合は以下の対応が考えられる。
- 既にindexされてしまっているものは削除申請(or ページ削除、別URLに変更)
- 対象ページ群をdisallow化
- 万一、クロール導線(リンク)がある場合は閉じる(or 導線をnofollow化)
クローラがコンテンツをindex(noindex)するまでの過程
- クローラが何かのURL_Aへアクセスを試みる
まずrobots.txtへアクセスしてルールを確認しようとする
- サーバ側へ /robots.txt へのURLの情報を貰うためのHTTPリクエストを投げる
パターン①:サーバがクローラのアクセスを完全にシャットダウンしたいので、アクセスを拒否する【処理終了】
パターン②:robots.txtの中身を返す(HTTPレスポンス200) - robots.txtの中身をクローラが確認する
パターン①:robots.txtにdisallowと書いてあったので、URL_Aへのアクセスを諦める【処理終了】
パターン②:robots.txtにdisallow記載が無かったので、URL_Aへのアクセスを試みる - サーバ側へ、URL_Aの情報を貰うためのHTTPリクエストを投げる
パターン①:サーバがURL_Aにクローラをアクセスさせたくないので、アクセス拒否する【処理終了】
パターン②:URLが変更になってるので、301を返す(移転先URLを返す)
パターン③:URL_Aの中身を返す(HTTPレスポンス200) - URL_AのHTMLを検証する
パターン①:返されたHTML内にmeta robotsのnoindex記載があるのでindexしない
パターン②:返されたHTML内にmeta robotsのnoindex記載が無いので、ページ品質の検証に進む
検索結果にコンテンツを表示させない(削除する)方法
- 該当ファイルをクロールさせない(disallow)
- robots.txtで伝える
- 該当ファイルをクロールさせnoindexだと認識させる
- HTTPレスポンスヘッダで伝える
- .htaccessを使って実装
- .htaccessを使わずに実装
- HTMLのmeta robots で伝える
- HTTPレスポンスヘッダで伝える
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でクロールされなければ伝わらない点に注意する。