【问题标题】:PHP Sessions disappear on htaccess redirect condition - In Chrome onlyPHP 会话在 htaccess 重定向条件下消失 - 仅在 Chrome 中
【发布时间】:2012-09-17 22:47:06
【问题描述】:

我的项目挂在这个问题上。

我的 htaccess 中有这段代码来实现一个平面 url 系统

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 上失败。

【问题讨论】:

  • 这可能也值得在ServerFault 上提问?
  • 你还有其他规定吗?
  • 使用的是同一个子域吗? (例如“www”)
  • 是的,我已设置此附加代码以确保会话 cookie 位于正确的路径和域中。 ini_set('session.cookie_domain', '.bostonairporttaxicab.com'); ini_set('session.cookie_path', 'bostonairporttaxicab.com/');
  • @JonLin 我没有其他规则。这就是我在 .htaccess 文件中的全部内容。 :(

标签: php .htaccess session


【解决方案1】:

根据您的评论:

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

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

【讨论】:

  • '/' 是我尝试过的默认设置。由于它不起作用,人们建议使用另一个。我不得不改变整个概念。
【解决方案2】:

如果它不能在 Chrome 上运行,那是你的 Chrome 的错......浏览器无法对 .htaccessSESSION 执行任何操作,因为它们在服务器端运行。您应该通过 Chrome 从其他计算机上检查它,如果它可以正常工作,那么这正是您的 Chrome 故障,我以某种方式确定这一点......

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2011-03-02
      • 1970-01-01
      • 2013-06-19
      相关资源
      最近更新 更多