【问题标题】:Get PHP $_SESSION data in .htaccess for LiteSpeed cache在 .htaccess 中为 LiteSpeed 缓存获取 PHP $_SESSION 数据
【发布时间】:2018-08-03 13:26:55
【问题描述】:

我需要将来自$_SESSION 的数据从 PHP 文件发送到 .htaccess 以设置 Vary 变量以设置 LiteSpeed 缓存。

PHP 脚本示例:

<?php $lang = $_SESSION['lang'];?>

.htaccess 示例

...
<IfModule LiteSpeed>
CacheLookup public on
CacheLookup private on
RewriteRule .* - [E=cache-control:max-age=604800]
RewriteRule .* - [E=cache-control:vary=**!!!HERE I NEED TO HAVE $lang value!!!**]
</IfModule>
...

我已经尝试过这些方法:

  1. 通过 cookie。我在 cookie 中设置 PHP 变量,并通过 "RewriteCond %{HTTP_COOKIE} (.*) [NC]" 从 .htaccess 中获取它。但我也会有无法在 cookie 中设置的私人数据。所以这种方法不是很好。
  2. 通过 ENV 变量 (putenv("PROVARY=".$_SESSION['lang']);)。但它不起作用。因为他们在请求结束时死亡。
  3. HTTP_SESSION。我找到了这个模块的名称,但没有找到有关它如何工作甚至如何使用它的信息。

是否可以直接从.htaccess 中获取$_SESSION 变量?如果是,请展示其工作原理的工作示例。

【问题讨论】:

  • 不太确定你想在这里做什么,但.htaccess 只是一个文件。如果您想即时修改,则只需打开、阅读、修改和重写即可。不确定这是个好主意,但是.....
  • 我改了标题。希望现在更清楚了。我需要当用户向站点发出第二个请求时,我将能够从他的 .htaccess 中的 SESSION 中获取数据。
  • @Philipp 谢谢你,伙计,这就是我要找的。来自 Litespeed 的任何官方 cmets。添加您的评论作为答案,我会标记它

标签: php linux apache .htaccess litespeed


【解决方案1】:

仅基于会话变量来缓存页面绝不是一个好主意,尤其是当内容仅根据会话中存储的语言而变化时。连 LiteSpeed 都说,don't do so

但是,您可以将语言额外存储在 cookie 和 vary on the cookie value 中。

对于其他项目,我建议将语言存储在 uri 中(example.com/en/...,example.com/de/...)

【讨论】:

    猜你喜欢
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-26
    • 2011-10-27
    • 2013-12-04
    相关资源
    最近更新 更多