Kenji Arisawa E-mail: arisawa@aichi-u.ac.jp Aichi University Kurozasa 370, Miyoshi-cho Aichi, Japan 2002/02/01Powered by Pegasus
パス名適合規則
Pegasus のパス名適合規則は実空間における/sys/lib/httpd.rewrite
、サービス空間における /etc/rewrite
、 /etc/passwd
、 /etc/allow
および /etc/handler
で問題になります。
これらの内、/etc/handler
における扱いは他と異なります。
■ rewrite, passwd, allow におけるパス名適合規則
パスパターンが要求されたパスにマッチするか否かは、1. パターンとパスが一致する時
または
2. パターンの長さを m とする時、要求されたパスの左から m バイトがパターンに 一致し、かつ
2-1: パスのインデックス m の要素が `
/
' である時または
2-2: パターンの末尾が `
/
' である時で判断しています。
この規則によって
パターン /somepath
は
パス /somepath
あるいは /somepath/
にマッチしますが
パス /somepathogen
にはマッチしないことになります。
また
パターン /somepath/
は
パス /somepath/somefile
にマッチしますが
パス /somepath
にはマッチしないことになります。
ここではパスパターンとして正規表現等やシェルに見られるような 特殊文字を使用しません。 パターンの中の全ての文字は特殊な意味を持ってません。 分かりやすさを第一義的に重視しました。
■ handler におけるパス名適合規則
シェルのパスパターンの指定と同様に、*, ?, []
が使えます。但しシェルのパスパターンの指定とは異なり、 `/
' は基本的に他の文字と同じ扱いですが、1つの例外があります。
即ち /*/
のパターンは /
にマッチすると言うルールが追加されています。このルールは Pegasus が ftp ディレクトリを扱うのに都合の良い様にできています。例えば
/netlib/*/index.htmlで、(シェル流に書けば)
/netlib/index.html /netlib/*/index.html /netlib/*/*/index.html /netlib/*/*/*/index.html ...の全てを表しています。