启用LiteSpeed Cache插件后出现Login Vary Cookie冲突的解决办法
有的小伙伴在WordPress网站启用LiteSpeed Cache插件后,发现同站点下的不同登陆程序出现co…
有的小伙伴在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来更新它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!