itemtype必须是完整HTTPS URL且与itemscope同标签;itemprop值须用户可见并类型匹配;嵌套实体需独立声明itemscope和itemtype。

itemtype 必须是完整 HTTPS URL,不能缩写或省略协议
搜索引擎和结构化数据验证工具(如 Google Rich Results Test)只认完整的、合法的 https://schema.org/... 地址。写成 itemtype="Brand"、itemtype="https://schema.org/Brand/"(末尾斜杠)、itemtype="//schema.org/Brand" 或旧版 http://data-vocabulary.org/Brand,整块 microdata 都会被忽略。
常见错误场景:从老教程复制代码、用 AI 生成 HTML 时未校验 URL 格式、本地开发环境误配相对路径。
-
https://schema.org/Brand✅ 正确(协议 + 域名 + 路径,无尾部斜杠) -
https://schema.org/Organization✅ 正确(适用于含注册信息的企业实体) -
Brand❌ 解析器不认识,等同于没写 -
https://schema.org/Brand/❌ 末尾斜杠导致部分爬虫拒解析 -
http://schema.org/Brand❌ 协议不安全,2026 年起 Google 已停用
itemscope 和 itemtype 必须出现在同一 HTML 元素上
这是 microdata 生效的硬性前提。只加 itemscope 不加 itemtype,或反过来,或把二者拆到父子元素里,Google 都会跳过整块数据。
典型错误写法:<div itemscope><section itemtype="https://schema.org/Product">...</section></div> —— 这里 itemscope 和 itemtype 不在同一个标签,无效。
立即学习“前端免费学习笔记(深入)”;
- 正确写法:
<div itemscope itemtype="https://schema.org/Product">...</div> - 推荐复用语义化容器,比如用
<article itemscope itemtype="https://schema.org/BlogPosting"></article>替代无意义的<div> <li>嵌套结构中,每层实体都必须独立声明 <code>itemscope和itemtype,不能“继承”父级 - 价格必须用
<meta itemprop="price" content="299.00">,不能直接写 “¥299” 文本 - 日期必须用
<time itemprop="datePublished" datetime="2026-10-10">昨天</time>,datetime属性才是机器读取的值 -
telephone只在Person或Organization类型下合法,Product里加会无效 - 图片优先用
<img itemprop="image" src="..." alt="HTML itemtype属性Microdata使用方法" >;若用 URL 字符串,得用<meta itemprop="image" content="https://..."> - 错误:
<p itemprop="author">张三</p>(没声明这是 Person) - 正确:
<p itemprop="author" itemscope itemtype="https://schema.org/Person"><span itemprop="name">张三</span></p> - 品牌嵌套在产品中:
<div itemprop="brand" itemscope itemtype="https://schema.org/Brand"><span itemprop="name">小米</span></div> - 每次加完嵌套,建议立刻用 Google Rich Results Test 验证一次
itemprop 值必须对用户可见,且类型要匹配 schema.org 定义
itemprop 不是万能标签,它标注的值必须满足两个条件:一是内容需真实展示在页面上(除非是 logo、sameAs、price 等允许隐式值的属性),二是数据格式要严格符合该属性在 schema.org 中的定义。
例如标品牌名:<span itemprop="name">Apple</span> 是 OK 的;但若写成 <meta itemprop="name" content="Apple"> 就不行 —— 因为 name 要求用户可见文本,而 meta 是隐藏的。
嵌套实体(如 author、brand、review)必须显式声明内层 itemscope
microdata 没有作用域继承机制。哪怕外层是 BlogPosting,里面写 itemprop="author",也必须再包一层 itemscope itemtype="https://schema.org/Person",否则解析器无法识别作者是一个独立实体。
容易被忽略的点:嵌套层级越深,漏掉某一层 itemscope 的概率越高;尤其当品牌、作者、评论、评分混在一起时,每个子实体都要单独“开户”。
最常出问题的地方不在“怎么写”,而在“写了但没生效”——往往因为某个 itemscope 漏了、某个 itemtype 多了个斜杠、或者某个 itemprop 的值类型和 schema.org 定义对不上。验证不是可选项,是必经步骤。



















