从测试环境搬过来后,新订阅者点确认邮件里的链接,打开的是 http://localhost/wp/confirm,页面当然打不开。日志里能对上时间点,这种反而好排。
数据库里的 home 和 siteurl 还是测试域名,邮件模板用 home_url 拼接就带出来了。迁移时只改了主题配置,没改这两项。缓存里的旧地址也会被继续使用。这一点先确认清楚,后面就不用反复试。
UPDATE wp_options SET option_value = 'https://example.com'
WHERE option_name IN ('home', 'siteurl');
「确认邮件链接错误」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
处理上按这个顺序:把选项表里的 home 和 siteurl 改成正式域名,两处必须一致;搜一遍主题和插件里写死的旧域名,尤其是邮件模板;改完清对象缓存,再发一封测试邮件确认链接。
结果对不对很好判断,确认邮件里的链接指向正式域名,点开能完成订阅。
