
標(biāo)題: [教程] Apache、NGINX支持中文URL圖片、文件名的終極解決方案 [打印本頁]
作者: vzandy 時間: 2013-3-15 15:34 標(biāo)題: Apache、NGINX支持中文URL圖片、文件名的終極解決方案
本帖最后由 vzandy 于 2013-3-15 15:40 編輯
Apache(32位):
安裝環(huán)境:CentOS 5.6 + Apache 2.2.15
安裝結(jié)果:安裝后支持“中文圖片、文件名”鏈接直接打開
以下為安裝過程:
1、下載安裝包
- wget ftp://ftp.aconus.com/fc5/mod_encoding/mod_encoding-2.2.0-1.i386.tar.gz
復(fù)制代碼
2、直接解壓
- tar zxvf mod_encoding-2.2.0-1.i386.tar.gz
復(fù)制代碼
看到2個rpm安裝包,進(jìn)行安裝
- rpm -ivh iconv_hook-1.0.0-1.i386.rpm
- rpm -ivh mod_encoding-2.2.0-1.i386.rpm
復(fù)制代碼
3、用 find / -name httpd.conf 找到apache配置文件httpd.conf,vi編輯加入以下內(nèi)容
- 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
復(fù)制代碼
保存退出
4、重啟apache
5、完成!
注:如果安裝的是WDCP,重啟apache會失敗,需要將mod_encoding.so復(fù)制到/www/wdlinux/httpd-2.2.22/modules下,
命令:
- cp /usr/lib/httpd/modules/mod_encoding.so /www/wdlinux/httpd-2.2.22/modules
復(fù)制代碼
Apache(64位):
————————————————————-
此方案用于解決Apache軟件對中文網(wǎng)址、中文圖片、文件名的支持問題。
通過測試環(huán)境:64位CentOS5.5 + Apache2.2.15
————————————————————-
下載 mod_encoding_64.tar.gz
源碼包由吳世昌整理,已經(jīng)包含了apache2.2所需的補(bǔ)丁。
2011.9.20由Hostloc.com的Captain修改補(bǔ)充。
————————————————————-
1、安裝gcc組件
2、下載壓縮包
- wget http://d.nicwind.com/files/mod_encoding_64.tar.gz
復(fù)制代碼
3、將壓縮包解壓,進(jìn)行編譯
- 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
復(fù)制代碼
注:/usr/lib/httpd/modules為apache的modules目錄,可以用
找出這個目錄的路徑
注意把/usr/lib/httpd/modules改成你的apache模塊存放路徑。
4、完成以上操作后,再修改apache的配置文件(可以用find / -name httpd.conf,找出httpd.conf文件的路徑),把下面的內(nèi)容添加到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
復(fù)制代碼
保存,退出
5、重啟apache
6、完成
注:如果安裝的是WDCP,重啟apache會失敗,需要將mod_encoding.so復(fù)制到/www/wdlinux/httpd-2.2.22/modules下,
命令:
- cp /usr/lib/httpd/modules/mod_encoding.so /www/wdlinux/httpd-2.2.22/modules
復(fù)制代碼Nginx:
一、確定你的Linux系統(tǒng)是UTF編碼,Root登錄SSH:
- env|grep LANG
- LANG=en_US.UTF-8
復(fù)制代碼二、NGINX配置文件里默認(rèn)編碼設(shè)置為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;
- }
復(fù)制代碼
三、如果使用putty
windows –> translation –>UTF-8
mkdir 中文目錄名
echo ‘中文目錄名’ > 中文目錄名/中國.html
四、如果是用securecrt 上傳文件,請選擇 回話–>外觀–UTF-8
如果是FTP軟件也將默認(rèn)編碼設(shè)置為TUF-8
五、如果上傳的文件名出現(xiàn)亂碼顯示
執(zhí)行
- for f in `ls *.html` ; do mv $f `ls $f|iconv -f GBK -t UTF-8`; done
復(fù)制代碼完畢。
以上都是在互聯(lián)網(wǎng)收集整理。已經(jīng)測試過完全沒有問題, 上次我在論壇發(fā)過兩次求助中文URL教程,得到的回復(fù)寥寥無幾,管理員的回答也有點看不懂,就自己變摸索變找教程了
作者: admin 時間: 2013-3-16 12:42
很好
作者: heshiqi 時間: 2013-3-21 22:23
收藏了,呵呵
作者: 純潔滴色魔 時間: 2013-3-25 17:28
回復(fù) 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 編輯
回復(fù) 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
復(fù)制代碼
運行后還是提示錯誤:
[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
應(yīng)該是
/www/wdlinux/apache/bin/apxs
作者: hurri 時間: 2014-9-24 19:54
回復(fù) 9# admin
apxs 進(jìn)不去啊
然后第3步起,就看不懂了
作者: hackhyj 時間: 2014-9-26 21:05
Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397 Linux php 技術(shù)交流 49442397
作者: impig33 時間: 2014-10-29 12:37
我的環(huán)境:
當(dāng)前版本: wdcp_v2.5.11(20140926)
操作系統(tǒng):Linux 2.6.18-308.el5 64位
apache目錄:/www/wdlinux/httpd-2.2.24
原貼中有的符號由于被轉(zhuǎn)碼,版本升級導(dǎo)致的目錄不對,我經(jīng)過試驗已經(jīng)成功:
使用原貼的錯誤:
11. cp -p /www/wdlinux/apache/bin/apxs /usr/bin
15. cp mod_encoding.so /www/wdlinux/httpd-2.2.24/modules //應(yīng)該使用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
復(fù)制代碼 解決!
希望版豬整理一個官方的,搞這玩意太花時間,一不注意全部掛掉,干脆直接加到新版本中去。
感謝樓主及各位朋友 !
作者: impig33 時間: 2014-10-29 12:38
回復(fù) 10# hurri
看12樓已解決。
作者: impig33 時間: 2014-10-29 12:39
回復(fù) 8# aleyy
看12樓已解決。
作者: linfanmz 時間: 2014-11-20 12:00
回復(fù) 12# impig33
您好,我是不太懂linux,在學(xué)習(xí)中。我是centos 6.5 32位環(huán)境,你寫的我大概明白,不過不知道怎么應(yīng)用到我的系統(tǒng)里去?梢猿鰝32位版本的腳本么?
作者: caopeiwei 時間: 2015-5-30 11:45
我的環(huán)境:
當(dāng)前版本: wdcp_v2.5.11(20140926)
操作系統(tǒng):Linux 2.6.18-308.el5 64位
apache目錄:/www ...
impig33 發(fā)表于 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
我的環(huán)境:
當(dāng)前版本: wdcp_v2.5.11(20140926)
操作系統(tǒng):Linux 2.6.18-308.el5 64位
apache目錄:/www ...
impig33 發(fā)表于 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
我的環(huán)境:
當(dāng)前版本: wdcp_v2.5.11(20140926)
操作系統(tǒng):Linux 2.6.18-308.el5 64位
apache目錄:/www ...
impig33 發(fā)表于 2014-10-29 12:37 
make && make install 權(quán)限不夠啊。
歡迎光臨 WDlinux官方論壇 (http://www.fsowen.com/bbs/) |
Powered by Discuz! 7.2 |