charset 和 viewport 必须置于 head 最前面,否则导致乱码或移动端缩放失效;description 需控制在 155–160 字符且唯一;noindex 和 canonical 是 URL 规范必需手段;Open Graph 和 Twitter Card 标签必须用绝对 URL 并验证生效。
这两个 meta 标签一旦位置靠后,浏览器解析时就可能出乱码或移动端缩放失效。Chrome 124 开始对 document.hasFocus() 的行为做了调整,但不影响这个底层规则。
常见错误是把 <script> 或 <link> 放在它们前面,尤其是动态注入 JS 的时候容易忽略顺序。
<meta charset="utf-8"> 必须是 <head> 中第一个标签,否则中文、emoji 等字符可能被错误解码<meta name="viewport" content="width=device-width, initial-scale=1"> 要紧随其后,晚于它会导致 Safari 在 iOS 上忽略 initial-scale搜索引擎(包括百度、搜狗)会截断超长描述,只显示前约 120 字;微信/微博分享时也常只取前 150 字左右。写得再好,超出长度就白费。
容易踩的坑是模板化生成:比如所有博客页都套用“本文介绍了……”,没体现具体文章关键词和差异点。
立即学习“前端免费学习笔记(深入)”;
content 值必须唯一,不能复用通用文案content="HTML meta HTML SEO meta 标签 HTML 教程" 反而降低可信度当存在分页(/blog?page=2)、UTM 参数(?ref=utm_source)、或 AMP 页面时,不加 noindex 或 canonical,搜索引擎会当成独立页面索引,稀释主页面权重。
很多人以为加了 noindex 就万事大吉,其实它只是告诉爬虫“别收录”,并不解决重复内容问题。
<meta name="robots" content="noindex"> 适合临时下线页、测试页、登录后才可见页<link rel="canonical" href="https://example.com/blog"> 必须指向规范 URL,且 href 值要绝对路径、带协议rel="prev"/rel="next",但注意 Google 已不依赖这个,仅作辅助微信、微博、抖音内嵌浏览器对 og: 标签的解析比对 description 更严格。没设 og:image,分享时大概率 fallback 到站标或空白图;没设 og:title,就直接抓 <title>,常因长度超限被截断。
特别注意:微信客户端会缓存 og 信息,改完不生效?不是代码问题,是缓存没清。
<meta property="og:image" content="https://example.com/image.jpg"> 的图片尺寸建议 ≥ 1200×630 px,否则微信可能降质或拒用<meta name="twitter:card" content="summary_large_image"> 在 Twitter/X 已弱化,但微博仍依赖 twitter: 前缀标签og: 值必须是绝对 URL,相对路径会被忽略charset 位置或 og:image 协议头,整套元数据就可能在某个平台彻底失效。