报错是这么冒出来的。日志里 Googlebot 每天抓几十次首页,栏目页和文章页一周都没有一次访问,内链结构在导航那一层就断了。
真正麻烦的地方在于,几个原因的现象几乎一样。导航菜单用 JS 生成,源码里没有可抓取的 a 标签。另一种情况是栏目页被 noindex 或 robots 挡住,蜘蛛主动放弃。
不容易想到的是,首页没有指向栏目的静态链接,只有轮播图。
先看去掉 JS 后的源码里有没有链接
curl -s https://www.example.com/ | grep -o '<a href="[^"]*"' | head -20
再往下把导航改成服务端渲染的普通链接
echo get_category_link($cat_id);
剩下的就是确认栏目页没有被 noindex
curl -s https://www.example.com/cat/news/ | grep -i robots
手上没有现成的复现脚本,就照着线上请求手工拼了一个。
别只看报错消失,验证要多做一步。日志里开始出现栏目页和文章页的抓取记录,层级逐层展开,新文章被抓的间隔缩短。
提醒一点。链接放在 JS 里对用户没影响,但对蜘蛛等于不存在,导航和面包屑必须是可抓取的 a 标签。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。