permalinkは変わらないからこそpermalinkなわけですが、事情があってpermalinkを変更せざるを得ないこともあると思います。
そこで、permalink変更後に古いpermalinkにアクセスがあった場合、自動的に新しいpermalinkへリダイレクトするようなプラグインを作ってみました。redirect_permalinkプラグイン
permalinkが変わるといっても、どんな場合でも対応できるわけではなく、ファイル名が変わらない場合のみ有効です。例えば、このサイトの場合、古いpermalink http://mizzy.org/web/ajaxWebMail02.htmlが新しいpermalink http://mizzy.org/program/ajaxWebMail02.htmlに変更されたとします。太字の部分(ディレクトリ)が変更されていますが、ファイル名ajaxWebMail02は変更されていません。
この状態で古いpermalink(存在しないpermalink)にアクセスすると、自動的に新しい方へリダイレクトされるのが分かるかと思います。
想定している用途としては、カテゴリ構成を見直す場合、ですね。ファイル名を変更してしまうと、古いものと新しいものを自動的に関連付けるのが難しいので、現状では対応できませんが、プラグイン中に古いファイル名と新しいファイル名のマッピングを記述することで、対応できるようにしたいな、と考えていたりします。
このプラグイン、blosxom.cgi本体の修正も必要です。406行目あたりの、
# Plugins: Last foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('last') and $entries = $plugin->last() }
という記述を、
# Plugins: Last foreach my $plugin ( @plugins ) { $plugins{$plugin} > 0 and $plugin->can('last') and $entries = $plugin->last($ne) }
と修正します。本当はblosxom.cgi本体の修正は、最終手段にしたかったのですが、指定されたpermalinkが見つかったどうかを判断する方法が、これ以外は思いつきませんでした…
せっかく作ったものの、自分では使うことはないかも。カテゴリ構成を見直す必要がないように、taggingプラグインを作ったので。
そろそろ自分が作ったプラグインを一度整理しないとなぁ…