wp search-replace 'https://example.com/blog/' 'https://example.com/guide/' --dry-run --all-tables wp search-replace 'https://example.com/blog/' 'https://example.com/guide/' --all-tables --precise
栏目目录改名后,文章正文里四百多条内链还写着 /blog/,点进去全是 404,后台批量替换只改了标题,正文里的链接一条没动。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,内链散落在文章正文里,很多是编辑器存下的序列化结构,普通 SQL 替换会把长度字段改坏。只在模板层加 301 也没用,内链本身还是旧地址。
「内链批量替换」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
处理上按这个顺序:先用 wp search-replace 跑一遍 dry-run,看会命中多少条;确认没问题再去掉 dry-run 正式替换,只替换 /blog/ 这个路径;检查小工具和自定义字段里的链接,那部分常被漏掉;跑一遍站内爬虫,列出仍然返回 404 的内链逐条修。
改完只确认一件事:站内爬虫扫全站 404 数为零,正文里的链接点开都落在新栏目下。
