検索エンジンのバグ対策

存在しないURLでも表示される

試しにhttp://www.inktomi.com/index.html/をクリックしてください(URLの終わりに/があるのがミソ)。ちゃんと表示されますね。さらには http://www.inktomi.com/index.html/index.html/index.htmlでも表示されてしまいます。 (このリンクから戻ってきたときにフォントが変わってしまうのでリロードしてください)

もうこうなると何やっても同じです。
http://www.inktomi.com/index.html/lovelove/tokyo/aheahe.htmlなんて存在しないディレクトリやファイルを指定しても最初に指定したindex.htmlであるトップページの内容が表示されてしまいます。

これはhttpd(wwwサーバーソフト)のバグ(それとも仕様?)でファイル名の後に/を入れてディレクトリと間違って指定してもトップページのファイルindex.htmlを送り出してくるのが原因です。さらにはこれからのリンクをクリックすると同じサーバーに存在する別のページであれば同様に間違ったURLであるにもかかわらずちゃんと見えてしまいます。

見るだけであれば問題は無いのですがこれが検索エンジンであったら大変です。人間だったらおかしいなと気がついて修正するのですが検索エンジンだとそんなことしてくれないので最初のリンクが間違っていたばっかりに続々と間違ったURLが登録されてしまいます。最近は下手するとアクセスの10分の1は検索エンジンからだったりします。 このためアクセスログには沢山の検索エンジンからの間違ったアクセスの記録が残ります。

以下がそのようにして検索エンジンが来たときのアクセスのログです。(当社はすでにこの後半の説明にある対策を施しているので全部404のエラーになっています)それにしてもすごい記録ですね。
jasmine.inktomi.com - - [06/Dec/2000:17:27:24 -0800] "GET /index.html/ldv/webwatchman/outlook/webwatchman/dosv.html HTTP/1.0" 404 250
jasmine.inktomi.com - - [06/Dec/2000:17:27:33 -0800] "GET /index.html/ldv/webwatchman/unique/hart/im/spam_1.html HTTP/1.0" 404 247
jasmine.inktomi.com - - [06/Dec/2000:17:27:33 -0800] "GET /index.html/im/fetch/fetch/hart/hart/unique HTTP/1.0" 404 236
jasmine.inktomi.com - - [06/Dec/2000:17:27:52 -0800] "GET /index.html/ldv/hart/fetch/unique/fetch/provider.html HTTP/1.0" 404 246
jasmine.inktomi.com - - [06/Dec/2000:17:27:57 -0800] "GET /index.html/unique/outlook/ldv/im/hart/portscan.html HTTP/1.0" 404 245
jasmine.inktomi.com - - [06/Dec/2000:17:27:59 -0800] "GET /index.html/ldv/hart/im/fetch/dosv.html HTTP/1.0" 404 232
jasmine.inktomi.com - - [06/Dec/2000:17:28:15 -0800] "GET /index.html/ldv/hart/webwatchman/ldv/im/neon/hart/boshu.html HTTP/1.0" 404 253
jasmine.inktomi.com - - [06/Dec/2000:17:28:17 -0800] "GET /index.html/ldv/ldv/neon/webwatchman/fetch/unique HTTP/1.0" 404 242
jasmine.inktomi.com - - [06/Dec/2000:17:28:31 -0800] "GET /index.html/ldv/webwatchman/im/hart/im/fetch/unique/provider.html HTTP/1.0" 404 258
判明している検索エンジンのうちこのような動きをするはinktomi社のものなのですがこの会社に 「このような振る舞いをするwwwサーバー(Apacheなど)がすでに沢山使われていて、そのようにデータを送ってくるのだから検索エンジン側で対応しなくてはいけないのではないか」 と連絡を取って見たところ「index.html/とするほうが悪い」ととりあってくれません。ちょっとしたアルゴリズムでそのような間違った検索をしなくなるはずなのですが。

そこで自衛としての対策を考えました。

対策

Apacheサーバーの設定ファイル srm.conf あるいは httpd.conf に以下の記述を追加します。これでエリアスが効きエラーとなって 返されます。/nonexistent/は実際には存在しないでたらめのディレクトリ名です。
Alias /index.html/      "/nonexistent/"
意外と簡単ですね。

当社にはその仕掛けがしてあります。
http://www.hart.co.jp/index.html/dosv.htmlをクリックしてみてください。Not Foundになれば正しく設定されているということです。これでaccess_logにはエラーとなって記録され解析結果も見苦しくなることはありません。もちろんリンクもないことになりますから検索サイトにもおかしなデータとして登録されることもありません。

アクセスログを見ておかしなアクセスの記録が発見されたらこのようにするとよろしいでしょう。変更したらhttpdは再スタートしなくてはいけません。

このような挙動をするサーバーはApacheのほかにはNetscapeサーバーが知られているのですがどうやってこのAliasを定義するかは残念ながら当社には情報がありませんのでお手許のマニュアルをご覧ください。

雑談

そういうinktomi社はこのようなアクセスに無防備であることがわかりましたが他社はどうなっているか(ApacheやNetscapeサーバーを使っているところ)を調べてみたらおもしろいと思います。どんなサーバーが使われているかはhttp://uptime.netcraft.com/graphで調べることができます。
トップへ