站点地图(sitemap)本质上是一份给蜘蛛看的 URL 清单。它能做的是把站点希望被抓取的地址集中列出来,降低“蜘蛛不知道有这些页面”的概率;它不能保证收录,也不能替代内链和内容质量。很多站点的问题不在“有没有站点地图”,而在于这份清单长期没人维护,慢慢变成一份过期台账。
先确认站点地图真的被引用和读取
做最基础的确认:站点地图能否正常打开,返回状态码是否为 200,内容类型是否合理(XML 文件通常是 application/xml 或 text/xml)。如果服务器把 .xml 当成下载文件,或者地址返回 404,后面的优化都无从谈起。
- 确认 robots.txt 中写了 Sitemap 指令,并且使用完整 URL。
- 确认站点地图地址没有大小写错误、多余斜杠和层层重定向。
- 提交到搜索资源平台后,隔几天回看抓取与解析情况,而不是提交完就当任务结束。
哪些 URL 该进,哪些不该进
清单越长越好是个常见误解。站点地图里每多一条无效或重复地址,都会消耗一次无意义的抓取尝试。取舍原则可以参考以下几点:
- 该进:正常返回 200 的正文页、栏目列表页、有独立内容价值的聚合页。
- 慎重:分页列表的深层页码,视站点规模和抓取预算决定。
- 不该进:登录、购物车、后台等对蜘蛛无意义的页面。
- 不该进:被 robots.txt 屏蔽的目录,放进清单本身就是自相矛盾。
常见错误自查清单
- 清单中存在 robots.txt 明确禁止抓取的地址。
- 包含大量带筛选、排序参数的组合 URL,且内容与主列表高度重复。
- 写的是 301、302 的跳转地址,而不是跳转后的最终地址。
- 包含已经下线、返回 404 或 410 的页面。
- 包含 canonical 指向其他页面的地址,等于让蜘蛛抓到一份“副本入口”。
- 同一页面同时出现 http 与 https、带 www 与不带 www 两种写法。
- lastmod 全部是同一时间,或者标注的时间比页面实际更新还新。
规模大了就用索引文件拆分
单个站点地图文件一般不超过 5 万条 URL、50MB(未压缩),超过这个量级就应拆成多个子地图,再用 sitemapindex 索引文件串起来。拆分维度建议按栏目或内容类型划分,出问题时容易定位是哪一个板块的清单在报错。索引文件里填的是子地图文件的地址,不是具体页面地址。
更新频率与 lastmod 怎么写
changefreq 和 priority 如今基本只是提示性字段,不会被严格遵循,但 lastmod 值得认真对待:只有内容确实发生变化时才更新,不要为了“看起来活跃”批量刷时间。站点规模小,手动维护可以接受;规模大,就交给程序在发布、修改、删除时自动同步,避免人工遗漏。
它和 robots、canonical、内链的分工
站点地图不是孤立工具。被 robots.txt 屏蔽的地址不要写进清单;canonical 指向他页的地址,清单里应该放 canonical 的目标地址;重要页面除了进清单,还得有站内链接入口。站点地图负责“告知有哪些地址”,内链负责“让地址更容易被发现和传递权重”,两者不能互相替代。
把站点地图当成一份需要定期核对的清单,而不是一次性提交的文件。每次结构调整、栏目下线、URL 规则变更之后,都应该回来看一眼它是否还跟得上当前站点。
一个可执行的核对节奏
- 每周:检查站点地图能否访问、是否被成功解析。
- 每月:抽查清单中的 URL 状态码,清理失效地址与重复条目。
- 每次改版:确认新 URL 已加入,旧 URL 已移除或替换为最终地址。
这些动作花不了多少时间,却能避免蜘蛛拿着一份过时清单反复空跑。站点地图的价值在于准确和及时,而不是条目数量。