同一批页面里有的写 zh-CN,有的只写 zh,还有的写成 cn,报告提示语言代码无效,几组关系被整段跳过,互指等于白做。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

curl -s https://example.com/ | grep -o 'hreflang=[^ ]*'
# 只应出现 zh-CN en-US x-default 三种值

hreflang 的值必须是 ISO 639-1 语言码,可以再拼上 ISO 3166-1 区域码;只写 cn 这种纯区域值,或者两种写法在同一组里混用,都会被判成不认识。这一点先确认清楚,后面就不用反复试。

「hreflang 语言代码」这类改动最怕改一半,回滚脚本先准备好,再动生产。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

具体做法是,统一改成 zh-CN 这类语言加区域的完整写法;把只写了区域码的错误值全部清理掉;逐页核对同一组内的三种语言写法是否一致。

改完照着核一遍,语言代码无效的提示消失,同组内各语言版本的写法统一。

作者 9823189