先看现象。多语言站有上万条页面,逐个在 head 里加 hreflang 会让 HTML 变大,想把标签挪到 sitemap 里,不确定是否等效。
原因不止一个,得分开看。两种方式谷歌都支持,但同一组不要混用。少数情况下是sitemap 方案要求每条 URL 都带完整的语言指向。
少数情况下是head 方案更容易随页面一起更新。
上来先确认当前 head 里的标签规模
curl -s https://www.example.com/ | grep -c 'hreflang'
接着在 sitemap 里输出 xhtml:link 节点
xmlns:xhtml="http://www.w3.org/1999/xhtml"
校验两种方式不要重复声明
xmllint --noout sitemap.xml
那几天正好在做别的变更,先把时间线对齐才敢动手。
排查用的命令都是临时敲的,没有写成脚本,事后才整理。
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
恢复的判定其实很直接。标签集中在 sitemap 里,HTML 体积下降,各语言版本的收录关系保持不变,报告里也没有新的语言错误。
两种方式同时写且内容不一致时,蜘蛛可能整组放弃,选定一种后要把另一种彻底移除,别留半套在页面里。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。