使用mod_encoding使apache支持中文附件名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用mod_encoding使apache支持中文附件名相关的知识,希望对你有一定的参考价值。

     本地测试环境为apache2.2.31,php5.3.27,操作系统为RHEL6.4x86_64,使用mod_encoding工具使apache支持中文附件名,比如http://www.example.com/合同.rar

1.先修改操作系统的语言环境,使linux本地支持中文,可以查看中文文件名

修改/etc/sysconfig/i18n文件
将LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
修改为

LANG="zh_CN.GB18030"
LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"
SUPPORTED="zh_CN.UTF-8:zh_CN:zh:en_US.UTF-8:en_US:en"
SYSFONT="lat0-sun16"

2.源码编译mod_encoding

下载安装文件和补丁

wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
wget 
 tar xf mod_encoding-20021209.tar.gz 
 cd mod_encoding-20021209

将补丁文件mod_encoding.c.apache2.20040616覆盖本地目录中的mod_encoding.c

 cp ../mod_encoding.c.apache2.20040616 ./mod_encoding.c

直接在软件目录mod_encoding-20021209下载第二个补丁文件

 wget http://www.aconus.com/~oyaji/faq/mod_encoding.c-apache2.2-20060520.patch

应用补丁文件

patch -p0 <mod_encoding.c-apache2.2-20060520.patch

编译安装前需要首先安装iconv_hook,否则会报错

进入lib目录

cd lib/
#pwd
/server/tools/mod_encoding-20021209/lib
 ./configure --prefix=/usr
 make
 make install
 ldconfig

编译安装mod_encoding,我的apache目录为/application/apache,需要安装apache时加入apxs模块,编译时无需make install

cd ..
 ./configure --with-apxs=/application/apache/bin/apxs --with-iconv-hook=/usr/include
 make
  gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -Llib -liconv_hook

将生成的mod_encoding.so模块复制到apache的modules目录

cp mod_encoding.so /application/apache/modules/



3.修改apache配置文件

需要headers_module支持,查看apache已经编译的模块

# apachectl -l|grep mod_head
  mod_headers.c

我的apache本身已经带了,就不需要添加此模块了,如果没有,需要在httpd.conf中加入下面一行,前提是模块文件存在

LoadModule headers_module modules/mod_headers.so

修改apache主配置文件httpd.conf,加入如下内容

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

第2-8行可以放到配置文件末尾

检查语法,并重启apache,测试中文附件能否正常下载,相关附件也可以直接从本文中下载,已经打包

以上是关于使用mod_encoding使apache支持中文附件名的主要内容,如果未能解决你的问题,请参考以下文章

ApacheNGINX支持中文URL

Apache+mod_encoding解决URL中文编码问题

Apache服务器URL访问中文编码设置

yum 安装apache php 使php支持memcached扩展

apache+php项目部署

翻译:.NET 对Apache®Spark™开业大数据分析工具的支持