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
在实现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
发表评论
- 浏览: 12398 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
我的相册
001
共 3 张
共 3 张
最近加入圈子
最新评论
-
cas-client-3.1.1的客户端 ...
我按照你的配置怎么都跑不起来,现在很急啊,你实地配成功过没有。另外3.1.1的单 ...
-- by luojunlt -
在frameset中的登陆界面se ...
没看明白什么意思!!o(∩_∩)o...能力问题?
-- by guojingxf -
cas-client-3.1.1的客户端 ...
不是,就是一个spring容器上下文管理的xml文件
-- by kj2ff -
cas-client-3.1.1的客户端 ...
请问下面的casContent.xml是什么文件?acegi的配置文件么?
-- by yangeou -
linux 中文显示乱码解决办 ...
好东西啊,正在找这个,呵呵
-- by flysky9820000






评论排行榜