在 .htaccess 中为 LiteSpeed 缓存获取 PHP $_SESSION 数据

Get PHP $_SESSION data in .htaccess for LiteSpeed cache

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

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 变量?如果是,请展示其工作原理的工作示例。

仅基于会话变量来缓存页面绝不是一个好主意 - 特别是,如果内容仅根据存储在会话中的语言而变化。连 LiteSpeed 都说,要 don't do so

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

对于进一步的项目,我建议将语言存储在 uri 中(example.com/en/...example.com/de/...