提到内链,很多人的第一反应是给文章末尾加一排相关推荐。但从蜘蛛的角度看,一个站点里真正被反复走过的链接,往往集中在三个位置:全局导航、面包屑和正文里的相关链接。它们不是谁替代谁的关系,各自负责的发现任务并不一样。
全局导航:覆盖面最广的那一层
导航出现在每个页面的顶部或侧边,蜘蛛从任意一个入口页进来,都能看到同一批链接。这是它最省力的发现通道,所以导航里放什么,实际决定了蜘蛛能多快触达你的主要栏目。
- 导航指向的应该是长期运营的栏目页,而不是活动页、注册页或临时专题。这类页面被每次抓取反复请求,会占用抓取额度,也让真正想推的栏目被稀释。
- 层级尽量控制在两级以内。更深的页面交给栏目页往下带,不要指望一个导航就覆盖全站。
- 用普通的 a 标签加 href。靠 onclick 跳转、靠脚本拼接的菜单,蜘蛛不一定能执行。
- 对导航链接使用 nofollow 要谨慎,它会让这条发现路径直接断掉。
面包屑:给页面一个能回头的层级
面包屑通常被当成用户体验的装饰,但它对抓取的意义在于提供一条从首页到当前页的完整链路。当某个详情页没有被栏目页直接链接时,面包屑还能让它留在可抓取的路径上,不至于变成孤岛。
写法上,面包屑的层级最好和 URL 路径、Sitemap 里的结构保持一致。如果面包屑指向的分类和页面实际所属的分类对不上,或者不同页面之间的层级互相矛盾,蜘蛛往往会选择更保守的那条路径来理解,反而降低了深层页面的抓取机会。
面包屑、URL 层级、Sitemap 层级这三处如果长期不一致,抓取的路径判断会变得模糊,页面的重要性也很难稳定传递下去。
正文相关链接:把抓取引向深层页面
相关链接的价值在相关性,不在数量。一个页面挂上几十个链接,每个被逐个请求的概率会被摊薄;而五到八个语义接近的链接,更容易让蜘蛛顺着正文语境继续往下走。几个实用原则:
- 同主题的详情页互链,形成小范围的内部闭环,而不是把所有页面都指向首页。
- 新页面优先从已有抓取记录的老页面链出,让它有一条现成的进入路径。
- 锚文本描述目标页面的内容,别写“点击这里”“查看更多”这类没有信息量的词。
- 同一批链接不要在每个页面重复出现,重复度太高时,蜘蛛可能只走其中一部分。
列表页与分页:别在第二页之后断掉
列表页是深层页面最主要的入口之一。常见问题是分页只保留“上一页/下一页”,而没有可爬的页码链接,蜘蛛翻到某一页之后就找不到后续。更稳的做法是保留带页码的链接,让每一页都能被直接指向;同时确认分页链接是 href 形式,而不是点击后才通过脚本加载。
如果列表内容确实很长,可以考虑按分类或时间拆成多个可独立访问的列表页,而不是无限下拉加载。加载出来的内容如果没有对应的 URL,蜘蛛即使执行了脚本,也很难把它当成一个独立的发现入口。
链接形式:能爬的和爬不到的
内链做得再多,形式不对也白费。用 href 写清楚的链接是最稳的;通过表单提交、鼠标事件、脚本动态插入的链接,蜘蛛的处理方式并不一致。至少在导航、面包屑和分页这三处,不要依赖脚本。
怎么验证内链有没有真的起作用
把访问日志里的蜘蛛请求按路径归类,看它是否沿着导航、面包屑、正文链接往下走。如果某个深层页面长期只有来自 Sitemap 的请求,没有任何内链来源,说明站内还没有给它一条稳定的进入路径,它在抓取队列里的优先级通常也不会太高。
反过来,如果发现某个栏目页被频繁请求,但它的下级页面很少出现,那大概率是栏目页到下级页的链接断了,或者链接藏在脚本里没被识别。
小结
导航负责覆盖面,面包屑负责层级一致,正文链接负责相关性引导。三者不需要写得多复杂,但要保证链接真实可爬、层级和 URL 对应、不把有限的抓取额度浪费在无意义的入口上。内链理顺之后,Sitemap 和外部链接的作用才更容易叠加起来。