站点有个给海外用户看的英文镜像,部署在另一台机器上,内容靠定时同步。Bing 把镜像当成主站收录,主站的英文关键词排名掉到第二页。

一开始怀疑是「两边内容同步时间差几个小时,Bing 先抓到镜像版本」,查了一圈,方向不对。

原因不止一个,得分开看。镜像站没有 canonical 回指主站,两边被当成独立站点。另一种情况是镜像的 sitemap 里全是自己的域名,等于主动要求收录。

还有一种情况,镜像站没有 robots 限制,抓取配额被完整放开。

第一件事是确认镜像页面的 canonical 指向哪里

curl -s https://en.example.com/a/ | grep -o 'rel="canonical"[^>]*'

然后把镜像的 canonical 统一指回主站

add_filter('wpseo_canonical', function(){ return 'https://www.example.com' . $_SERVER['REQUEST_URI']; });

镜像站 robots 里只留必要目录

echo 'Disallow: /' >> /www/wwwroot/en/robots.txt

末了对比两站在 Bing 的收录数

site:en.example.com

别只看报错消失,验证要多做一步。Bing 里镜像站的收录量逐周下降,主站的英文关键词回到原来的位置,两边被抓取的地址开始收敛到主站域名。

这里还有个坑。镜像的价值在于就近访问,不在于被收录,canonical 与 robots 只要有一个指错方向,权重就会被分走一半。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189