站点的语言切换是一个 select 下拉,选中后由 JS 修改 location,HTML 里没有对应的 a 链接,蜘蛛抓到的每个页面都只有中文版本,英文目录三个月没进索引。
一开始怀疑是「sitemap 只提交了中文地址,英文目录没有入口」,查了一圈,方向不对。
排查方向其实有限,先把可能性排一排。语言版本之间没有可抓取的链接,只有 JS 事件。少数情况下是hreflang 标签写了,但对应页面蜘蛛从未发现。
不容易想到的是,切换器用 cookie 记住语言,蜘蛛每次都被重置成中文。
先确认页面里是否存在语言链接
curl -s https://www.example.com/ | findstr /i "hreflang"
再往下看切换器的实现方式
curl -s https://www.example.com/ | findstr /i "<select"
随后改成 a 标签并补上 hreflang
echo '<a href="/en/" hreflang="en">English</a>';
末了把英文地址加进 sitemap
curl -s https://www.example.com/sitemap.xml | findstr /c:"/en/"
别只看报错消失,验证要多做一步。切换器改成真实链接后,日志里开始出现英文目录的抓取,一个月内收录了两千多条。
语言入口必须是链接,JS 跳转对蜘蛛等于不存在,hreflang 写得再全也带不来抓取。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
