196 Apache UTF-8 Encoded URL Problem

[现象描述]

当你在IE的浏览器中输入URL地址的时候,IE会以UTF-8对其进行编码(除非在高级设置里面取消选项“总是以UTF-8发送URL”),由此,全面支持国际化语言。
但是对于一般配置的apache服务器,默认并不会支持UTF-8编码的URL,因此当你发送包含中文的URL(例如:http://***.***.***.***/音乐.***)时,会返回 404 Not Found 错误。
一般的解决方法是将发送URL请求中的中文采用URLEncode()进行转换,形成apache能够支持的URL格式(例如:http://***.***.***.***/%D2%F4%C0%D6.***),但是这样解决的问题是,如果下载的是mp3的话,下载链接中包含乱码,可能会导致某些播放器不能正确显示歌名,进而导致不能正确使用迷你歌词。
综上所述,最好的解决方案是使apache支持直接包含中文的URL。

[解决方法]

对于此问题,apache官方并没有发布相应的解决方案,但是在网上却于很早以前已经解决了此问题,方法是使用由第三方发布的一个转换模块,籍由apache提供的第三方模块安装工具apxs安装即可。(ps:其实此模块代码极少,就是做个转换:P,主要是同apache的接口结合比较麻烦)具体步骤描述如下:

1、首先要确保apache服务器在编译的时候安装了apxs,并且configure的时候采用了选项 –enable-so(apache 2.0)或者 –enable-module=so(apache 1.0) (请务必注意版本,如果写错,提示不容易发现,最终会导致没法编入模块)。
采用以上编译选项会使apache支持第三方插件。
另外,如果apche服务器是使用的安装系统时候自带的(以RedHat 9.0为例),则没有apxs这个软件,请先行安装apache-devel软件包,并且此软件包的版本务必与你apache服务器的版本一致。

2、下载并安装mod_utf8软件包(目前版本1.3)
注意选对apache1.*和apache2.*,然后执行:
apxs -a -i -c mod_utf8.c

3、重启apache服务器

当然实际操作过程中,可能会遇到各种各样的问题,因为这个软件包还并不是特别的完美,因此需要具备一定的排错能力,软件包由C语言书写,下载源代码,请点击这里

考试前,搞定一个问题—configure参数

大家都知道,Linux下用源码包安装软件,一般会用到./configure命令,其后经常跟很多参数,但是安装完后:
1、忘掉参数;
2、本身就不是你装的;
这下若想查出参数就够你受的了:(
虽然现在还没有想到什么解决的办法,不过今天在QQ上问了问小林子倒是有一个解决部分参数问题的办法,现总结如下:

参数限制

一般为查询是否加载某模块,本例为mod_so.c

方法

原来使用过文件倾印工具的会比较熟悉一点,(例如原来在borland的C++ Builder下的TDump)
实际上objdump就是Linux下的文件倾印工具

$objdump -T /path/httpd | grep so

080920a0 g DO .data 00000038 Base so_module

可见,–with-module-so

BTW

谁能告诉我196的apache是谁装的?我吗?你吗?实在记不得了,想问他/我几个问题!!!