BBRK 08-12-22


Googlebot 対策  

[分類] サーバ関連

いつの頃からだったか正確な日にちは分かりませんが、今年の夏以降ですかねぇ、Google のクローラである Googlebot が、ウチのサイトに存在しない URL を指定してページを GETしてくるようになったんですな。
で、存在しない URL ですから、Not Found をヤツに返して終わっているのだと思っていたら、エラーにならずに、なぜか index.html の中身を返していたんですな。
例えば、
http://www.unknown24.net/bbrk/index.html/20081209/fukuyamakazusa
の要求に対して、
http://www.unknown24.net/bbrk/index.html
の中身を返していたのです。

なんでエラーにならないのか、さっぱり理解不能だったのですが、いろいろ調べて理由が判明しました。まぁ、分かってしまえば簡単なことですな(苦笑)
拡張子 html のファイルでも SSI させるように設定してあるのですが、そうすると、サーバ側が html を cgi として扱うようになり、上の例でいうと、/20081209/fukuyamakazusa を引数として index.html を呼び出す…という形になっていたんですな。
で、index.html 内ではその引数を読んでいないので index.html の内容そのものが返されてしまう、と。
でもって問題なのは、Googlebot の野郎が(笑)、上述の存在しない URL が存在していると認識し、返された index.html と同内容のものを取り込んでインデックスしてしまう…というところなんですな。
その影響で、BBRK 内検索をすると、まともな結果が出てこなくなってしまっています(泣)

では、どうやって対策するか。

拡張子 htmlのファイルで SSI を動かすのをやめる…という対策はナシね(笑)

webサーバが Apache 2.0.30 以降であれば、AcceptPathInfoディレクティブ を使うことで、引数がくっついているという判断とせずに Not Found に出来るようなのですが、ウチがホスティングしているサーバは Apache 1.3.41 なので、この手は使えないっぽい。

いろいろ考えたあげく、URLの魔術師(笑)である mod_rewrite を使うことにしました。
次のような記述を .htaccess の一番最後に追加することで目的を達成することが出来ちゃいました。めでたしめでたし(笑)

# For Googlebot
RewriteRule ^index\.html..*$ [R=404,L]

説明すると、URL の index.html の後ろに何か文字が 1文字以上付いていたら 404 を返して終了ということですな。

しっかし、Googlebot の野郎は何が目的でこんなアクセスをしているんでしょうね。
まったくもって怪しいヤツだ(苦笑)

■関連記事
BBRK 05-02-09 : ドメイン名 変更(その3)


BBRK に戻る