存在しないフレーバーが指定されたときリダイレクトする
うちのblosxomでは、個別エントリのflavourを"html"にしてますが、先日トラックバックを送った際にwritebackプラグインの送るURLのflavourが"htm"になっていた(ことに気付かなかった)お陰でトラックバックを辿ってきてくれた人にエラーページを見せるという情けないことをやってました。でもあやまんねー!(まさに外道)
というわけで、指定されたflavourが存在しないとき、Location: URLでflavourをhtmlにでもしたURLでも送ろうと思って、最初は「content_type.errorの中身に書いたらいんじゃん!これスマート!俺って天才!」ってもちろんcontent_type.flavourに書けるのはContent-Typeだけだったので頓挫。結局短いプラグインを書くことになりました。<META HTTP-EQUIV="refresh" ... >は嫌だし。
# Blosxom Plugin: redirectif_noflavour
# Author(s): motormean
# Version: 0
package redirectif_noflavour;
# --- Configurable variables -----
my $valid_flavour = 'html';
# --------------------------------
sub start
{
1;
}
sub skip
{
my $path = $blosxom::path_info;
do {
return 0 if -e "$blosxom::datadir/$path/story.$blosxom::flavour";
} while ($path =~ s/(\/*[^\/]*)$// and $1);
$path = $blosxom::path_info;
$path =~ s/\.[^\.]*$/.$valid_flavour/;
print "Location: $blosxom::url/$path\n\n";
return 1;
}
1;
blosxom.cgi標準のtemplateルーチンからパクってますが。有効なflavour一覧ってblosxomが渡してくれたりしないんだなーと。しかしこのプラグインいま考えたら既にありそうな。



