惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tor Project blog
B
Blog RSS Feed
M
MIT News - Artificial intelligence
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
罗磊的独立博客
GbyAI
GbyAI
N
Netflix TechBlog - Medium
博客园 - 司徒正美
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
W
WeLiveSecurity
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
SecWiki News
SecWiki News
V
Vulnerabilities – Threatpost
Google DeepMind News
Google DeepMind News
C
CERT Recently Published Vulnerability Notes
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Register - Security
The Register - Security
Cisco Talos Blog
Cisco Talos Blog
Martin Fowler
Martin Fowler
A
About on SuperTechFans
S
Security @ Cisco Blogs
T
Tenable Blog
C
Check Point Blog
N
News and Events Feed by Topic
S
SegmentFault 最新的问题
The GitHub Blog
The GitHub Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
Attack and Defense Labs
Attack and Defense Labs
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
C
Cisco Blogs
P
Palo Alto Networks Blog
V
V2EX
博客园 - 聂微东
Project Zero
Project Zero
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Docker
N
News | PayPal Newsroom
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
小众软件
小众软件
Application and Cybersecurity Blog
Application and Cybersecurity Blog
人人都是产品经理
人人都是产品经理
V2EX - 技术
V2EX - 技术
I
Intezer
L
LINUX DO - 最新话题

山月

在VS Code配置Obsidian風格Markdown編輯環境 – 山月 在Windows通过LM Studio使用Zotero MCP – 山月 禁用WordPress中Jetpack的AI助手按钮 – 山月 WordPress/MCP Adapter安装与维护指南 – 山月 WordPress服务器权限与所有权配置详解 – 山月 在Windows上為GnuCash啟用線上報價 (Finance::Quote) – 山月 Gitea Docker /var/empty 权限问题除错总结 – 山月 Bookwyrm由0.7.5升级至Production(e217a17)完整过程及疑难解答 – 山月 用正则表达式修改ruby标签 – 山月 为WordPress Syndication Links插件添加新的站点与图标的实现方法 – 山月 进入不断重启的Docker容器的命令行之方法 – 山月 自建Bookwyrm无法查询远端用户?——开启数据库扩展 – 山月 BookWyrm无法增添书本、作者、阅读进度……?——解决数据库自增序列问题 – 山月 俾Docker容器中的应用访问宿主机上的数据库服务 – 山月 QNAP NAS使用者注意!千万莫对MariaDB做这件事…… – 山月 解决Wikibase手动导入数据后无法新建实体之问题 – 山月 辰年再訪神保町 – 山月 PHP-FPM站点池配置调优以解决WordPress过度占用系统资源之问题 – 山月 如果Linux软件包常规升级失败——以python3-update-manager为例 – 山月 解决站点526报错:SSL证书配置错误 – 山月 風挾着陽光來 – 山月 和A.N.R.GHG插件说bye-bye – 山月 WordPress页面链接末尾出现“?swcfpc=1”后缀,是怎么回事? – 山月 安装、维护Monica PRM的一些笔记 – 山月 清理服务器空间的着手点 – 山月 关于Joplin Server文件上传大小上限 – 山月 如何优化PHP文件上传大小:完整指南 – 山月 WordPress站点部分地出现“严重错误”的一些可能的解法 – 山月 批量更改WordPress媒体URL – 山月 自托管WordPress编辑文章出现问题的排查法 – 山月 於Docker安裝sudo之方法 – 山月 于YunoHost网页版后台装pgAdmin4失败之解决方法 – 山月 解决WordPress多站点网络下异域名子站登录失败的问题 – 山月 Linux的SWAP配置建议与方法 – 山月 如何从一个.sql文件中恢复(导入)数据到MySQL数据库 – 山月 橙色的天,金色的鯉魚 – 山月 設置SoftBank光IP地址固定分配時MAC地址報錯之解決方法 – 山月 解决自托管WordPress与Jetpack通信之不畅 – 山月 解决WordPress上传超过100M文件失败的问题——用Cloudflare作为CDN服务时 – 山月 自托管WordPress迁至新服务器时可能遇到的一些问题 – 山月 Jetpack server port value报错之解决方法 – 山月 Nextcloud服务器目录中/data/updater-(12个英数字)文件夹可删除 – 山月 使WP IndieBlocks、Webmention两插件配合工作 – 山月 导致WordPress钩子(hooks)重复调用的一个可能性——插件重复安装 – 山月 为WordPress自定义贴文类型设置默认格式(post format) – 山月 为Micropub客户端所发内容设置默认post type – 山月 让WordPress的自定义post type支持post formats – 山月 在WordPress通过古腾堡块编辑器验证您的Mastodon身份 – 山月 如何将Mastodon上关注的人导入至Friendica – 山月 在WordPress上发Mastodon的一个选项:Shortnotes+Share on Mastodon – 山月 祝WordPress 20周年快乐!(节译) – 山月 更改IndieBlocks札记(note)、喜欢(like)slug之方法 – 山月 改变Friendica域名之方法 – 山月 爲WordPress添上在線Markdown、HTML互轉工具 – 山月 內排散記 – 山月 长毛象(Mastodon)简介:多中心化、细粒度公开、多样时间轴 – 山月 教ChatGPT讲福州话 – 山月 WordPress项目管理插件使用心得 – 山月 汉字词“地震”之前,日语中表达地震的本土词 – 山月 “幸”与“福”的区别 – 山月 Koha 22.05安装教程(于Ubuntu 20.04 LTS) – 山月 《日本外來語辭典》讀書筆記 – 山月 “传毒”——童年游戏回忆一则 – 山月 如何为WordPress多站点设置不同的子目录、子域名,甚至主域名? – 山月 重温《日语的历史》 – 山月 东京教父:关于爱与救赎 – 山月 2021年末,豆瓣更新了它的条款…… – 山月 WordPress报错“Briefly unavailable for scheduled maintenance.”的解决方法 – 山月 日语里的「原形」「辞书形」「终止形」是什么? – 山月 《福州方言大词典》读后感 – 山月 一種美觀的由Hubzilla分享RSS資訊的方法 – 山月 《我们仨》中与《宋诗选注》相关的记载 – 山月 亂彈文忠公宴番仔事 – 山月 一本清代土腔谜语集引发的回忆 – 山月 迎圣火 – 山月 凝滞在方言里的时光 – 山月 站在新庄园门前 – 山月 长星照耀州府 – 山月 虚拟币与赛博矿难 – 山月 记忆、记录与创造 – 山月 几日来写作微信推文的反思 – 山月 对OKR工作管理法的归纳总结 – 山月 同人誌之夢 – 山月 那里人很爱诗词 – 山月 从语言学看两性语言差异 – 山月 南门兜素菜馆 – 山月 闽海痛史 – 山月 东京的西方建筑遗产 – 山月 真实的华人电影 – 山月 记观《只有野兽知道》 – 山月 记早稻田祭 – 山月 《鬼灭之刃》日语札记 – 山月 颱風前夜的仙草凍 – 山月 首篇博文 – 山月 我到底是转厝了 – 山月 CM96暴走记 – 山月 薄暮逐島 – 山月 人与神的共振 – 山月 逐集罔讲罔听 – 山月 以往不谏 – 山月
WordPress多站点网络分布于不同主域名时登录管理后台出现cookie错误的解决方案 – 山月
2022-05-14 · via 山月

标题好长……不过笔者觉得仍然有必要在文章开头描述一下错误背景。如果您看完标题,就知道笔者在说什么了,则可以直接滑到〈解决方案〉章节。

背景知识

多站点网络(Multisite network)是WordPress的一个功能,它可以让用户在一个WordPress仪表盘上创建并运行多个WordPress网站,而这些网站可以被指定不同的主域名

虽曰如此,正所谓「天无二日,(……)[出自《礼记·曾子问》——或者是您觉得的那个出处,意思是天上没有两个太阳。下文从略。]」,一个多站点网络内,只能有一个网站被指定为主站点(通常是最早存在的那个)。

而创建主域名与主站点相异的子站点后,一旦想要访问管理后台,输入账号与密码后,会被告知:

错误:您的浏览器阻止或不支持Cookie。您必须启用Cookie才能使用WordPress。

如果您的站点语言为英文,这段报错会表现为:

ERROR: Cookies are blocked or not supported by your browser. You must enable cookies to use WordPress.

例如,您的主站为sanguok.com,而同网络内另一个子站为example.com[该域名实际上是IANA持有的示例站点。],则可能在尝试登录example.com管理后台的过程中遇到此问题。

解决方案

如果有使用面板软件管理服务器,则可以直接访问面板的文件管理器,完成如下操作

首先,清除浏览器缓存(包括cookie)以及缓存插件等的服务器缓存。

然后通过FTP等访问WordPress站点的根目录(即有wp-adminwp-content等子目录的地方);

wp-config.php文件中,添加(或设置)如下:

define('ADMIN_COOKIE_PATH', '/');
define('COOKIE_DOMAIN', '');
define('COOKIEPATH', '');
define('SITECOOKIEPATH', ''); 

恭喜,这下站点可以正常使用了。

对网上所流传另一方案的辨正

笔者尝试透过搜索引擎寻求解决方案时,发现网络上更多流传着另一种解决方案。

网民bulgaru所指出的那样,在wp-config.php文件中,添加(或设置)如下:

define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'your-domain.com'); // 山月按:将your-domain.com改为您实际的主域名,例如sanguok.com
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
define('SUNRISE', 'on');

还有一种方案指出,要为wp-config.php文件添加(或设置)如下:

// Set cookie domain for login cookies 
define( 'COOKIE_DOMAIN', '.your-domain.com' ); // 山月按:将your-domain.com改为您实际的主域名,例如sanguok.com

这样修改通常或许有用,但在本文所举案例下不奏效。这是因为本文案例具有「不同主域名」这一特殊性。无论是DOMAIN_CURRENT_SITE还是COOKIE_DOMAIN,您都只能define(定义)为一个值,而非多个值。

举个例子,如果您同时有sanguok.comexample.com两个网站,则无论将DOMAIN_CURRENT_SITECOOKIE_DOMAIN指定给谁,都会导致剩下一个网站出现cookie错误。所以本章节所述方法,在「不同主域名」这一特殊条件下不奏效。

重建配置文件:消灭问题本身

常言道:「消灭问题本身,而非解决问题。」如果前述的方法不奏效,则可能是wp-config.php有些其他错误,例如编码错误、配置错误……积重难返。

如图,wp-config.php可能有编码错误

使用控制变量的方法逐行排查代码或许是一个解决方案。

但您若不耐烦了,索性推倒重来。将网站根目录下的wp-config-sample.php重命名为wp-config.php(如找不到,下载最新的WordPress安装包,并取出其中的wp-config-sample.php文件),并手动修改里面的配置信息,上传替换。

绕过cookie请求:消灭提出问题的人

如果总是出现cookie错误,为了能够登录管理后台,您或许可以考虑以下方案——

将以下代码段添加到主题的functions.php文件中:

setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN);
if ( SITECOOKIEPATH != COOKIEPATH ) setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN);

这样做可以忽略网站检查cookie的请求,径直登录。

但是阻止报错并不能消灭问题本身。如果cookie错误客观存在,那么对应网站依赖于cookie的功能仍旧无法实现。例如,您无法在有cookie错误的站点打开加密文章——每次输入正确的密码,点击确认,网页刷新后,仍然会停留在输入密码的界面,无限重复。因为问题仍旧存在,您只是消灭了「提出问题的人」。

一些万金油

和WordPress斗争了这么久,笔者发现了一些万金油式的排查思路。虽然并不针对本文所举案例,也未必在所有情况下都奏效,但权资参考,并陈于下。

.htaccess问题?

如网民Marc所指出,WordPress多站点网络的很多问题出在.htaccess[简单来说,.htaccess文件管理用户对网站目录的访问。阅读Wiliz《.htaccess详解》了解更多。]的配置上。

如果您有能力,检视并排查代码。

不然,从服务器中删除.htaccess文件(建议删除前备份一下)。

如果问题得以自然解决,转到网站设置,并保存永久链接设置,一个新的.htaccess文件会被自动创建。

插件问题?

通过FTP等禁用所有插件。

将网站目录下的plugins文件夹重命名为任何字符。比如,请出你的猫仔(如有),将它重命名为njfgtews[一串对人类来说无意义的字符,只存在于博尔赫斯笔下的巴别图书馆。],确保这串字和同目录下的其他文件夹都不同名[也就是确保这串字符对机器也没有意义。]。于是,所有插件都会被禁用。

如果问题得以自然解决,将猫仔(如有)请走,把文件夹名称改回plugins,然后一个个启用插件,确保问题不重新出现。如问题复现,恭喜您揪出了源头。

通常来说,缓存或安全性插件会导致此类问题。

HTTPS问题?

如果您安装了SSL插件,检查它有否正确重定向到HTTPS。

主题问题?

WordPress的主题也是一个意想不到的问题源头。

您可以将存放主题的文件夹重命名为任何字符,就像前面所举的请猫仔(如有)命名那样。之后,网站将恢复为默认的WordPress主题,例如「2022」,而与主题相关的问题便会不见。

若然,则删除网站出问题的时候所用的主题。

结语

通过上述介绍,您应该了解到了WordPress多站点网络分布于不同主域名时,登录管理后台出现cookie错误的解决方案吧。如果您仍有疑问,或有意见想要指导,欢迎于评论区留言。您也可以移步浏览更多笔者所总结的WordPress小攻略,订阅WordPress相关文章的RSS