问题出现得很突然,日志倒是留得挺全。站点地图由插件生成,域名取自数据库里的旧配置。改版半年后地图里还有两万条旧域名地址,蜘蛛抓一遍全是 301。

刚开始盯着「旧域名的地图文件还留在服务器上被访问」,折腾了半个多小时,排掉了。

排查方向其实有限,先把可能性排一排。站点地址配置没改,插件仍按旧域名拼地址。另一种情况是地图缓存文件一直没重建。

还有一种情况,生成任务读的是环境变量,与后台配置不一致。

第一件事是抽查地图里的域名分布

curl -s https://www.lu0.cn/sitemap.xml | grep -o '<loc>[^<]*' | cut -d/ -f3 | sort | uniq -c

接着把站点地址改成正式域名

wp option update home https://www.lu0.cn; wp option update siteurl https://www.lu0.cn

再往下删掉地图缓存并重新生成

rm -f wp-content/cache/sitemap-*.xml

剩下的就是清掉服务器上残留的旧域名地图

find /var/www -name 'sitemap*.xml' -mtime +30

怎么算真的好了,看的是同一批现象。地图里只剩正式域名,301 抓取占比降到一成以下,抓取量回到真实页面上。

换域名时最容易漏的是插件缓存和残留文件,地图是给蜘蛛的入口,它指错地方等于白改。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189