ファイルの受け渡しや配布などをする時に、サーバーにアップしてダウンロードしてもらう事があります。

1回だけやりとりするならDropbox経由などの方が手軽なので最近はそちらを利用する事が多いですが、不特定多数の人に継続して配布するファイルなどの場合は、今でもサーバーに置いてリンクを知らせる方法を使います。

.htaccess
.htaccess / cocoate.com

配布するファイルはたいてい何かの資料等のPDFファイル。
この時気をつけておかなければならないのは、PDFファイルなどをサーバーにアップして何もせず置いておくと、勝手に検索エンジンに拾われてしまうという事です。

たまにGoogleで検索していると、明らかにどこかの会社の内部的な研修の資料や情報商材の残骸みたいなPDFファイルがひっかかる時があります。あれはサーバー上に保管しておいたPDFファイルが気づかずにキャッシュされているという結果であったりします。

今回はそうなってしまうのを防ぐ方法メモ。
というのも実は先日自分もそれをやらかしてしまい、数年前からサーバー上にアップしていたPDFファイルをふと全く関係ないキーワードで検索している時に発見するという体験をしたからです。

そのファイル自体は内容を見られても構わないものだったので、特に問題はなかったのですが、とはいえ人に見られないと思っていたものが勝手に検索対象になっていたというのは一歩間違えると大変な事にもなりかねません。

そこでサーバー上の特定のフォルダやもしくはドメイン直下全部を、検索エンジンのロボットからクローリングされない為にはどうすればいいか調べてみました。

結果わかった事。
検索ロボット(クローラー)の巡回を拒否する方法には3つあります。

  • metaタグで拒否

  • robots.txtで拒否

  • .htaccessで拒否

以上の3種類。
強さとしては .htaccess>robots.txt>metaタグ という順序になります。

今回の場合、ファイル置き場にしているサーバーはサイトを公開しているわけでもなかたので、.htaccessファイルとrobots.txtファイルを使った方法でロボット拒否の設定をしてみました。

どちらか一方でもいいと思いますが(もちろんそれぞれ効果と役割は違います)、念には念を入れて。

robots.txtを使って検索ロボットを拒否する方法

まずrobotsという名前のtxtファイルを作成します。

で、今回はファイル置き場にしているドメイン直下の全フォルダでクローラーを拒否したかったので下記の内容を記述。

User-Agent: *
Disallow: /

もし特定のフォルダやファイルのみを検索エンジンに拾われないようにしたければ

User-Agent: *
Disallow: /example/ ←フォルダ名
Disallow: /example.html ←ファイル名

のように記述します。

あとはこのrobots.txtファイルをドメイン直下(ルートフォルダ)にアップすれば終わりです。

検索ロボットはサイトに訪れた際にまずrobots.txtファイルにアクセスします。そこでrobots.txtにクローリングを拒否するような記述をしていれば、ロボットはそれ以上巡回せずに帰っていくという訳です。

.htaccessで検索エンジンを拒否

.htaccessファイルを利用して検索ロボットのアクセスそのものを制限します。

まず.htaccessという名前のファイルを作成。
普通にhtaccessという名前のtxtファイルを作って、その後リネームすれば簡単です。

できあがったファイルの中に以下を記述。

SetEnvIf User-Agent "Googlebot" shutout
SetEnvIf User-Agent "Slurp" shutout
SetEnvIf User-Agent "msnbot" shutout

order Allow,Deny
Allow from all
Deny from env=shutout ←最後に必ず改行を

記述した後、ドメイン直下のルートフォルダに.htaccessファイルをアップロード。

これでそのドメイン以下のファイルやフォルダは検索エンジンにインデックスされなくなります。