Kenji Arisawa E-mail: arisawa@aichi-u.ac.jp Aichi University Kurozasa 370, Miyoshi-cho Aichi, Japan 2002/02/01
Powered 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 ...の全てを表しています。