Entry

.htaccessの話 ーgooglebot対策で

ここの日記やギャラリーなどのページはセキュリティ対策のために時々アドレスをかえていますが、なぜかなくなったページを探そうとgooglebotがしつこく訪問。数秒おきに来て1つのファイルに1日700~1000アクセスし、エラーログに大量に跡を残してログを荒らして回るので困ってました。

何度来てもページはないのに404が何度出ようが一向に訪問回数が減る様子もなし。そろそろ対策した方が良いのかな…とやってみたことまとめ。役に立つのか分かりませんが、googlebotで困ったときの参考に。
(無視できる程度なら害はないので無視で良いと思います。今回アクセス数が多すぎでログが使い物にならなくなるほどだったので対策してみました。)

その1. googleで登録削除の要請をする

googleにログインし、webマスターツールを使用して削除申請をします。
http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=164734

結論から言うと、あっさりと挫折しました。
お世話になっているのにこういうのもなんだけど、勝手に回ってきて登録していくくせに、登録解除するのにgoogleでアカウントを作らなければ申請できない仕組みなんですね。しかも削除後にもう一度回ってきて再登録してしまうことも珍しくないようで、効果はそれほど期待できないようです。

その2. robots.txtをルートディレクトリ直下に設置。

テキストファイルでrobots.txtというファイルを作ります。
そこにロボットがファイルをアクセスしないように記述をします。googlebot指定もできるし、全てのロボット対象に書くこともできます。
http://support.google.com/webmasters/bin/answer.py?hl=ja&answer=156449&topic=2370588&ctx=topic

記述の仕方はこんな感じ。
_______

User-agent: *
Disallow: /diary/

User-Agent: Googlebot
Disallow: /diary/
_______

「*」マークは全てのロボットに対応という意味。下の例はgooglebotのみに対して対応する場合の記述方法。ここでは/diary/というフォルダへのアクセスを禁止しています。ファイルは/から始まる絶対パスで上の例をURLで表すと http://www.example.com/diary/ となります。
ファイルを置く場所はルートディレクトリ直下。分かりやすく言うと、http://www.example.com/robots.txt というアドレスになるようにします。ロボットはrobots.txtを探してファイルが有ればその指示に従ってくれます、理屈の上では。
ただどうも解説サイトを見ていると素直にその指示に従ってくれるロボットはそれほど多くないようで、googlebot対策ならこれでもいけるよ、ということらしいです。

結果失敗。逆に訪問回数が増えて、これまで1日1000回程度だったのが2000回近くになりました。
robots.textで記述するファイルは、ファイルが存在していることが前提となるため、googlebotに「ファイルは見つからないけど実は有るんだよ」と教えているようなものかもしれません。


ちなみに、今回ファイルがないのでrobots.txtを置きましたが、各ファイルにメタタグを記述して、
___

meta name="robots" content="no index"
___

と入れる方が確実かと思います(アクセス禁止ではなく、登録禁止の意味なので厳密には少し違います)。これも無視するロボットもあるんですが、巡回回数それほど多くないし、私はこれを入れてギャラリーの登録をブロックしていますが割と効果あると思います(完全ではありません)。

その3. .htaccessを設定。

.htaccessを設定すると特定のファイルにアクセスしたときに、サーバからアクセスした人にメッセージを返すことが出来ます。一般的にはアクセス制限に使われることが多いですね。

「404 Not Found」(ページが見つかりません)を何度繰り返しても訪問をやめない場合は「410 Gone」(ファイル消滅)を返すとページがなくなったことを分かってくれるようです。
※参考サイト様
http://www.suzukikenichi.com/blog/how-to-set-up-410-gone/

.htaccessは「.」で始まるファイルのため、「.htaccess.txt」を作ってtxtファイルで記述し、サーバにアップしたあと名前変更で「.txt」を削除します(…でいいはず)。ファイル名は必ず「.htaccess」でなければいけません。
設置場所は目的のファイルがあるディレクトリ直下が一番いいです(それが含まれればどこでもいいですが、.htaccess以下のディレクトリ全てに適用されるので必要ないところまで制限がかかることになります)。
_____

Redirect gone /diary/
_____

上の例でURLがhttp://www.example.com/diary/とすると、ファイルの場所はルートディレクトリ直下、つまりhttp://www.example.com/.htaccessというアドレスになります。(サブディレクトリに置く場合などの記述方法は解説サイトでご確認ください。)

※参考サイト様
http://mikeneko.creator.club.ne.jp/~lab/web/htaccess/redirect.html#Redirect


結果。設置した途端攻撃みたいに出ていたエラーログが止まりました。凄い、効果抜群。ちなみに、後で見たら410 Goneが1000回出てました。…アクセスは懲りずにやってたみたいですが、ログは荒らされないのでこれで一安心です。

_______


結論。.htaccessを使えば実際には存在するページでも404を返したり、301 Moved Permanentry(ページ移動)を返すことも出来るかと思いました(ただしrobots.txtと違ってロボットだけでなく一般訪問者にも表示されてしまいますのでご注意を)。これで防げればいいのですが、本当にしつこいので410を返すのが最も早い方法かと思います。登録削除もしてくれると思うので上の私のように削除申請方法で不満に思った人はこの方法を使っても良いかもしれません。

以上、googlebot対策でした。
相変わらずの素人対応ですが、ご参考になれば幸いです。