在 .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>
...
我已经尝试过这些方法:
- 通过 cookie。我在 cookie 中设置了 PHP 变量,然后通过
"RewriteCond %{HTTP_COOKIE} (.*) [NC]"
在 .htaccess 中获取它。但我也会有我无法在 cookie 中设置的私人数据。所以这种做法不是很好
- 通过 ENV 变量
(putenv("PROVARY=".$_SESSION['lang']);)
。但它不起作用。因为他们在请求结束时死亡。
HTTP_SESSION
。我找到了模块的这个名称,但没有找到有关它如何工作甚至如何使用它的信息。
是否可以直接从 .htaccess 中获取 $_SESSION
变量?如果是,请展示其工作原理的工作示例。
仅基于会话变量来缓存页面绝不是一个好主意 - 特别是,如果内容仅根据存储在会话中的语言而变化。连 LiteSpeed 都说,要 don't do so
但是,您可以将语言另外存储在 cookie 中,vary on the cookie value。
对于进一步的项目,我建议将语言存储在 uri 中(example.com/en/...
、example.com/de/...
)
我需要将 $_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>
...
我已经尝试过这些方法:
- 通过 cookie。我在 cookie 中设置了 PHP 变量,然后通过
"RewriteCond %{HTTP_COOKIE} (.*) [NC]"
在 .htaccess 中获取它。但我也会有我无法在 cookie 中设置的私人数据。所以这种做法不是很好 - 通过 ENV 变量
(putenv("PROVARY=".$_SESSION['lang']);)
。但它不起作用。因为他们在请求结束时死亡。 HTTP_SESSION
。我找到了模块的这个名称,但没有找到有关它如何工作甚至如何使用它的信息。
是否可以直接从 .htaccess 中获取 $_SESSION
变量?如果是,请展示其工作原理的工作示例。
仅基于会话变量来缓存页面绝不是一个好主意 - 特别是,如果内容仅根据存储在会话中的语言而变化。连 LiteSpeed 都说,要 don't do so
但是,您可以将语言另外存储在 cookie 中,vary on the cookie value。
对于进一步的项目,我建议将语言存储在 uri 中(example.com/en/...
、example.com/de/...
)