去评论
dz插件网

dz站长在linux环境Apache不支持中文名称文件下载的解决办法

admin
2020/11/12 22:19:01
dz站长在linux环境Apache不支持中文名称文件下载的解决办法:

前提:mod_headers已经静态编译到apache中。
步骤:
1、下载相关文件并解压
WebDAV Resources JP有Apache2对应的mod_encoding的最新版本下载
# wget http://webdav.todo.gr.jp/downloa ... .c.apache2.20040616
# wget http://webdav.todo.gr.jp/download/mod_encoding-20021209.tar.gz
# tar zxfv mod_encoding-20021209.tar.gz
# cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c
2、iconv_hook编译和安装
安装mod_encoding前首先需要安装iconv_hook。
$ cd mod_encoding-20021209/lib
$ ./configure
$ make
# make install
完成上面操作后,iconv_hook相关so文件放到/usr/local/lib下面。
要操作系统系统能够搜索到该so文件,需要完成一下几行操作
打开/etc/ld.so.conf文件,添加一行指向iconv_book的所在路径,即"/usr/local/lib"
# vi /etc/ld.so.conf
/usr/local/lib[Esc]、[:]、[w]、[q] 保存退出。
# PATH="$PATH:/sbin"
# ldconfig
3、mod_encoding模块的编译
进入mod_encoding-20021209.tar.gz的解压目录,即mod_encoding-20021209
# ./configure --with-apxs=/usr/sbin/apxs --with-iconv-hook=/usr/local/include
# make
#ls -l mod_encoding.o
查看是否已经生成了mod_encoding.o文件,继续操作,然则自己baidu或google下。
# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook
生成mod_encoding.so文件,将该文件拷贝到你的模块存放目录,一般为${APACHE_HOME}/modules/
# cp mod_encoding.so /usr/local/apache/modules/mod_encoding.so
httpd.conf的设定(以下的配置,仅供参考)
LoadModule encoding_module modules/mod_encoding.so
<IfModule mod_headers.c>
Header add MS-Author-Via "DAV"
</IfModule>
<IfModule mod_encoding.c>
  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
</IfModule>
4、重启apache,如果没提示错误。
您可以上传中文文件到您的web目录下。
然后在浏览器中输入http://域名/上传的中文文件名 即可浏览、下载。