Mod rewrite apache2 tomcat6 mod_用漂亮URL重写丢失用户会话信息-清空购物车

Mod rewrite apache2 tomcat6 mod_用漂亮URL重写丢失用户会话信息-清空购物车,mod-rewrite,apache2,tomcat6,mod-proxy,mod-jk,Mod Rewrite,Apache2,Tomcat6,Mod Proxy,Mod Jk,我用mod_jk和mod_proxy都试过了,得到了相同的结果 使用此mod_重写规则可以正常工作: RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [R,L] 问题是浏览器的地址行中显示了丑陋的新URL/blah/blah/blah?blah=l2vb&party_name,这是我希望避免的。似乎是[R]标志实现了这一点 以下规则隐藏丑陋的URL并仅显示新的漂亮URL: RewriteRul

我用mod_jk和mod_proxy都试过了,得到了相同的结果

使用此mod_重写规则可以正常工作:

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [R,L]
问题是浏览器的地址行中显示了丑陋的新URL
/blah/blah/blah?blah=l2vb&party_name
,这是我希望避免的。似乎是
[R]
标志实现了这一点

以下规则隐藏丑陋的URL并仅显示新的漂亮URL:

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [P,L]
注意:这里唯一的区别是
[]
之间末尾的标志

问题是,如果用户的购物车中已经有东西,它就会被清空。不知何故,他们的连接会话(或者不管它是什么——这里有点超出我的深度!)被重新初始化,所以他们似乎是从零开始的


我尝试过其他几种标志组合,如
[PT,L]
[R,PT]
等,但迄今为止运气不佳。

[R]
标志意味着302重定向代码,这显然会改变浏览器中的URL

我认为您需要
QSA
标志:

RewriteRule ^/(.*)\-blah.html$ /blah/blah/blah?blah=l2vb&party_name=$1 [QSA,L]
QSA
标志将保留现有的查询字符串(更准确地说,将其附加到新的URL中)。。否则在处理查询字符串时会丢失。我认为会话ID或其他信息可能通过查询字符串传递。。当URL被重写时,它就会丢失,所以服务器会创建新的会话。如果是这样的话,那么以上这些应该可以解决你的问题

Apache文档: