itemtype必须是完整HTTPS URL且与itemscope同标签出现,不可缩写、省略协议或加末尾斜杠;同一容器仅允许一个itemtype,须严格匹配页面核心实体类型,否则整块微数据被忽略。

itemtype必须是完整HTTPS URL,不能缩写或省略协议
Google 和所有主流结构化数据解析器(包括 Rich Results Test)在 2026 年已全面拒绝非 HTTPS 的 itemtype 值。写成 http://schema.org/Product、//schema.org/Person 或直接 Product 都会导致整块微数据被忽略。
常见错误包括:复制旧文档时漏掉 s;用本地路径如 /vocab/Event;或从 schema.org 页面右键复制链接得到带末尾斜杠的 URL(如 https://schema.org/Event/)——这个斜杠非法,必须删掉。
- ✅ 正确:
itemtype="https://schema.org/Article" - ❌ 错误:
itemtype="http://schema.org/Article" - ❌ 错误:
itemtype="Article" - ❌ 错误:
itemtype="https://schema.org/Article/"
验证方式很简单:把 itemtype 值粘贴进浏览器地址栏,必须返回 HTTP 200 页面(哪怕只是 HTML 文档),否则解析器不认。
同一容器只能有一个itemtype,但可叠加多个itemprop
itemtype 定义的是“这个容器描述什么类型的事物”,它不是属性列表,也不支持多类型并列。试图写成 itemtype="https://schema.org/Person https://schema.org/Author" 或用空格/逗号分隔,解析器会直接报错或静默失败。
立即学习“前端免费学习笔记(深入)”;
如果一个实体确实符合多个 schema 类型(比如某人既是 Person 又是 Organization 成员),正确做法是选最贴近主体的类型作为主 itemtype,其余信息通过合法 itemprop 表达(例如用 jobTitle、alumniOf 等属性补充)。
- 主类型决定结构化数据能触发哪些富媒体功能(如
LocalBusiness触发地图,Recipe触发食谱卡片) - 混用类型不会增强效果,只会让 Google Rich Results Test 显示 “Invalid itemtype”
- 嵌套子对象可以有自己的
itemtype(如author下挂https://schema.org/Person),但父容器仍只允许一个
itemtype必须和itemscope出现在同一HTML标签上
这是最容易被忽略的硬性约束:itemscope 和 itemtype 必须共存于同一个开始标签内,不能拆到父子元素上,也不能靠 JS 动态注入后补全。
典型错误场景:
- 在
<body itemscope>上写itemscope,然后在深层<article>里加itemtype—— 失效 - 用 CSS 类名模拟作用域,比如
<div class="product-scope"><div itemtype="https://schema.org/Product">—— 失效 - 服务端渲染时漏传
itemtype,只传了itemscope—— 整块被跳过
正确写法只有一种:<div itemscope itemtype="https://schema.org/Product">。少一个属性,itemprop 就失去上下文,所有字段值都不会进入结构化数据图谱。
页面主体决定itemtype,不是按模块硬套
一个页面可能包含产品、评论、作者、面包屑等多个信息块,但 itemtype 应该反映页面的**核心实体类型**,而不是哪个模块看起来“最重”。
例如企业官网首页,即使有三段产品介绍,主容器也该用 https://schema.org/Organization;而单品详情页才该用 https://schema.org/Product。Google Rich Results Test 会检查 itemtype 与页面可见内容的语义一致性,不匹配时提示 “Itemtype doesn’t match the content”。
- 博客文章页 →
https://schema.org/Article(不是WebPage) - 餐厅菜单页 →
https://schema.org/Restaurant(不是Menu,后者不是顶级类型) - 活动报名页 →
https://schema.org/Event(不是WebPage或Organization)
嵌套的 itemtype(如评论里的 Review、地址里的 PostalAddress)可以自由使用,但外层主容器的 itemtype 选错,整个结构化数据就失去落地价值。



















