最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
基于JSON-LD的HTML结构化数据标记和搜索优化
时间:2026-07-09 11:26:46 编辑:袖梨 来源:一聚教程网
JSON-LD必须放在<head>或<body>内部,不能嵌套在<div><template><noscript>等标签内,且需服务端渲染、禁用async/defer/type="module",Googlebot仅解析首屏直出的纯JSON脚本块。
JSON-LD 必须放在 <head> 还是 <body>?
必须放 <head> 或 <body> 内部,且不能嵌套在其他标签里——<div>、<template>、<noscript> 里都不行。Googlebot 不执行 JS,也不解析 DOM 结构,只扫描原始 HTML 中直出的 <script type="application/ld+json"> 块。
常见错误现象:Search Console 显示“未检测到结构化数据”,但源码里明明有——大概率是被框架(如 Next.js 的 useEffect)动态插入,或 CMS 输出时套进了 <section> 标签里。
- SSR / 静态站点(Hugo、Jekyll)天然安全,直接写进模板即可
- React/Vue 项目务必确保该 script 在服务端渲染(SSR)阶段就输出,别等客户端挂载
- 绝对不要加
async、defer或type="module",这些会让浏览器跳过解析
json_encode() 动态生成 JSON-LD 时容易翻车的点
PHP 或 Node.js 模板中用函数拼 JSON-LD 很常见,但 json_encode() 默认不处理 HTML 实体和中文编码,直接吐出去常导致语法非法或字段丢失。
使用场景:CMS 文章页、商品详情页等需根据数据库字段动态生成结构化数据的页面。
立即学习“前端免费学习笔记(深入)”;
- 必须传
JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES,否则中文变 uXXXX,斜杠被转义 - 所有字符串字段(如
headline、description)要先过htmlspecialchars($str, ENT_QUOTES, 'UTF-8'),防 XSS 和引号破坏 JSON 结构 - 检查
json_last_error(),失败时记录日志,别静默吞掉错误 - 避免在循环中反复调用
json_encode()拼接多个对象——改用数组 push 后统一 encode
Article 类型为什么加了却不出富摘要?
不是写了 "@type": "Article" 就能触发 Google 富摘要。它只认三要素齐全且格式严格的组合:缺一不可,错一个字段名或格式就静默忽略。
使用场景:仅限单篇正文页(博客、新闻稿),列表页、首页硬塞会降低可信度。
-
headline:必须是字符串,不能为空或纯空格 -
datePublished:必须是 ISO 8601 格式,如"2026-07-01T10:30:00+08:00";"2026-07-01"可接受,但"2026/07/01"或中文日期直接失效 -
author:必须是对象,含"@type"和"name",例如{"@type": "Person", "name": "张三"};只写"author": "张三"不生效 -
image字段填的 URL 必须返回 200、可公开访问、且为绝对路径(https://开头)
本地验证时 Rich Results Test 报错但源码看着没问题?
工具报“无法解析”或字段缺失,往往不是逻辑问题,而是环境干扰或细节疏漏。
性能影响几乎为零,但验证环节最容易踩坑。
- 浏览器插件(尤其广告屏蔽、隐私类)可能过滤掉
<script type="application/ld+json">,测试前务必禁用 - 复制粘贴 HTML 到工具时,确认包含完整
<script>块,且没被编辑器自动删掉末尾逗号或换行 - 相对路径(如
"image": "/img/logo.png")会被判无效,必须转成绝对 URL -
@context必须严格为"https://schema.org",写成http或拼错字母(如schem.org)都会失败
相关文章
- 企业微信电脑网页版登录入口-企业微信网页版登录入口地址电脑版 07-09
- eMule如何设置启用MiniMule功能 07-09
- 建筑业资质延续指引 07-09
- 建筑业企业资质申报指南 07-09
- 建筑业营业税税率是3%还是5% 07-09
- MySQL库表操作与数据类型及基础概念全知识点梳理 07-09