站点迁到新域名后,正文里的内链、导航和图片地址还写着旧域名,蜘蛛每抓一个内页都要先吃一次 301,抓取效率掉了一半。

一开始怀疑是「图片和附件地址存在独立的元数据表」,查了一圈,方向不对。

原因不止一个,得分开看。正文是历史数据,域名替换只改了配置没改内容。还有一种是导航菜单存在序列化字段里,替换工具扫不到。

少数情况下是主题模板里硬编码了旧域名。

上来先统计页面里旧域名的出现次数

curl -s https://www.example.com/a/1.html | grep -o 'old.example.com' | wc -l

然后找出还在引用旧域名的模板

grep -rn 'old.example.com' wp-content/themes/ | head

批量替换正文与元数据

UPDATE wp_posts SET post_content = REPLACE(post_content,'old.example.com','www.example.com');

修正序列化字段里的旧域名

wp search-replace 'old.example.com' 'www.example.com' --all-tables --precise

别只看报错消失,验证要多做一步。页面里旧域名引用降到个位数,蜘蛛抓内页不再经过跳转,抓取量在一周内回到迁移前的水平。

这里还有个坑。迁移时最容易被忽略的是数据里的绝对地址,配置改完还要把内容层扫一遍。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。

作者 9823189