検索ワードをUTF-8からEUC-JP変換してnamazu検索する

namazu.cgiはUTF-8の検索ワードに対応していないので、UTF-8ページの検索フォームからnamazu検索すると、検索ワードが文字化けしてしまい、正しく検索できない。http://www.namazu.org/FAQ.html#set-server-encoding に、namazu.cgiはUTF-8の入力に対応していないと記述がある。

次の案1と案2を作成した。案2はphp.iniでallow_url_fopen = Onの必要があり、必要条件の少ない案1を採用した。

案1: 検索フォームからnamazu.phpへ送信し、namazu.phpで検索ワードをUTF-8からEUC-JPに変換し、namazu.cgiへリダイレクトする。
案2: 検索フォームからnamazu.phpへ送信し、namazu.phpで検索ワードをUTF-8からEUC-JPに変換し、namazu.cgiへhttpリクエストし、内容を返す。

他に次のような記事もあった。試していないが、参考のため残しておく。

php用のnamazu.so拡張モジュールを使う。
・2013-02-14 RHEL6でnamazuをインストールしてPHPから使う
http://www.mogumagu.com/wp/wordpress/?p=1217
・2010-02-06 namazu.soの作り方
http://zkangaroo.blogspot.jp/2009/03/namazuso.html

formタグのaccept-charset指定、jsでdocument.charset指定。
・2009-01-12 UTF-8のページでnamazuを使う
http://blog.digital-assist.net/?p=21

以下、案1について説明する。

(1) namazu.phpに保存してください。

$path(赤太字)を本来のnamazu.cgi の設置パスに修正してください。

(2) namazu.phpをサーバに設置してください。

動くならnamazu.cgiと同じディレクトリがわかりやすい。cgi-bin下でphpが動かない場合は、/namazu.php などに設置してください。

(3) utf-8ページの検索フォームのaction(赤太字)をnamazu.phpの設置パスに編集してください。