Apache、NGINX支持中文URL图片、文件名的终极解决方案
kevin.Zhu 发布于:2013-1-16 16:48 分类:架构设计 有 15 人浏览,获得评论 0 条
http://www.wdlinux.cn/bbs/thread-5275-1-1.html
Apache(32位):
安装环境:CentOS 5.6 + Apache 2.2.15
安装结果:安装后支持“中文图片、文件名”链接直接打开
以下为安装过程:
1、下载安装包
-
-
wget ftp://ftp.aconus.com/fc5/mod_encoding/mod_encoding-2.2.0-1.i386.tar.gz
复制代码
2、直接解压
-
-
tar zxvf mod_encoding-2.2.0-1.i386.tar.gz
复制代码
看到2个rpm安装包,进行安装
-
-
rpm -ivh iconv_hook-1.0.0-1.i386.rpm
-
rpm -ivh mod_encoding-2.2.0-1.i386.rpm
复制代码
3、用 find / -name httpd.conf 找到apache配置文件httpd.conf,vi编辑加入以下内容
-
-
LoadModule encoding_module modules/mod_encoding.so
-
Header add MS-Author-Via "DAV"
-
EncodingEngine on
-
NormalizeUsername on
-
SetServerEncoding GBK
-
DefaultClientEncoding UTF-8 GBK GB2312
-
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
-
AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312
-
AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
复制代码
保存退出
4、重启apache
-
-
service httpd restart
复制代码
5、完成!
注:如果安装的是WDCP,重启apache会失败,需要将mod_encoding.so复制到/www/wdlinux/httpd-2.2.22/modules下,
命令:
-
-
cp /usr/lib/httpd/modules/mod_encoding.so /www/wdlinux/httpd-2.2.22/modules
复制代码
Apache(64位):
————————————————————-
此方案用于解决Apache软件对中文网址、中文图片、文件名的支持问题。
通过测试环境:64位CentOS5.5 + Apache2.2.15
————————————————————-
下载 mod_encoding_64.tar.gz
源码包由吴世昌整理,已经包含了apache2.2所需的补丁。
2011.9.20由Hostloc.com的Captain修改补充。
————————————————————-
1、安装gcc组件
-
-
yum install gcc -y
复制代码
2、下载压缩包
-
-
wget http://d.nicwind.com/files/mod_encoding_64.tar.gz
复制代码
3、将压缩包解压,进行编译
-
-
tar zxvf mod_encoding_64.tar.gz
-
cd mod_encoding_64
-
patch -p0 < mod_encoding.c-apache2.2-20060520.patch
-
cd lib
-
chmod 755 configure
-
./configure --prefix=/usr
-
make && make install
-
ldconfig
-
cd ../
-
chmod 755 configure
-
cp -p /usr/sbin/apxs /usr/bin
-
./configure --with-apxs=/usr/bin/apxs --with-iconv-hook=/usr/include
-
make
-
gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -Llib -liconv_hook
-
cp mod_encoding.so /usr/lib/httpd/modules
复制代码
注:/usr/lib/httpd/modules为apache的modules目录,可以用
-
-
find / -name modules
复制代码
找出这个目录的路径
注意把/usr/lib/httpd/modules改成你的apache模块存放路径。
4、完成以上操作后,再修改apache的配置文件(可以用find / -name httpd.conf,找出httpd.conf文件的路径),把下面的内容添加到apache的配置文件httpd.conf中。
-
-
LoadModule encoding_module modules/mod_encoding.so
-
-
EncodingEngine on
-
NormalizeUsername on
-
SetServerEncoding GBK
-
DefaultClientEncoding UTF-8 GBK GB2312
-
AddClientEncoding "(Microsoft .* DAV $)" UTF-8 GBK GB2312
-
AddClientEncoding "Microsoft .* DAV" UTF-8 GBK GB2312
-
AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
复制代码
保存,退出
5、重启apache
-
-
service httpd restart
复制代码
6、完成
注:如果安装的是WDCP,重启apache会失败,需要将mod_encoding.so复制到/www/wdlinux/httpd-2.2.22/modules下,
命令:
-
-
cp /usr/lib/httpd/modules/mod_encoding.so /www/wdlinux/httpd-2.2.22/modules
复制代码
Nginx:
一、确定你的Linux系统是UTF编码,Root登录SSH:
-
-
env|grep LANG
-
LANG=en_US.UTF-8
复制代码
二、NGINX配置文件里默认编码设置为utf-8
-
-
server
-
{
-
listen 80;
-
server_name xxxx.com ;
-
index index.html index.htm index.php;
-
root /usr/local/nginx/html/inginx.com;
-
charset utf-8;
-
}
复制代码
三、如果使用putty
windows –> translation –>UTF-8
mkdir 中文目录名
echo ‘中文目录名’ > 中文目录名/中国.html
四、如果是用securecrt 上传文件,请选择 回话–>外观–UTF-8
如果是FTP软件也将默认编码设置为TUF-8
五、如果上传的文件名出现乱码显示
执行
-
-
for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done
复制代码
完毕。