很多人在搭蜘蛛池入口页时,会顺手把入口页 URL 丢进 sitemap 提交给搜索引擎,然后就等着搜索蜘蛛来抓。随之而来的疑问是:既然 sitemap 已经告诉搜索引擎这些 URL 存在,页面里那些指向目标 URL 的超链接,还有必要放吗?两者到底是什么关系?
sitemap 和页面链接,是两条不同的发现路径
先明确一点:sitemap 和页面内链接解决的不是同一个问题。
- 页面链接:搜索蜘蛛先抓到一个页面,再顺着页面里的 a 标签发现新 URL。前提是这个页面本身已经被抓到过。
- sitemap:相当于主动交一份 URL 清单,让搜索引擎知道这些地址存在。它更适合那些缺少外链、又不是从别处链过去的新域名或新目录。
也就是说,sitemap 能帮入口页被更快发现,但入口页被发现之后,页面上有哪些链接、锚文本是什么,仍然要靠抓取页面本身才能拿到。
sitemap 不能完全替代页面里的链接
有人会想:既然 sitemap 里已经把目标 URL 全列出来了,入口页里就不用放链接了。这样做有几个现实问题。
- 只有 URL,没有上下文。页面链接旁边的文字、锚文本、所在段落的主题,都是搜索蜘蛛判断这个链接指向什么的参考。sitemap 里只有一串地址,信息量少得多。
- 提交不等于被抓取。sitemap 是告知,不是指令。搜索引擎会按自己的抓取配额和优先级决定什么时候抓、抓多少,没有任何提交方式能保证被收录。
- 入口页会失去结构。如果入口页里没有实际链接,它本身就变成一页几乎没内容的清单,长期看对入口页自身的可信度没有帮助。
更常见的做法:两条路一起走
实际运营里,常见的是分工使用,而不是二选一。
- 把入口页自身的 URL 放进 sitemap,让它更快被发现,尤其是在新域名阶段。
- 在入口页里用正常的 a 标签放目标 URL,保留锚文本和上下文,让搜索蜘蛛抓到入口页后能顺着走。
- 如果目标站是自己可控的站,可以再单独给目标站做一份 sitemap;如果目标站不可控,就不要把别人的 URL 塞进自己的 sitemap,避免被当成异常数据。
- 入口页数量多的时候,用 sitemap 索引文件组织,不要把所有 URL 塞进一个文件里。
提交 sitemap 时容易踩的坑
- 地址写法不统一。http 和 https、带 www 和不带 www、结尾斜杠有无,混着写很容易被当成不同 URL,白占配额。建议统一成最终地址。
- 放了不能抓的 URL。返回 5xx、被 robots.txt 屏蔽、带 noindex 的地址放进 sitemap,抓取后大概率是无效消耗,还可能影响这份 sitemap 的整体可信度。
- 反复提交同一份。内容没变化时高频重新提交,不会加快速度,反而显得异常。有更新再更新文件即可。
- 只提交不检查。搜索资源平台里的 sitemap 报告能看到已提交和已抓取的差距,长期只提交不被抓,要回头查入口页本身的质量和服务端响应。
怎么判断有没有起作用
最直接的方式还是看日志。可以对比一段时间内搜索蜘蛛对入口页的抓取次数,和对目标 URL 的抓取次数变化。如果入口页被大量抓取,但目标 URL 几乎没有动静,问题多半出在入口页里的链接形式或目标 URL 自身的返回状态,而不是没提交 sitemap。
sitemap 负责让入口页被找到,页面链接负责让目标 URL 被顺着发现,两者互补,谁也替代不了谁。
如果你的入口页目前只靠 sitemap 提交、页面里没有实际链接,建议先补上正常的 a 标签,再观察日志里的抓取变化,而不是继续加大提交频率。