用 SQL 把 http://example.com 替换成 https://example.com,正文里出现 https://https://example.com,爬虫报 500 多条 404。图片和站内链接都中招。碰到这种情况,我一般先确认改动有没有真的生效。
原因不复杂,替换时没排除已经带 https 的地址,新旧字符串前缀重叠,替换两次就多套一层协议。序列化数据里的长度字段没跟着改,读出来还会截断。
「站内链接批量替换」这类改动最怕改一半,回滚脚本先准备好,再动生产。日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。
wp search-replace 'http://example.com' 'https://example.com' --dry-run wp search-replace 'http://example.com' 'https://example.com' --all-tables --precise
权限不要一口气开到最大,先加到够用再往上试,范围小才好收。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
具体做法是,先用 wp search-replace 处理 它会算序列化长度;替换前备份数据库 先 dry-run 看命中数量;替换字符串带上协议分隔符作边界 避免再套一次。
最后用这个标准收尾,正文里不再出现重复协议,爬虫 404 数量停止增长,图片地址能正常打开。
