在 news.example.com 登录后回到 www.example.com 仍显示未登录,再登录一次,两边开始互相踢下线。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,COOKIE_DOMAIN 被插件固定成 news.example.com,认证 Cookie 无法在主域共享。两个站点的 siteurl 不一致,登录跳转也落在不同域名上。
「跨站登录态失败」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。报错里带路径的,先去看那个路径在不在、权限对不对。
define('COOKIE_DOMAIN', '.example.com');
define('SITECOOKIEPATH', '/');
// 确认 wp_2_options 里的 siteurl 与主域一致
同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。
备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。接口问题先分清是没发出去、发出去了没收到,还是收到了处理失败。
具体做法是,在 wp-config.php 里把 COOKIE_DOMAIN 定义成 .example.com;核对每个站点的 siteurl 与 home;清掉浏览器旧 Cookie 后重新登录。
最后用这个标准收尾,子站登录后主站显示已登录,从任一站点退出另一站点也退出。
