2008-04-08

一个apache重写的应用(补充)

关键字: apache rewrite cookie
之前的网站渠道统计的设计有些糟糕,感觉可以直接来用apache实现,已经做了一些测试,写如下心得:

在实现apache rewrite的时候,是可以把一些需要的信息写入到cookie中的

httpd.conf:

<VirtualHost *:80>
ServerName aa.my.com
RewriteEngine On
RewriteRule ^/ref/(.*)$ /bb [R,L,NC,CO=Visitor_PID:$1:my.com:60,CO=Visitor_Referer:%{HTTP_REFERER}:my.com:60]
RewriteRule ^\/$ /bb [R,L]
JkMount /* examples
</VirtualHost>

以上的写法中,所有的aa.my.com/ref/st_xxx的请求都被转到/bb上了,这个对应着后面tomcat的应用,并且要向客户端写入两个cookie,分别是Visitor_PID = st_xxx,Visitor_Referer = http头里的referer,以上写法没错,但是实际操作中会发现只有Visitor_PID的cookie写进了客户端!经过反复debug发现,因为http header里面的referer的值通常是 http:或者https:开头,所以带入后的字符串就变成了CO=Visitor_Referer:http://xxx.xxxx.com:my.com:60,都是http后面的:搞得鬼,难怪会写不进去,估计apache解析的时候就没解析明白,如果你替换其他的系统变量,都是可以写进去的。以上的解决方案更完美些,不需要tomcat端再去设置渠道号,直接在网站全局内即可拿到cookie中的渠道号,方便与业务数据绑定!

这个冒号问题目前我没有解决,希望有知道的高手不吝赐教!谢谢!

关于R,L,NC,CO的作用可以参考apache rewrite文档:
http://www.cnfan.net/manual/Apache2.2/mod/mod_rewrite.html
评论
发表评论

您还没有登录,请登录后发表评论

kj2ff
搜索本博客
我的相册
39723bb3-0a9b-3357-b6b8-b9ae94144985-thumb
001
共 3 张
最近加入圈子
存档
最新评论