语义化 HTML 与 SEO 基础:标签选对,一半工作就完成了

SEO 有很多玄学部分,但语义化 HTML 是确定的、可控的、且零成本的那一半。

一、语义标签怎么用

不要满屏 <div>。选标签的标准是「这个内容是什么」,不是「它长什么样」。

标签用途常见误用
<header>页头 / 区块头部当成「顶部导航栏」专用
<nav>导航链接集合塞进所有链接
<main>页面主内容,每页只能一个出现多个
<article>可独立分发的内容(一篇文章)当成普通容器
<section>有标题的内容分区当 div 用
<aside>侧边栏、补充内容
<footer>页脚 / 区块底部
<time>时间,用 datetime 属性

本站的结构:

html
<body>
  <header class="site-header">   <!-- 整站页头 -->
    <nav>...</nav>
  </header>

  <main id="app">
    <section class="hero">...</section>
    <article class="post">...</article>
  </main>

  <footer class="site-footer">...</footer>
</body>

二、标题层级不能跳

html
<!-- 正确 -->
<h1>文章标题</h1>
  <h2>一、小节</h2>
    <h3>1.1 细节</h3>
  <h2>二、小节</h2>

<!-- 错误:h1 直接跳 h3 -->
<h1>文章标题</h1>
  <h3>小节</h3>

规则:

  • 一个页面一个 h1(站点名或文章标题);
  • 层级只能逐级下降,不能跳级;
  • 标题是「内容大纲」,不是「字号大小」——想调大小用 CSS。

屏幕阅读器用户靠标题跳转浏览。层级混乱,等于给视障用户一份乱序目录。

三、meta 标签该写哪些

必需的几项:

html
<!-- 编码,必须放最前面 -->
<meta charset="utf-8">

<!-- 移动端视口 -->
<meta name="viewport" content="width=device-width, initial-scale=1">

<!-- 描述:搜索结果里显示的那段话,150 字以内 -->
<meta name="description" content="白泽网络的个人技术笔记:网站搭建、服务器运维、域名与 DNS 的实践记录。">

<!-- 规范化链接:避免多域名被判重复内容 -->
<link rel="canonical" href="https://www.bzii.cn/">

可选的社交分享卡:

html
<meta property="og:title" content="页面标题">
<meta property="og:description" content="描述">
<meta property="og:type" content="website">
<meta property="og:image" content="https://www.bzii.cn/cover.png">
<meta name="twitter:card" content="summary_large_image">

四、链接文字要写清楚

html
<!-- 不好 -->
<a href="/post/123">点击这里</a>

<!-- 好 -->
<a href="/post/123">域名注册与 DNS 解析</a>

搜索引擎靠锚文本判断目标页面的内容;屏幕阅读器也会单独朗读链接列表,「点击这里」毫无信息量。

五、图片必须写 alt

html
<img src="a.webp" alt="Nginx 配置文件示例" width="800" height="450">

<!-- 纯装饰图,alt 留空让辅助技术跳过 -->
<img src="divider.svg" alt="">

六、结构化数据(可选但有用)

用 JSON-LD 告诉搜索引擎「这是一个博客文章」:

html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "域名注册与 DNS 解析",
  "datePublished": "2026-09-02",
  "author": {"@type": "Person", "name": "白泽"},
  "keywords": "域名, DNS, Cloudflare"
}
</script>

可能带来富摘要(搜索结果里显示日期、作者等)。可以用 Google 富媒体测试工具 验证。

七、性能也是 SEO

Google 把 Core Web Vitals 纳入排名因素:

指标含义目标
LCP最大内容渲染时间< 2.5s
INP交互响应< 200ms
CLS累积布局偏移< 0.1

这些指标的改善方式见「前端性能优化清单」。

八、一份页面模板

html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>页面标题 · 白泽网络</title>
  <meta name="description" content="150 字以内的描述">
  <link rel="canonical" href="https://www.bzii.cn/this-page">
  <link rel="alternate" type="application/rss+xml" href="/feed.xml">
  <meta property="og:title" content="页面标题">
</head>
<body>
  <header><nav>...</nav></header>
  <main>
    <article>
      <h1>文章标题</h1>
      <time datetime="2026-01-12">2026-01-12</time>
      <h2>小节</h2>
      <p>内容</p>
    </article>
  </main>
  <footer>...</footer>
</body>
</html>

九、验证

bash
# 看 HTML 结构有没有明显问题
curl -s https://www.bzii.cn | grep -c "<h1>"     # 应该正好 1 个
curl -s https://www.bzii.cn | grep -o "<title>[^<]*"

工具:

  • Lighthouse(Chrome DevTools 内置):SEO 分项会给出具体问题;
  • W3C HTML 校验:查语法错误;
  • 关掉 CSS 看页面:内容顺序是否仍然合理。

语义化不需要额外成本,只是在写 div 之前多想一秒该用什么标签