时间: 2013-09-01 / 分类: WEB后端编程 - 开发与实践 / 浏览次数: / 0 个评论 发表评论
Linux下Apache服务器下的中文文件名或者中文参数的问题
项目前端开发的架构
12条经典摄影技巧
WEB前端开发中的一些编程风格和书...
CSS Hack浏览器兼容IE6+IE7+IE8+IE9+FF

在Linux下Apache服务器下显示中文文件名不是那么的理想,同样的,有中文参数也是显示的很不理想。

但是这是一个可解的问题,主要的原因是存在于编码上。

同样面临着和中文一样编码同样的问题,小日本之前研究过有方法。

我的环境 CentOS 5.6 32位Apache2.2.24,步骤如下:

  1. 首先下载如下文件
    #wget http://webdav.todo.gr.jp/download/-20021209.tar.gz
    或者 #wget http://dl.amiku.cn//env-installation/_mod_encoding_chinese/mod_encoding-20021209.tar.gz#wget http://webdav.todo.gr.jp/download/experimental/mod_encoding.c.apache2.20040616
    或者 #wget http://dl.amiku.cn/linux/env-installation/apache_mod_encoding_chinese/mod_encoding.c.apache2.20040616#wget http://www.aconus.com/~oyaji/faq/mod_encoding.c-apache2.2-20060520.patch
    或者 #wget http://dl.amiku.cn/linux/env-installation/apache_mod_encoding_chinese/mod_encoding.c-apache2.2-20060520.patch
  2. 解压打补丁的过程:
    #tar zxvf mod_encoding-20021209.tar.gz
    #cp mod_encoding.c.apache2.20040616 mod_encoding-20021209/mod_encoding.c
    #cp mod_encoding.c-apache2.2-20060520.patch mod_encoding-20021209/mod_encoding.c-apache2.2-20060520.patch
    #cd mod_encoding-20021209
    #patch -p0 < mod_encoding.c-apache2.2-20060520.patch
  3. iconv_hook编译和安装:
    #cd lib
    #./configure
    #make && make install
  4. 将当前lib目录的iconv_hook相关的so文件复制到/usr/local/lib目录
    #cp iconv_hook*.o /usr/local/lib
  5. 为了让操作系统能搜索到这些so文件
    #vi /etc/ld.so.conf
    直接添加一行 /usr/local/lib 到 /etc/ld.so.conf 中#PATH=”$PATH:/sbin”
    #ldconfig
  6. 切换到mod_encoding-20021209目录
    #cd ../
    #./configure –with-apxs=/usr/local/apache2/bin/apxs –with-iconv-hook=/usr/local/include
    #make
    #ls -l mod_encoding.o
    查看是否已经生成了mod_encoding.o文件,如果是,则make成功继续下边的操作
    #gcc -shared -o mod_encoding.so mod_encoding.o -Wc -Wall -L /usr/local/lib -Llib -liconv_hook
    如果编译出错的时候,请在mod_encoding.c文件中加上regex.h头,也就是加入
    #include <regex.h> 一行。然后再编译。
  7. 将编译好的mod_encoding.so复制到如下对应的目录中,也可以将该so文件根据自己的情况存放在其它路径
    #cp mod_encoding.so /usr/local/apache2/modules/
  8. 在apache的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>
  9. 自此,可以在Linux的Apache环境很轻松的访问中文文件名,如:
    http://test.amiku.cn/%d6%d0%ce%c4%b5%c4php%ce%c4%bc%fe.php
    http://test.amiku.cn/%b2%e2%ca%d4.html
      站点地图 | 关于我 | 返回顶部
    Copyright © 2001-2013 { amiku.cn | zhangshunjin.com }. Powered by 

    阿米酷

    张顺金


    浙ICP备11002820号-1