求RewriteMap的escape功能的脚本

求RewriteMap的escape功能的脚本

我想利用mod_rewrite将url重写为另外的url。由于url中存在特殊字符(比如%   &   +   #   /   ?),所以想利用escape函数将特殊字符转为16进制,比如+   转换为%2b
我的apache配置如下
RewriteMap     escapecase         int:escape
RewriteRule   ^/([^/]+)/?     /f?kw=${escapecase:$1}   [PT]
但是我发现,实质上并没有起作用
观察的日志   (2)   rewrite   /+   ->   /f?kw=     说明escape没有转换

原因1:可能我的apache版本不支持AllowEncodedSlashes

所以求一perl脚本,实现将$1中的特殊字符转换为16进制,比如j++就转换为j%2b%2b。我的配置如下:
RewriteMap     myescape     prg:/home/forum/apache/myescape.pl
RewriteRule   ^/([^/]+)/?     /f?kw=${myescape:$1}   [PT]

求myescape.pl的写法
由于我不懂perl,不知道$|   $_到底是什么含意
#!/path/to/perl

$|   =   1;
while( <> ){
s|^c++/|c%2b%2b/|;
print   $_;
}
为什么我传入http://172.18.101.248/c%2b%2b,到了apcache就成了http://172.18.101.248/c++
AllowEncodedSlashes   Off   On我都试过。
尝试更新你的Apache版本
不会,帮顶