让Apache支持中文目录
Apache自身并不支持中文目录,但是目前日本的webdev提供了mod_encoding插件来支持多字节目录。
在AS5和Everest0.5pre2版本上测试通过,记录如下:
1)首先确定安装了httpd-devel包。如果没有安装之
2)从官方分别下载基本包和补丁包
#wget http://webdav.todo.gr.jp/d…
#wget http://webdav.todo.gr.jp/d…
或者可以下载文末提供的已经打好补丁的压缩包
3)解压基本包,并用mod_encoding.c.apache2.20040616替代基本包里的mod_encoding.c
#tar -xzf mod_encoding-20021209.tar.gz
#cd mod_encoding-20021209
#cp -f ../mod_encoding.c.apache2.20040616 mod_encoding.c
4)编译安装iconv_look库
# cd mod_encoding-20021209/lib/
# ./configure && make && make install
#echo “/usr/local/lib” >>/etc/ld.so.conf.d/local.conf
#ldconfig
5)编译安装mod_encoding模块
#cd mod_encoding-20021209
#./configure –with-apxs=/usr/sbin/apxs –with-iconv-hook=/usr/local/include
#make & make install
注:如果5)步骤出现下面的报错
mod_encoding.c:235: error: ‘regex_t’ undeclared (first use in this function)
请在mod_encoding.c文件中加上regex.h头,也就是加入
#include
一行。然后再编译。
6)安装动态库
如果前面步骤都没有错误,则应该在当前目录能看到mod_encoding.o文件,接下来该目标文件做成共享的动态库
# gcc -shared -o mod_encoding.so mod_encoding.o -Wc,-Wall -L/usr/local/lib -Llib -liconv_hook
将生成的mod_encoding.so文件拷贝到Apache的动态模块库目录中去
cp mod_encoding.so /usr/lib/httpd/modules/
我们采用创建新的conf文件来加载该so文件
#cat >/etc/httpd/conf.d/cndir.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 UTF-8
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>
<CTRL+D>
当然SetServerEncoding UTF-8这样可以设置成你希望的默认编码,比如GBK,比如GB2312.
重启Apache。现在测试中文目录,看看效果。
mod_encoding下载
没有评论▼