NOEMBLEM/エンブレムが設定されていません。

メールの詳細(トピック表示)

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 Nagashima wrote:

    > (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/




メールへの返信はMLのメンバーしかできません。
【PR】楽しい日記掲示板で楽しく話そうみんなの日記人気の日記デコメで日記
これが憧れの4LDK超/SUUMO