メールの詳細(トピック表示)
notfound強化案
投稿者: さん 2005/09/04 16:30 MLNo.177 [メール表示]
北村と申します。はじめまして。
動的生成するblosxomで、「存在しないURL」を要求された場合に
404 Not Foundを返すためのプラグイン"notfound"
http://www.akatsukinishisu.net/itazuragaki/blosxom/notfound.html
を作成しているのですが、
これを利用頂いているにーやんさんのブログ
http://niiyan.s8.xrea.com/blosxom/blosxom/20050902_notfound_plugin.htm
で、Not Foundが返らない場合があることの指摘がありました。…(0)
何故このような動作になるのか調べてみたところ、
blosxom.cgiの338行目あたりの、
この最初の正規表現マッチで、URLのディレクトリ部分が
ファイルパスの先頭部分のみ合っていればOKにしてしまうことが
原因であるようです。
対処として、まず最初に上記の行を以下のように
書き換えることを思いつきました。…(1)
!$currentdir or $path =~ /^$currentdir(?:\/|$)/ or $path_file eq "$datadir/$currentdir" or next;
しかし、個人的に「可能であればなるべくblosxom.cgiは変更せず、
プラグインで対処したい」という考えがあったので、
もう一つの案として、notfoundプラグインに以下のfilterサブルーチンを
追加することを考えました。…(2)
sub filter {
my ($pkg, $files_ref) = @_;
return 1 unless ($blosxom::path_info);
# $path_infoのディレクトリ部分に一致しないファイルを除去
my $path_dir = "$blosxom::datadir/$blosxom::path_info";
return 1 if ($path_dir =~ m{/[^/]+\.[^/]+$});
foreach my $f (keys %$files_ref) {
$f =~ m{^$path_dir/} or delete($files_ref->{$f});
}
1;
}
ローカルで動作確認した限りでは、
(1)か(2)どちらかの対処を行えば(0)の問題は解消され、
問題なく動作しているようでした。
しかし、(1)(2)の対処について、
まだ自分が気付いていないような欠点や、
他のプラグインとの組合せで発生するような不具合などが
あるかも知れないので、
他の方から見て、もし不具合等が見つかりましたら
ご指摘頂けると有難いです。
よろしくお願いします。
--
北村曉 kits@…
http://www.akatsukinishisu.net/
読み込み中...-
MLNo.178
kyoさん
(0) 2005/09/04 17:07 [メール表示する]

kyoです。
(1)と(2)共におかしいところはなさそうな感じですね。blosxom.cgiへのパッチ
はいろいろな意味でアレなので、filterサブルーチンを使っている(2)の方が形
としては良いと思います。
このカテゴリ名の部分一致のネタは去年の2月に本家MLの方で取り上げられてい
ました。Raelさんは、
http://groups.yahoo.com/group/blosxom/message/6792
> Heh... never even thought to check that.
> That's now officially a feature ;-)
とか言ってたりするとかいう。まぁこれは冗談だとは思いますが。
また、Raelさんの投稿への返信で挙げられた、
fullpathcategory
http://zovirl.com/2004/software/blosxom/plugins/fullcategory/
でにーやんさんの言っていた現象に対策できるかもとか。notfound特有の現象と
いうわけでもないので、別のプラグインで対策した方がスマートかなと思います。
それでは。
------------------------------------------------
Kyo Nagashima
http://hail2u.net/

-
MLNo.179
さん
(0) 2005/09/05 01:47 [メール表示する]

kyoさん、確認有難うございます。
On Sun, 04 Sep 2005 17:07:22 +0900
Kyo Nagashimawrote:
> (1)と(2)共におかしいところはなさそうな感じですね。
それを聞いてひとまず安心しました。:-)
> blosxom.cgiへのパッチ
> はいろいろな意味でアレなので、filterサブルーチンを使っている(2)の方が形
> としては良いと思います。
自分も同意見です。
> このカテゴリ名の部分一致のネタは去年の2月に本家MLの方で取り上げられてい
> ました。Raelさんは、
>
> http://groups.yahoo.com/group/blosxom/message/6792
> > Heh... never even thought to check that.
> > That's now officially a feature ;-)
>
> とか言ってたりするとかいう。まぁこれは冗談だとは思いますが。
なるほど……以前から知られていた問題だったんですね。
> また、Raelさんの投稿への返信で挙げられた、
>
> fullpathcategory
> http://zovirl.com/2004/software/blosxom/plugins/fullcategory/
>
> でにーやんさんの言っていた現象に対策できるかもとか。
見てみたところ、filterサブルーチンの動きは
自分の挙げたのと同様のようですね。
> notfound特有の現象と
> いうわけでもないので、
や、それは重々承知しているのですが、
「存在しないURLを要求されたらNot Foundを返す」プラグインには
そのために必要な機能は備えていた方がよいように思うので、
やはりnotfoundに先のfilterサブルーチンを追加するようにしたいと
思います。
--
北村曉 kits@…
http://www.akatsukinishisu.net/


