Analog 5.91beta1: 検索引数/cgi-bin/script.pl?x=1&y=2では、/cgi-bin/script.pl プログラムが x=1 と y=2 という引数で実行されたことを意味します (サーバによっては、これらの引数をログファイルの別のフィールドに記録するものもありますが、LOGFORMAT コマンドの %q フィールドを使えば、 Analog がファイル名を上記の形式に変換してくれます)。
以下で説明する ARGSINCLUDE と ARGSEXCLUDE コマンドを使えば、Analog にこうした引数を読み込ませたり、無視させたりすることができます。デフォルトではすべての引数が読み込まれるようになっています。これは通常期待される動作だと思いますので、これらのコマンドが必要になることは、通常ないでしょう。
ただし、Analog は適切な設定が記述されていないと引数を表示しませんので、引数が読み込まれていても、レポート中で常にすべての引数が表示されるとは限りません。引数を表示させるには、関連するコマンドのARGSFLOOR パラメータの値を小さい値に設定することが必要になります。
また、レポート内では、search argument が関連するファイルの直下に表示されますので、通常のファイルの並び順が乱れます。 このことは、N column を有効にすれば、さらにはっきりするでしょう。
例えば、 以下のコマンド
FILEINCLUDE /cgi-bin/script.plには、/cgi-bin/script.pl?x=1&y=2 はマッチしません。 これをマッチさせるには、以下のように
FILEINCLUDE /cgi-bin/script.pl*記述することが必要です。同様に
FILEALIAS /cgi-bin/script.pl /script.plは、/cgi-bin/script.pl 自体に対して置換を行ないますが、 /cgi-bin/script.pl?x=1&y=2 に対しては行ないません。これに対しても、同様に
FILEALIAS /cgi-bin/script.pl?* /script.pl?$1のような記述を行なうとよいでしょう。(ただし、PAGEINCLUDE と PAGEEXCLUDE コマンドについては、常にファイル名の「?」記号より前の部分だけを評価の対象としています。)
逆に、リクエストレポートにおいて、引数があるファイルは、ファイル自身がレポートに含まれる場合に限ってレポートに含まれます。つまりは、
REQINCLUDE /cgi-bin/script.pl?*x=1*という記述だけを行なっても無意味で、
REQINCLUDE /cgi-bin/script.plの記述も合わせて行なう必要があるということです。
ARGSEXCLUDE /cgi-bin/script.plにより、Analog は上記ファイルの引数を無視するようになり、 /cgi-bin/script.pl?x=1&y=2 を /cgi-bin/script.pl と同じようにみなします。一方
ARGSINCLUDE /cgi-bin/script.plという記述を行なった場合、Analog は引数を読み込むため、 /cgi-bin/script.pl?x=1&y=2 は、 /cgi-bin/script.pl とは別のファイルとして扱われます。 REFARGSINCLUDE と REFARGSEXCLUDE は、リンク元 URL に対して、同様の処理を行ないます。
注意: 引数を無視するかどうかの確認は、組み込みの、あるいはユーザが定義した エイリアスによる置換の前に行なわれます。 そのため、コマンドの記述には、ログファイル中に現われるエイリアス前のファイル名を用いることが必要です。 例えば、ARGSINCLUDE /~sret1/script.pl は、事実上同じファイルを示す /%7Esret1/script.pl とマッチしません。 また、ARGSINCLUDE や ARGSEXCLUDE コマンドでは、「pages」による指定はできません。これは、ファイルが「page」に該当するかどうかは、エイリアスを適用してからではない判断できないからです。
http://www.altavista.com/cgi-bin/query?pg=q&kl=XX&q=carrot+cakeの場合、検索語はq=のフィールドにあるため、適切なSEARCHENGINEコマンドは
SEARCHENGINE http://www.altavista.com/cgi-bin/query qになります (なお、
SEARCHENGINE http://*altavista.*/* qのように記述することで、様々な国のミラーサイトからのアクセスに対応することが可能です。)
INTSEARCHENGINE コマンドは、自サイト内の引数をもつ検索エンジンやスクリプトに対して機能します。例えば、以下のようなリクエスト
/cgi-bin/search?trm=chocolate+cakeがあった場合、
INTSEARCHENGINE /cgi-bin/search trmのように指定することで (このファイルが ARGSEXCLUDE の対象になっていない限り)、「chocolate cake」が内部の検索レポート中に表示されます。
検索エンジンによっては、複数のフィールドに検索語が現われる場合があります。 こうした時には、以下のようにしてそのすべてをコンマ区切りで並べて記述することができます:
SEARCHENGINE http://*webcrawler.*/* search,searchText
わたしは、 以前の章で、 URL 中の %7E などの表記は、自動的に ~ などの文字に変換されるという説明を行ないました。しかし実際のところ、この処理は印刷可能なASCII文字である %20-%7E についてのみ行なわれます。これは、これらの文字のみがどの文字セットでも共通的に使われる文字であるためです。(実際には、この説明は正しくありません。専門家にとっては、クエリ文字列のデリミタを区別するため、&、;、= は変換されない方がよいでしょう。エンコードされている?、&、;、= は、デリミタではありません。また%25nmを%nmと混同しないようにするため、%も変換されません。)
しかし、検索レポートと検索語レポートでは、ASCII 文字以外の文字を変換して、実際に入力した文字列を確認できた方が、例えばアクセント文字がすべて%nm形式のコードになってしまうよりも便利でしょう。 そのため、Analog は、これらのレポート中に現われる %A0-%FF (ISO-8859-* 文字セットの場合) もしくは %80-%FF (それ以外のほとんどの文字セットの場合) の文字についても変換を行ないます。
もっとも、この機能を使いたくない理由がある場合には、以下のコマンドでこの変換を抑止することができます。
SEARCHCHARCONVERT OFF理由としては、以下のようなものが考えられます:
Stephen Turner
Analog についての質問はanalog-help メーリングリスト をお使いください。 (訳注: 日本では analog-jp メーリングリスト をご利用ください)