AN HTTPD ゲストブック/コメント集(2004年1月30日10:49)


後藤 秀一 sg11@topaz.ocn.ne.jp 2004/02/08 12:21

いとさん。

ご指摘のとおり、何の解決にもなっておりませんでした。
index作成時、大文字・小文字が「偶然」一致しただけだったです。
ありがとうございました。

なまず設定でつまずいた箇所です。
1.インストールする順番
 (MS OFFICE → Perl → kakasi → namazu → AN HTTPD)

2.namazurc, mknmzrcの設定,及び、mknmz(index作成時)の大文字、小文字の区別
  ここが間違っていても、Search-Sでは正常に検索できてしまう。
 (AN HTTPDの設定が間違っていると勘違い、namazuの設定が間違っていた)

3.namazurcの#ContentTypeの#を外してしまうと、検索されずに「保存」となる。
 (#ContentType "text/x-hdml")
 みやざわさんの「NAMAZUを使おう」を参考にさせてもらいましたが、
 「ここは外してはだめ」と書いてあるにもかかわらず、
 同じ赤字で書かれているため、
 惰性で#を外してしまった。

4.mknmz -U オプションによる検索結果の日本語表示
 (全角文字が%のついた半角文字で表示される。)

5.なまずを起動させるには、
 URIに「http://127.0.0.1/cgi-bin/namazu.cgi.exe」
 (これが結構わからなかった。)

6.同じLAN内では「http://192.168.1.16/cgi-bin/namazu.cgi.exe」
 (IPアドレスは、AN HTTPDを働かせているパソコンのもの)

7.検索画面をカスタマイズした場合、検索結果が出てこない。
 action="{cgi}" を
 action="http://192.168.1.16/cgi-bin/namazu.cgi.exe" に書き換える。


いと gfh05223@nifty.com 2004/02/07 22:43

中田さん

Replaceだけの問題かと思っていたのですが、mknmzでドキュメントを
最初は C:\www で二度目は c:\www で実行すると、別ファイルとして
再度処理するという無駄(Namazuにとっては当然)もやっているようです。

/[Cc]\|/ や Replaceを大文字用と小文字用の2行書くのはユーザの
苦肉の自衛策でしょうから、やはり Namazu Win32版がきちんと対応するのが
いいだろうと思います。

Microsoftにとっては、将来,互換性という重荷を背負ってまで Windowsで
大文字/小文字を区別することのメリットがあるのかどうかが鍵でしょうか。


中田昭雄 nakata@st.rim.or.jp 2004/02/06 21:17

いとさん、
Windows ではパス名の大文字小文字は区別しないことと、Namazu のようなソフトの生まれが大文字と小文字を区別するUNIXであること の説明がないと、なかなかわかりにくいのかもしれませんね。

win32版ではパス名の大文字小文字を区別しないようになっているとよいと思ったりもします。 それとも将来のWindows は区別するようになるのかもしれませんが。。。それもDOS形式との互換性を維持したままでは難しいでしょうか。


いと gfh05223@nifty.com 2004/02/05 22:59

後藤さん

解決したということですが、教訓が他の人の教訓にならないのではないか
という気がしますので、私が実際に試して分かったことを説明します。

Namazuのインストール時に作成される mknmzrc と mknmzrc-sample.win32、
namzurc と namazurc-sample.win32 は全く同じです。

mknmzコマンドの実行において、例えば AN HTTPDのドキュメントルートが
C:\www であり、ドキュメントルート下の全ファイルに対してインデックスを
作成する場合に、mknmzコマンドが

mknmz -O C:\namazu\var\namazu\index C:\www\
mknmz -O C:\namazu\var\namazu\index c:\www\
mknmz -O C:\namazu\var\namazu\index C:\WWW\

のいずれであっても(違いは "C"と"c"、"www"と"WWW")インデックスは
作成されますが、結果として作成されるインデックスの URI情報
(C:\namazu\var\namazu\index\NMZ.field.uri) には

/C|/www/index.html
/c|/www/index.html
/C|/WWW/index.html

のような違いが生じます。
namazurc の Replace は大文字/小文字を区別するので、

Replace /C\|/www/ http://www.example.com/
Replace /c\|/www/ http://www.example.com/
Replace /C\|/WWW/ http://www.example.com/

のいずれにすべきかは mknmzコマンドで指定したドキュメントのパスに
一致するように決めないといけないということです。

教訓:
1. mknmz コマンドは大文字/小文字の間違いを起こさないために、バッチを作って実行するのがよい
2. 上記バッチでmknmz コマンドを複数回実行する場合には、同一のパスは大文字/小文字を同じにすること
3. namazurc の Replace は NMZ.field.uri でパスの大文字/小文字を確認し、その通りに設定すること


後藤 秀一 sg11@topaz.ocn.ne.jp 2004/02/05 15:09

いとさん、中田さん どうもありがとうございます。
解決いたしました。

ご指摘どおりAN HTTPDの問題ではなく、
mknmzrcを mknmzrc-sample.win32からリネームして使うことにより解決しました。

C:\namazu\etc\namazuのmknmzrcをそのまま利用すると、indexは、
/d|/HTML/top.html
と作成され、DOS窓からの検索やSearch-Sでの検索は成功するが、
IEからの検索は失敗する。

mknmzrc-sample.win32をリネームしたmknmzrcを使用したところ、
http://127.0.0.1/top.html
と作成され、DOS窓でもIEからでも検索が成功するようになりました。

教訓 : 
Windowsで利用する場合、必ず、mknmzrc-sample.win32をmknmzrcにリネームして
利用すること。


いと gfh05223@nifty.com 2004/01/31 09:31

後藤さん

純粋に Namazu自体に関する内容なので、このコメント集での QA が
ふさわしいかどうかという疑問はあるのですが…。
ちなみにその質問は Namazuでは FAQ です。

> /d|/HTML/top.html これをクリックすると、

ドライブレターが大文字の "D" ではなく小文字の "d" なので、
 Replace /D\|/HTML/ http://127.0.0.1/
では一致せず、
 Replace /d\|/HTML/ http://127.0.0.1/
としなければいけないということですね。
(\ は | が文字としての | であることを示しています)

"D" と "d" がどういう都合で使い分けられるのか不明なので
どちらでも対応できるようにするなら
 Replace /[Dd]\|/HTML/ http://127.0.0.1/
の方がいいと思います。

ただ、これはサーバ機自身が検索クライアントになるときの話で、
LAN内や自宅サーバを公開したときに他のホストからも
アクセスできるようにするには、ホスト名/IPアドレスは書かずに
 Replace /[Dd]\|/HTML/ /
としないと、クライアントが自分自身にアクセスすることに
なってしまい、失敗します。

> データは、D:\HTMLに作成。

AN HTTPDのドキュメントルートが D:\HTML なら上の説明で
大丈夫と思いますが、もし D:\HTML がドキュメントルート下でなければ
エイリアスで例えば
 /files D:\HTML
のように設定しているでしょうから
 Replace /[Dd]\|/HTML/ /files/
としないとアクセスできません。

パスの表記でも大文字、小文字には注意が必要です。


中田昭雄 nakata@st.rim.or.jp 2004/01/30 20:45

後藤さん、
AN HTTPD は関係なくて namazu の話ですね。
Replace がちゃんと動作していないということのように思えますが。。


後藤 秀一 sg11@topaz.ocn.ne.jp 2004/01/30 10:49

ActivePerl, KAKASI, NAMAZU, Search-for-S.をWindowsXP Proにインストール
Index をC:\nmzindexに作成。
データは、D:\HTMLに作成。
Search-For-Sによる検索は検索結果を含め正常

http://127.0.0.1/cgi-bin/namazu.cgi.exe/ 
をIEに入力すればNAMAZUは正常に起動し、検索できるが、
検索結果が次のように表示され、検索先に飛ばない。
/d|/HTML/top.html これをクリックすると、
IEのアドレスは次のようになり
「ページが見つかりません。HTTP 404 - ファイル未検出」となる。
http://127.0.0.1/d|/HTML/top.html

これを、d:/HTML/top.html と書き換えれば、検索先に飛ぶ。

C:\httpd\cgi-bin\.namarurc の内容(抜粋) 
Index C:\nmzindex
Template C:\nmzindex
Replace /D\|/HTML/ http://127.0.0.1/
どこを修正すれば、検索結果が正常になるのでしょうか?