这个坑值得记一笔。站点有 zh 和 en 两套目录,sitemap 每条地址只写 loc,没有 xhtml:link 备用版本,三个月后英文页收录率只有两成。

真正麻烦的地方在于,几个原因的现象几乎一样。缺少备用语言声明,英文页被当成独立低质页处理;英文页内链只来自语言切换按钮,权重极低;两套目录的标题和描述直接复制,被判内容重复。

上来先检查 sitemap 的命名空间声明

curl -s https://www.example.com/sitemap.xml | head -5

补上备用语言节点

<xhtml:link rel="alternate" hreflang="en" href="https://www.example.com/en/page/"/>

给语言切换补真实链接

curl -s https://www.example.com/page/ | grep -o 'href="/en/[^"]*"' | head

校验修改后的 XML

xmllint --noout https://www.example.com/sitemap.xml

报错是间歇性的,我蹲守了半小时才抓到一次完整现场。

白天有业务在跑,能验证的部分都压到了晚上做。

怎么算真的好了,看的是同一批现象。sitemap 校验通过,英文页的已编入比例从两成升到六成以上,日志里出现对语言切换链接的抓取。

容易忽略的是,sitemap 里的 hreflang 必须与页面 head 中的一致,只写一处等于没写。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189