必须为内首个标签,否则导致乱码;viewport须紧随其后且用width=device-width, initial-scale=1;description需每页唯一、120–155字符;keywords已废弃,robots应按页面类型动态设置。

直接写在 里,但顺序和取值错一个,浏览器或爬虫就可能忽略甚至报错。
charset 必须是 的第一个标签
它影响整个文档的字符解析,晚于它出现的任何文本(包括 <title></title>)都可能乱码。比如你用 UTF-8 编码保存 HTML 文件,但 <meta charset="UTF-8"> 写在 <title></title> 后面,Chrome 就可能把标题里的中文显示成 。
-
<meta charset="UTF-8">必须放在开始后第一行,前面不能有任何内容(空格、注释都不行) - 别再用
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">,HTML5 已废弃这种写法 - 如果用了构建工具(如 Vite、Next.js),确认它没自动注入别的 charset 标签,否则会冲突
viewport 要紧贴 charset 后,且不能写死宽度
写成 width=375 或 width=414 看似适配某款手机,实际会让 Pixel 8、iPhone 16 Pro Max 这类新机型强制缩放,文字模糊、点击区域变小。
- 标准写法只有这一种:
<meta name="viewport" content="width=device-width, initial-scale=1"> - 不要加
maximum-scale或user-scalable=no—— 屏幕阅读器和残障用户依赖缩放功能 - 某些 CMS(如 WordPress 主题)会默认注入 viewport,检查源码是否重复写了两次
description 每页唯一,长度卡在 120–155 字符之间
Google 搜索结果摘要通常只截取前约 155 个 Unicode 字符(含空格),超出部分会被省略号吞掉;少于 120 个又显得单薄,容易被当成低质页。
立即学习“前端免费学习笔记(深入)”;
- 避免模板里写死通用文案,比如所有页面都用
content="欢迎访问我们的网站" - 动态生成时,优先从页面 H1 或首段提取语义主干,而不是拼接关键词
- CMS 中若 description 字段为空,别 fallback 到 keywords 或 title,那会导致摘要重复或语义断裂
- 特殊符号(如 emoji、全角标点)也占字符数,写完建议用字符计数器校验
keywords 和 robots 不该进模板默认项
<meta name="keywords"> 自 2009 年起 Google 完全不使用,Bing 也已弃用;而 <meta name="robots"> 如果统一设为 index,follow,反而会让分页(/blog?page=2)、筛选页、打印页被错误收录。
- 直接从模板中删掉
<meta name="keywords">—— 它不带来 SEO 增益,只增加冗余字节 -
<meta name="robots">应按页面类型动态输出:noindex,nofollow用于登录页、404、测试页;noindex,follow用于分页、排序页 - 全局规则优先走
robots.txt,meta robots 只处理单页粒度控制
真正难的不是写对这三四个标签,而是让它们在不同页面类型(首页、文章页、分类页、AJAX 渲染页)里保持语义准确、互不干扰。CMS 或 SSR 框架里,description 和 og:title 很容易被模板引擎缓存成同一份,上线后才发现几百个页面摘要一模一样——这种问题肉眼几乎看不出,只能靠自动化抓取验证。



















