入口页要发挥作用,前提是搜索蜘蛛能拿到里面的链接。很多人纠结:到底该把目标 URL 放进 sitemap,还是靠入口页上的普通链接?两者的发现机制不一样,适用场景也不一样,硬要二选一往往效果打折。
一句话结论:sitemap 解决的是“我知道有哪些 URL”,HTML 内链解决的是“蜘蛛走到这里顺手发现”。单独用一条都能跑通,组合起来更稳。
两条路径的机制差别
sitemap:批量声明,等待调度
sitemap 是一份 URL 清单,搜索蜘蛛按自己的节奏去读取,读取频率和站点整体抓取状况相关。它的优势是一次可以覆盖很多 URL,不用依赖蜘蛛是否刚好爬到某个页面;缺点是“读到了”不等于“马上抓”,中间还隔着调度排队,时间不可控。
HTML 内链:跟随抓取顺带发现
入口页被抓取时,蜘蛛会解析页面里的 a 标签,把新的 URL 加入待抓队列。这条路径依赖两点:入口页本身被抓,以及链接在初始 HTML 里真实可见。它不需要额外提交,但发现速度完全取决于入口页的抓取频率。
哪些情况下某条路会失灵
- sitemap 文件本身返回异常状态码,或被 robots.txt 屏蔽,蜘蛛读不到内容。
- sitemap 里的 URL 和实际可访问地址不一致,比如大小写、末尾斜杠、参数不同,读到了也未必抓得动。
- 入口页链接由 JavaScript 渲染,蜘蛛拿到的初始 HTML 里没有 a 标签。
- 入口页返回 403、404 或跳转到无关页面,蜘蛛不会继续解析链接。
- 链接被 nofollow,或指向被屏蔽的路径,被发现后也可能不跟进。
实操上怎么搭配
- 先确认入口页能被正常抓取:返回 200、Content-Type 是 text/html,链接是服务端渲染出来的 a 标签。
- 把稳定不变的目标 URL 放进 sitemap 当作兜底,入口页内链负责“新加的那一批”。
- sitemap 里只放 200 状态、可被抓取的 URL,别把跳转链、各种参数变体一股脑塞进去。
- 入口页每次更新后,对照日志看蜘蛛下一次访问的时间,判断这条路径的实际节奏。
- 如果两条路都走了还是没抓到目标页,问题多半不在发现环节,要回头查 robots、noindex、服务器响应。
容易被忽略的两个细节
第一,sitemap 有数量和体积限制。大站通常要拆成多个文件并建索引,否则蜘蛛可能只读到前面一部分。拆分粒度可以参考目录结构或更新时间,方便后续定位问题。
第二,内链的价值不只在发现。同一个目标 URL 从多个入口页被链接,蜘蛛更容易判断它值得抓;但重复堆叠同一链接、同一锚文本,边际效果会迅速下降,没必要为了数量硬堆。
常见误区
- 以为提交 sitemap 就等于完成发现。提交只是告知,抓取和收录是后面各自独立的环节。
- 以为入口页链接越多越好。蜘蛛对单页的解析和跟进有上限,链接质量比数量重要。
- 发现新链接后立刻换掉 sitemap,让老 URL 失去兜底,出现抓取断层。
小结
sitemap 和 HTML 内链是同一个问题的两个半边:前者覆盖面广、节奏不可控;后者依赖抓取,但胜在自然。把入口页做干净、链接可解析,再用 sitemap 兜底,是比较省心的组合。真正的瓶颈往往出现在发现之后的抓取与索引环节,那部分要靠页面内容和站点状态去解决,换一条发现路径绕不过去。