在.htaccess中使用rewriteRule时会删除会话变量

时间:2012-09-05 16:43:09

标签: php .htaccess mod-rewrite

我发生了一件奇怪的事情。如果我转到我网站的主要登录页面,然后点击并将产品添加到购物车,则会保存名为“cartID”的PHP会话变量。这样,客户可以继续向购物车添加商品,而不会丢失购物车商品。

如果我绕过主要目标网页并直接转到产品页面(例如通过书签或Google搜索),那么将该项目添加到购物车,尽管会话变量'cartID'已创建,一旦客户离开购物车页面,“cartID”变量丢失了......这会清空他们的购物车。

向购物车添加商品的两种方法都使用.htaccess中的rewriteRule:

  

RewriteRule ^ g(。)c(。)s(。)ss(。)p(。)/(。) .htm $ onlineOrder.php?grpid = $ 1& catSel = $ 2& subCat1ID = $ 3& subCat2ID = $ 4& prodSel = $ 5& $ 6 [QSA]

哪个工作正常,但是如果客户没有首先进入主目标网页,那么当商品被添加到购物车时创建的'cartID'会话变量将在离开购物车页面时丢失。即使产品页面的两个链接完全相同。

如果直接进入产品页面,不知道为什么它不起作用?

1 个答案:

答案 0 :(得分:1)

最有可能的情况是,您的一个或多个网页可能会在调用session_start();之前发送输出。

确保在初始<?php之前没有行,空格或其他任何内容,并且在调用 session_start();之前没有输出任何内容(包括{{1}线,因为它们产生输出)。基本上,启动会话应该是您的脚本首先执行的操作之一,如果不是第一个。