estwaverの設定ファイル allowrx, denyrx, noidxrx の適用順序
 2006.09.13

allowrx, denyrx, noidxrx の適用順序に関する話. HyperEstraierに付属するWebクローラ estwaver の設定ファイルには,訪問するURL/訪問を禁止するURL/訪問するがインデクスに登録しないURL をそれぞれ正規表現で設定できる. さて,これらの正規表現の複数にマッチするURLの場合,どう解釈されるのか?例えば,設定ファイルに以下のように記述されている場合に http://www.example.com/foo/bar.html はどうだろうか?
denyrx: ^http://www.example.com/foo
allowrx: ^http://www.example.com/
この場合,http://www.example.com/foo/bar.html は訪問されかつインデックスに登録される. estwaver はこれら3つの正規表現の設定を一つのリスト構造で管理する.modwaver.h にあるWAVER構造体のpmrulesがそのリストである.設定ファイルを上から読みつつ,allowrx, denyrx, noidxrx に関する設定行だったら,リストの末尾に正規表現を加える. 実際に,URLが正規表現とマッチするかを検証する場合は,リスト構造の先頭から1つずつ正規表現を取り出し検証を行う.したがって,設定ファイルのより下位の行に書いてある正規表現が最終的に有効になる. 以上がソース(estwaver.c, modwaver.[ch])を読んで理解した結果である.
カテゴリー:hyperestraier