有的小伙伴在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来更新它。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容