theoforce 发表于 2018-11-20 08:04:16

Apache的URL支持中文的设置方法

  测试的环境是:centos-64位服务器操作系统
  apache-2.0.59 php-5.2.5 mysql-5.0.45 zend-3.3
  1、下载相关文件并解压
  WebDAV Resources JP有Apache2对应的mod_encoding的最新版本下载
  # wget http://webdav.todo.gr.jp/download/experimental/mod_encoding.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下面。
  /usr/local/include/iconv_hook
  要操作系统系统能够搜索到该so文件,需要完成一下几行操作
  打开/etc/ld.so.conf文件,添加一行指向iconv_book的所在路径,即"/usr/local/lib"
  # vi /etc/ld.so.conf
  /usr/local/lib、[:]、、 保存退出。
  # PATH="$PATH:/sbin"
  # ldconfig
  3、mod_encoding模块的编译
  进入mod_encoding-20021209.tar.gz的解压目录,即mod_encoding-20021209
  # ./configure --with-apxs=/user/apache/bin/apxs --with-iconv-hook=/usr/local/include
  # make
  #ls -l mod_encoding.o
  #./configure --with-apxs=/user/apache/bin/apxs --with-iconv-hook=/usr/local/include
  错误提示:
  make: *** Error 1
  原因很明显,是regex.h未包含进来,解决办法也很简单,用vi打开mod_encoding.c,
  在#include 那一段的前面加上如下一行:
  #include
  查看是否已经生成了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 /user/apache/modules/mod_encoding.so
  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
  AddClientEncoding "Microsoft-WebDAV*" UTF-8 GBK GB2312
  
  4、重启apache,如果没提示错误。
  您可以上传中文文件到您的web目录下。

页: [1]
查看完整版本: Apache的URL支持中文的设置方法