Apache服务器的RewriteMap
在apache的环境下,rewrite还真是生活之友啊,时不时就得用上。前些日子有个需求,要将url重新转一转。 什么情况?原来的url 转换后的url 需要把粗体部分的url进行urlencode,能看出上面的字符"?&="都分别转义过,作为参数发给另外一个url。那么这时候请出rewrite还真是最合适不过了。 坎坷的Rewrite经历查查rewrite手册,俺这才知道,转义这活,非得派出RewriteMap的map function才能做的比较漂亮。现在只有四个内部map function可供差遣:
那么很快就有了第一个rewrite出现: 注:这里的int不是intger的意思,它是internal的缩写,表示调用内部函数。 看上去非常简单,跑起来貌似也正....常?且慢,俺打开RewriteLog一瞅,形式不容乐观啊,"&"字符通通没有转义。看来是失败了,爬到狗狗上翻了一下,貌似escape对"?="之类的特殊字符是不做转义的,晕。 RewriteMap到底接着细看apache的rewrite手册,发现RewriteMap还支持自定义脚本,那么还得使出俺的看家绝技——php了。首先弄一个能转义的php,必须非常简单,复杂了apache容易挂掉,写出来发现想复杂都挺难啊: /usr/local/bin/escape.php PHP:
在这个脚本里可别使用php:://stdin之类的,具体原因查php手册。相应的,rewrite规则如下: rewrite规则没有太大的改变,prg表示使用自定义脚本。现在这个版本总算正常运 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |