2002/12/08
Pegasus は現在の所、2種類の方法でパスパターンを調べ、リクエストを制御しています。
rewrite
, passwd
, allow
におけるパス名適合規則P1 P2 result /abc / OK /abc /defg NG /abc /abc/ OK /abc/ /abc OK /abc /abc/de NG /abc/de /abcなどです。ここに OK は P1 が P2 にマッチすることを意味しています。
ここではパスパターンとして正規表現やシェルのワイルドカードに見られるような特殊文字を使用しません。パターンの中の全ての文字は特殊な意味を持ってません。("/
" がディレクトリの区切り子であることを除けば)
handler
で使用されているパス名適合規則はシェルで使用されているパスパターンの表現とよく似ています。シェルのパスパターンと同様に、*, ?, []
が使えます。但し "/
" は基本的に他の文字と同じ扱いですが、1つの例外があります。/*/
のパターンは /
にマッチすると言うルールが追加されています。このルールは Pegasus が ftp ディレクトリを扱うのに都合の良い様にできています。例えば/netlib/*/index.htmlで、(シェル流に書けば)
/netlib/index.html /netlib/*/index.html /netlib/*/*/index.html /netlib/*/*/*/index.html ...の全てを表しています。