先看现象。新主题用前端框架渲染面包屑,源码里只有一个空 div,数据靠接口拉取。抓取诊断里面包屑内链一条都没有,列表页的层级链全断了。试过在 sitemap 里补,没有补回内链。
排查方向其实有限,先把可能性排一排。JS 注入的链接不保证在抓取窗口内出现,尤其依赖二次请求时。另一种情况是页面没有 noscript 兜底,蜘蛛拿到的就是空容器。
少数情况下是面包屑的结构化数据也由 JS 插入,富媒体测试同样为空。
不容易想到的是,列表页到详情页只剩分页链接,层级深度变浅。
先看源码里有没有真实 a 标签
curl -s https://www.example.com/post/1/ | grep -o '<div id="breadcrumb">.*</div>'
然后改成服务端渲染
printf '<nav aria-label="breadcrumb"><a href="/">首页</a> > <a href="/cat/">栏目</a></nav>\n' >> /var/www/html/inc/breadcrumb.php
补一份服务端 JSON-LD
curl -s https://www.example.com/post/1/ | grep -c 'BreadcrumbList'
末了用抓取工具复核链接数
curl -s https://www.example.com/post/1/ | grep -o 'href="/cat/' | wc -l
怎么算真的好了,看的是同一批现象。面包屑改成服务端输出后,详情页多出三条可抓内链,抓取工具里的层级深度恢复,富媒体测试也通过。
面包屑不只是导航,它是蜘蛛判断层级的主要依据,交给前端渲染等于把这层信息丢掉。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
