本サイトを構成するにあたり、特にCk2 Bloggerさんを参考にさせていただきました。この場を借りてお礼申し上げます。構成もまとまっていて素敵です。
blosxomのカスタマイズ第1弾というわけですが、とりあえずblosxom本体のバグらしきものを対策してみました。
blosxomではディレクトリ単位でエントリを表示することが出来ますが、例えば、/news と /new というディレクトリがある場合、/new でのアクセスは問題ないのですが、/news でアクセスすると /news と /new の両方のエントリが表示されてしまいます。どうやらパスの比較に問題がありそうなので少し調べてみました。
該当箇所はblosxom.cgiの以下の場所。本家blosxom(2.0)だと338行目、blosxom starter kit(1.1.3)だと282行目にあたるようです。上の行のコメントを参考に探せば見つかると思います。
# Only stories in the right hierarchy $path =~ /^$currentdir/ or $path_file eq "$datadir/$currentdir" or next;
この行を以下のように修正してみました。
# Only stories in the right hierarchy ($path =~ /^$currentdir/ and (!$currentdir or !$' or $' =~ /^\//)) or $path_file eq "$datadir/$currentdir" or next;
こんな感じでうまくいきそうです。要はファイルのパスと変数currentdirを比較した際、一致した後方の文字がどうなっているか判断しているだけです。
なんとなくバグっぽいので本家に取り込まれないかなぁ。
2008/5/13追記。
どちらがいいのかわかりませんが、
# Only stories in the right hierarchy !$currentdir or $path =~ /^$currentdir(?:\/|$)/ or $path_file eq "$datadir/$currentdir" or next;
と直してやっても良さそうなので変更してみました。