启用LiteSpeed Cache插件后出现Login Vary Cookie冲突的解决办法

有的小伙伴在WordPress网站启用LiteSpeed Cache插件后,发现同站点下的不同登陆程序出现cookie错误,比如出现Login Vary Cookie冲突,这个应该如何解决呢?毕竟网上资料比较少,可以根据如下解决办法进行解决。

当你在同一个文档根目录下有多个启用了LSCache插件的网络应用程序时,其中一个程序是从另一个程序的子目录下提供的(如www.example.com/ 和 www.example.com/app2/),就会出现登录变量Cookie冲突。这种情况可能发生在不同的网络应用程序中,或者同一程序的多个安装程序中(如WordPress的两个副本)。

特别值得关注的是_lscache_vary cookie,它是每个LSCache插件的默认值,用于显示用户的登录状态。因此,它可以控制一个页面的版本(已登录或未登录)的提供。

举例

让我们看一下这样的情况:WordPress的博客在www.example.com/,XenForo的论坛在www.example.com/forum/。就浏览器而言,博客和论坛都是同一个网站,因为论坛实际上是博客的一个子目录。当浏览器访问这些地址中的任何一个时,它就会使用www.example.com/ 的cookies。

尽管论坛是一个完全独立的应用程序,但在浏览器看来,它只是像博客的一个部分。

下面是这种情况的表现。

  • 一个用户登录了WordPress,_lscache_vary cookie被设置为表示他们已经登录。
  • 然后这个用户以非登录用户的身份访问XenForo,并从XenForo的后台得到正确的非登录页面。
  • LSCache 缓存了这个页面,但是由于登录的 _lscache_vary cookie 仍然是在 WordPress 访问时设置的,LSCache 错误地认为这个页面是为登录用户准备的。
  • 这导致未来登录到XenForo的用户在这个页面上得到 “缓存命中”,并被提供错误的(非登录)版本的页面。

在前面的例子中,为了区分登录到WordPress的用户和登录到XenForo的用户,你需要改变登录不同cookie的名称。同一根目录下的每个应用程序都需要一个唯一命名的cookie。您可以手动修改.htaccess来解决这个问题,或者对于我们的一些插件,您可以通过插件接口。

手动修改.htaccess

对于每个应用程序,在应用程序根目录下的.htaccess文件中,在RewriteBase之后和所有使用[L]标志的规则之前,添加以下重写规则。

RewriteRule .? - [E=Cache-Vary:_my_custom_vary]

_my_custom_vary 是现在将由该应用程序使用的cookie名称。

例子

在前面的情况下,你可以在WordPress中放入这样的 .htaccess文件:

RewriteRule .? - [E=Cache-Vary:_my_vary_EXAMPLE_wordpress]

在XenForo .htaccess文件中要这样做:

RewriteRule .? - [E=Cache-Vary:_my_vary_EXAMPLE_xenforo]

在插件中进行修改

WordPress插件有一个登录Cookie的设置,所以你可以在插件界面上修改Cookie,避免乱用.htaccess。导航到WordPress仪表板 > LiteSpeed Cache > Cache > Advanced来更新它。

千百度
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容