PHP会话在htaccess重定向条件下消失 - 仅限Chrome

时间:2012-09-26 10:20:06

标签: php .htaccess session

我的项目依赖于这个问题。

我在htaccess中使用此代码来实现平面网址系统

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/page.php
RewriteRule (.*) page.php?pid=$1 [QSA]

虽然此代码存在,但我无法访问在任何其他页面上的一个页面上创建的会话变量。即使页面是静态的.php页面,没有经过重定向,会话也会消失。通常这个代码会以某种方式阻止会话。

我设置了会话cookie路径和域以确保领域正确,但它不起作用。

我衷心感谢任何帮助。

有趣的是它只能在Chrome上失败。

3 个答案:

答案 0 :(得分:0)

根据你的评论:

  

我已设置此附加代码以确保会话cookie在其中   正确的道路和领域。函数ini_set( 'session.cookie_domain',   '.bostonairporttaxicab.com');函数ini_set( 'session.cookie_path',   'bostonairporttaxicab.com /');

我认为你的cookie_path是错误的。它不应包含域名,因为路径是尾随域名的部分。尝试将其设置为/并查看是否可以修复它。也许Chrome会以不同于其他浏览器的方式解释它,因此拒绝您的会话cookie。

答案 1 :(得分:0)

如果它无法在Chrome上运行,那么这是您的Chrome错误...浏览器无法对.htaccessSESSION执行任何操作,因为它们在服务器端运行。您应该通过Chrome从其他计算机上查看它,如果它正在运行那么它就是您的Chrome故障,我对此有点确定......

答案 2 :(得分:0)

您是否在每个页面上开始了会话。

你必须写session_start();在php之后的文件顶部的函数

Htaccess文件在会话中不起任何作用,因为您的会话变量在您的会话处于活动状态之前一直存在。