标题: [教程] Apache、NGINX支持中文URL图片、文件名的终极解决方案 [打印本页]
作者: vzandy 时间: 2013-3-15 15:34 标题: Apache、NGINX支持中文URL图片、文件名的终极解决方案
本帖最后由 vzandy 于 2013-3-15 15:40 编辑
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
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组件
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目录,可以用
找出这个目录的路径
注意把/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
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
复制代码完毕。
以上都是在互联网收集整理。已经测试过完全没有问题, 上次我在论坛发过两次求助中文URL教程,得到的回复寥寥无几,管理员的回答也有点看不懂,就自己变摸索变找教程了
作者: admin 时间: 2013-3-16 12:42
很好
作者: heshiqi 时间: 2013-3-21 22:23
收藏了,呵呵
作者: 纯洁滴色魔 时间: 2013-3-25 17:28
回复 1# vzandy
话说我找到了三个这文件肿么办???/www/wdlinux/wdapache/conf/httpd.conf
/www/wdlinux/httpd-2.2.22/conf/original/httpd.conf
/www/wdlinux/httpd-2.2.22/conf/httpd.conf
作者: csuper 时间: 2013-7-21 11:07
这个好 希望老大在下个版本中集成
作者: aleyy 时间: 2013-11-3 07:12
问一下楼主,我的Apache 64位 下 按照你的做法出错,貌似路径问题
cp -p /usr/sbin/apxs /usr/bin 怎么找不到/usr/sbin/apxs 呢? /usr/sbin/下没有apxs啊
作者: admin 时间: 2013-11-4 20:18
在/www/wdlinux/apache/sbin/下
作者: aleyy 时间: 2013-11-8 00:43
本帖最后由 aleyy 于 2013-11-8 00:44 编辑
回复 7# admin
老大,帮忙看下哪里出错了,谢谢!64位Apache 下 第三步 还是出错,
命令代码:
- 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 /www/wdlinux/apache/sbin/apxs /usr/bin
- ./configure --with-apxs=/www/wdlinux/apache/sbin/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 /www/wdlinux/httpd-2.2.22/modules
复制代码
运行后还是提示错误:
[root@ebs-216 mod_encoding_64]# make
/www/wdlinux/apache/sbin/apxs -c -I/usr/include -liconv_hook -liconv -liconv mod_encoding.c
make: /www/wdlinux/apache/sbin/apxs 命令未找到
make: *** [mod_encoding.so] 错误 127
[root@ebs-216 mod_encoding_64]# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -Llib -liconv_hook
gcc: mod_encoding.o 没有那个文件或目录
[root@ebs-216 mod_encoding_64]# cp mod_encoding.so /www/wdlinux/httpd-2.2.22/modules
按照老大说的,貌似这个/www/wdlinux/apache/sbin/apxs 命令还是没有找到啊
作者: admin 时间: 2013-11-8 17:16
应该是
/www/wdlinux/apache/bin/apxs
作者: hurri 时间: 2014-9-24 19:54
回复 9# admin
apxs 进不去啊
然后第3步起,就看不懂了
作者: hackhyj 时间: 2014-9-26 21:05
Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397 Linux php 技术交流 49442397
作者: impig33 时间: 2014-10-29 12:37
我的环境:
当前版本: wdcp_v2.5.11(20140926)
操作系统:Linux 2.6.18-308.el5 64位
apache目录:/www/wdlinux/httpd-2.2.24
原贴中有的符号由于被转码,版本升级导致的目录不对,我经过试验已经成功:
使用原贴的错误:
11. cp -p /www/wdlinux/apache/bin/apxs /usr/bin
15. cp mod_encoding.so /www/wdlinux/httpd-2.2.24/modules //应该使用apache的modules目录而不是wdlinux的目录
下面是对的方法:- 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 /www/wdlinux/apache/bin/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 /www/wdlinux/httpd-2.2.24/modules
复制代码 解决!
希望版猪整理一个官方的,搞这玩意太花时间,一不注意全部挂掉,干脆直接加到新版本中去。
感谢楼主及各位朋友 !
作者: impig33 时间: 2014-10-29 12:38
回复 10# hurri
看12楼已解决。
作者: impig33 时间: 2014-10-29 12:39
回复 8# aleyy
看12楼已解决。
作者: linfanmz 时间: 2014-11-20 12:00
回复 12# impig33
您好,我是不太懂linux,在学习中。我是centos 6.5 32位环境,你写的我大概明白,不过不知道怎么应用到我的系统里去。可以出个32位版本的脚本么?
作者: caopeiwei 时间: 2015-5-30 11:45
我的环境:
当前版本: wdcp_v2.5.11(20140926)
操作系统:Linux 2.6.18-308.el5 64位
apache目录:/www ...
impig33 发表于 2014-10-29 12:37
make之后还是无法生成mod_encoding.o提示
apxs:Error: Command failed with rc=65536
.
make: *** [mod_encoding.so] Error 1
作者: caopeiwei 时间: 2015-5-30 12:06
我的环境:
当前版本: wdcp_v2.5.11(20140926)
操作系统:Linux 2.6.18-308.el5 64位
apache目录:/www ...
impig33 发表于 2014-10-29 12:37
好像是编码错误,我还没解决呢
作者: 疆飞 时间: 2015-6-2 09:09
非常不建议使用中文目录! 会有很多莫名其妙的问题出来
作者: rush 时间: 2016-1-3 18:58
cannot change permissions of `/usr/lib/libiconv_hook.so.1.0.0': Permission denied
作者: rush 时间: 2016-1-3 19:30
我的环境:
当前版本: wdcp_v2.5.11(20140926)
操作系统:Linux 2.6.18-308.el5 64位
apache目录:/www ...
impig33 发表于 2014-10-29 12:37
make && make install 权限不够啊。
欢迎光临 WDlinux官方论坛 (http://wdlinux.cn/bbs/) |
Powered by Discuz! 7.2 |