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
	...
の全てを表しています。