■Apache‎ > ‎

Webalizer(文字化け対策)

Webalizerで解析すると日本語の検索語を使った場合、この文字列が
文字化けしよくわからなくなってしまう事があります。

■文字化け対策
文字化けは、サーバ側と検索サイトの文字コード違いが原因です。
検索サイトは大抵UTF-8です。

# vi /usr/local/bin/convert.pl
--- ここから ---
#!/usr/bin/perl
use Jcode;
open (IN ,$ARGV[0]);
while (<IN>){
$_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
Jcode::convert(\$_,euc);
print $_;
}
close (IN);
exit;
--- ここまで ---

# chmod 755 /usr/local/bin/convert.pl


続いて、PerlのJcodeって奴を入れます。
既に入っていれば無視してください。

# perl -MCPAN -e shell
cpan> install Jcode
づらづら文字が流れていきます。
/usr/bin/make install -- OK

OKが出れば完了。

■確認テスト
# cd [Webalizerで結果が書き出されるPATH]
# /usr/local/bin/convert.pl usage_解析したいファイル.html > temp
# mv temp > usage_解析したファイル.html     

ブラウザーより確認すれば文字化けが解消できてると思います。

■自動実行
事前にCronを設定していれば削除しておきます。
# vi /root/webalizer.sh
--- ここから ---
#!/bin/sh

/usr/local/bin/webalizer

#/var/www/html/webalizer/は自分の環境に変えてください。
for i in /var/www/html/webalizer/*.html
do
/usr/local/bin/convert.pl $i > $i.temp
mv -f $i.temp $i
done
--- ここまで ---

# chmod 755 /root/webalizer.sh
# crontab -e 
0 */4 * * * /root/webalizer.sh    
 

これで4時間毎に書き出してくれます。