hreflang标签必须由PHP动态生成且双向对称,语言代码需严格匹配ISO标准,URL须可访问并返回200,内容须实质性差异化,否则无效甚至导致降权。

hreflang 标签必须由 PHP 动态生成,静态写死会失效
搜索引擎只认当前页面响应头或 HTML 中真实存在的 hreflang 值,且要求语言/区域代码严格匹配、双向对称。PHP 不能靠“预设所有组合”硬编码,得根据当前请求的语种上下文实时输出对应链接集。
常见错误是把所有 hreflang 写进模板里,比如在中文页也塞上 hreflang="en-US" 指向英文页,但英文页没反向声明中文页,或者用了 zh-CN 却在 URL 里用 /zh/ 路径——Google 会直接忽略整组标签。
- 当前语言必须从可靠来源获取:优先用
$_GET['lang']或路由解析(如$_SERVER['REQUEST_URI']匹配/en/),别依赖浏览器Accept-Language头 - 每个语言版本的 URL 必须可访问且返回 200;若某语言临时下线,务必从所有页面中移除对应
hreflang条目 - 语言代码用 ISO 639-1(如
zh,en),区域用 ISO 3166-1 alpha-2(如US,HK),组合格式为zh-HK,不是zh_hk或zh_CN
用 PHP 数组定义语言配置比硬编码 URL 更安全
把语言代码、区域、路径前缀、页面标题映射关系集中管理,能避免漏写、错位、大小写不一致等问题。URL 构建逻辑和 hreflang 生成逻辑分离,改路径时只需动一处。
示例配置:
$langs = [
'zh-HK' => ['path' => '/zh-hk/', 'name' => '繁體中文(香港)'],
'zh-CN' => ['path' => '/zh-cn/', 'name' => '简体中文(中国大陆)'],
'en-US' => ['path' => '/en-us/', 'name' => 'English (US)'],
];
生成 link 标签时遍历这个数组,拼出当前页各语言版本的完整 URL:
foreach ($langs as $code => $cfg) {
$url = $base_url . $cfg['path'] . ltrim($_SERVER['REQUEST_URI'], '/');
echo '<link rel="alternate" hreflang="' . htmlspecialchars($code) . '" href="'%20.%20htmlspecialchars(%24url)%20.%20'">';
}
- 注意
$_SERVER['REQUEST_URI']可能带查询参数,要保留;若用重写规则隐藏index.php,确保生成的 URL 与实际可访问路径一致 - 不要用
http_build_query()二次拼参,容易重复编码;直接截取原始 URI 更稳妥 - 如果站点有不同域名(如
example.cn和example.com),$base_url必须按语言动态切换,不能统一写死
多语言内容本身必须差异化,否则 hreflang 反而触发重复内容惩罚
hreflang 不是翻译开关,它只是告诉 Google:“这些页面内容相似,但面向不同用户”。如果 /zh-cn/ 和 /en-us/ 页面主体文本完全一样(仅靠 JS 切换语言),Google 会判定为重复内容,hreflang 不起作用,还可能降权。
- 每套语言版本需独立存储内容:数据库字段按语言拆分(如
title_zh,title_en),或用 JSON 字段存多语言值 - SEO 关键字段(
,, H1, 正文首段)必须人工或高质量机器翻译,禁止全文本替换式“伪多语” - 图片
alt、title属性也要对应语言;同一张图在不同语言页用不同描述,不是复制粘贴
验证 hreflang 是否生效,别只看源码
源码里看到 不代表 Google 已识别。真正起效需要满足三个条件:所有语言页互相引用、HTTP 状态正常、内容主题一致。最可靠的验证方式是查 Google Search Console 的「国际化」报告。
- 用
curl -I检查各语言 URL 是否返回 200,且响应头不含X-Robots-Tag: noindex - 在 GSC 中添加并验证每个语言子目录(如
https://example.com/zh-cn/),等 3–7 天后看「国际定位」面板是否有数据 - 搜索
site:example.com inurl:/en-us/和site:example.com inurl:/zh-cn/,确认两者都出现在结果中,且点击后跳转正确语言页(非自动重定向)
最容易被忽略的是:hreflang 对应的页面必须有实质内容差异,哪怕只是地址、货币、联系方式不同,也比纯翻译更有说服力。没有差异,再规范的标签也只是摆设。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











