1箇月ほど前のことになりますが、Googleで「徒書」を検索すると /itazuragaki/ の後に数字14桁がついた妙なURLがひっかかっていたことがありました(10月28日時点の検索結果の画像)。一体どこからそんなURLを拾ってきたんだとgooglebotを問い詰めたいところではあったものの、そもそもは「素のblosxomは、どんなパス情報を指定しても取り敢えず何らかのページを出力してしまう」という問題があったので、そこは何とかせねばなるまいと思いました。つまりパス情報に対応する記事が無い場合は、404 (Not Found)のステータスコードをgooglebotさんにきっちりお知らせしてやれば良いわけで。
で、blosxomで404を返すにはどうしたらよいかと検索で探してみたところ、hail2u.netのkyoさんによる解決法と、そこから更に辿ってRael Dornfestさんによる解決法(参照: 4139, 4147)が見つかりました。これらはblosxomの本体スクリプトを変更する方法です。
しかし、blosxomにはプラグインという仕組みがあり、それによって本体スクリプトを変更せず様々な機能変更が可能になっているのだから、どうせだったらこの問題もプラグインで何とか解決してみたいと思ったのです(目的と手段がごっちゃになってきた例)。あ、Perlに詳しくない人にとってはスクリプトを直接変更するのに抵抗がある人もいるだろうし(何とか言い訳を見つけた例)。ともかくそういった経緯でまたプラグインを作ったのでした。
ところで、例えばwikieditishプラグインを使って新規記事を追加する場合、まだ記事がないURLにアクセスすることになりますが、そういう時には404を返さないよう、設定により特定のフレーバー拡張子のついたURLへのアクセスに対しては404を返さずそのままページを出力できるようにしてます。プラグインスクリプト内を参照のこと。
404のページ部分はApacheのデフォルト404ページとほぼ同じになるようにしてますが、そこは工夫次第で色々変更できるかと思います(テンプレート等で変更できた方がよいのかも)。
御蔭で今のところは、Googleで「徒書」を検索しても「/itazuragaki/ の後に数字14桁がついたURL」は拾わなくなっているようです。
Version: 2005-04-19 で、Not FoundページのContent-Typeと本文をテンプレートファイルで変更できるようにしました。
Version: 2005-09-08 で、既存のカテゴリ名に前方一致するが実際には存在しないURLを指定された場合に、404 Not Foundを返さない問題に対処しました。
きっかけはにーやんさんからの指摘によります。有難うございます。
原因と改良案についてはall about blosxomのMLに投稿してみたのでご参照のほどを。取り敢えず、filterサブルーチンを用いる方法を導入することにしました。