AjaxSearchの文字化けと2バイト文字検索が反映されない件の対処法です
AjaxSearchの文字化け対策はweb上の色々なところに分散していますが、
わたしの場合はいろいろためして、やっとうまくいくようになりました。
他にも苦労している方がいるかもと思い、サーバー情報と対処法をアップします。
使用サーバーはロリポップとアイルです。
■レンタルサーバー1 ロリポップ MySQL 4.0.24
ModX 0.9.6.1 (0.9.6でも同じだと思います) 運用文字コード UTF-8
AjaxSearch 1.6 (インストールのまま。スニペットの見出しには1.5になってますがphpには1.6とあります)
状況:検索窓に2バイト文字を入れると検索結果なし
アルファベットは検索されるが、ページに日本語が入っているとヒットしない。
※フォーラムなどを参考に、いろいろいじっている間、ときどき日本語が文字化けもせずヒットすることもあったが、同じ文字を検索しても二度目はうまくいかないなど不思議な症状も^^;
対処法:Modxディレクトリの.htaccessを修正。
.htaccess の下のほう#ExpiresActive ~を説明するコメントの上辺りに以下を挿入
php_value default_charset UTF-8
php_value mbstring.languages natual
php_value mbstring.internal_encoding UTF-8
php_value mbstring.script_encoding auto
php_value mbstring.http_input auto
php_value mbstring.http_output pass
php_flag mbstring.encoding_translation Off
php_value mbstring.detect_order auto
php_value mbstring.substitute_character none;
php_value mbstring.func_overload 1
この方法はサーバーで.htaccessが使えることが条件です。
(ロリポップは.htaccessのかなりの機能がつかえます)
※コードはMirai建築工房さんのかかれたものです。
http://www.miraiarcs.com/
現在Mirai建築工房さんは閉鎖中のためグーグルキャッシュから。
http://72.14.235.104/search?q=cache:jDtxKSJdfJoJ:www.miraiarcs.com/modxuop/modxuop1.html+AjaxSearch+modx&hl=ja&ct=clnk&cd=20&gl=jp
■レンタルサーバー2 アイル MySQL-4.0.x
Modx 0.9.6 運用文字コード UTF-8
AjaxSearch 1.6
状況:アルファベット、2バイト文字共に検索はヒットするが、日本語は全て文字化け。
アイルは.htaccessがアクセス制限くらいしか使えないため、サーバー1の方法は使えませんでした。
(同じ.htaccessをアップしたらエラーになった^^;)
対処法:php.iniを作ってModxディレクトリにアップする
新規テキストファイルに以下をコピペして、ファイル名をphp.iniにして保存。サーバーにアップ。
language = "Japanese"
mbstring.internal_encoding = "UTF-8"
mbstring.encoding_translation = Off
フォーラムの [解決] AjaxSearchで日本語 を参考
http://modxcms.com/forums/index.php/topic,5991.0.html
※php.iniというファイルはどこにあるんだろうと散々探してしまいましたorz
新たに作るファイルだとは思いもよらず…。