在生成 XML 之前先定义收录资格
XML 站点地图是机器可读的 URL 列表及可选元数据。以收录资格规则开始,而非爬虫导出:仅当页面面向搜索、可公开检索且为其内容的首选版本时才包含。将分面目录 URL、站内搜索结果、活动变量、登录目的地和预览排除,除非它们确实是公开的搜索目标。
针对搜索的公共、有用页面,且存在一个首选 URL。
重定向、错误、重复、noindex 页面和私有路由。
发现帮助不等于抓取或索引的保证。
列出规范 URL,而不是列出所有访问方式
规范 URL 是你希望搜索引擎作为类似版本代表的那个版本。站点地图的包含是一个弱规范信号,因此应当强化而不是与重定向、自引用的 rel=canonical 标签和内部链接相矛盾。选定一个稳定的 HTTPS 格式并准确输出该版本。
检查 http 与 https、www 与非 www、尾部斜杠规则、大小写、打印页面、过滤器和跟踪参数。如果某个 URL 会发生重定向,只列出它的最终规范目标。每个独立面向的本地化页面应有自己的规范 URL;不要用站点地图将不同的本地化内容合并。
写出完整的协议和主机,而非相对路径。Google 会按列表中的 URL 抓取。
站点地图、canonical 标签、内部链接和重定向策略应指向同一页面。
阻止重复页面不会建立首选版本。
保持 XML 文件小、有效且真实
使用站点地图协议(Sitemap Protocol)结构:UTF-8 编码的 XML,包含 urlset、站点地图命名空间,以及每个 URL 的 loc。对 URL 值中对 XML 敏感的字符进行转义。自动化应序列化 URL,而不是手工拼接 XML。
每个站点地图最多可包含 50,000 个 URL,且未压缩大小不得超过 50 MB。这些是上限,不是目标。如产品、文章、本地化或内容类型构成有用的操作边界,应提前拆分。
仅在页面发生真实的重大内容变更时使用 lastmod。Google 在 lastmod 一致且可验证准确时会使用它;例如仅更新版权年份不构成有效变更。切勿将每个 URL 都打上生成时间。Google 会忽略 changefreq 和 priority,因此可省略它们。
loc 为必需;lastmod 为可选,且必须描述页面而非生成时刻。
Gzip 可减小传输大小,但解压后的文件必须仍然小于 50 MB。
检查 XML 是否良构、可获取性以及所列页面的实际行为。
使用索引以在不丢失归属的情况下扩展
站点地图索引列出子站点地图文件。当站点超过单文件限制或需要独立清单时使用。按编辑团队、产品或帮助中心所有权进行分组。索引与子文件同样受 50,000 项和 50 MB 未压缩限制约束。
将子文件保存在目标站点的稳定 URL 上。协议通常将可被列出的 URL 与站点地图的主机和位置绑定;跨站点安排需要已验证的所有权。
围绕可测试的目的拆分——内容类型、店面、本地化集合或部署边界。记录生成器、所有者和预期条目量。
提交完整索引而不是逐个手动提交子文件。
索引的 lastmod 描述的是站点地图文件本身,而不是其包含的页面。
正确发布、提交并解读结果
将站点地图托管在稳定、公开可获取的 HTTPS 地址,最好靠近站点根目录。在 robots.txt 中添加绝对的 Sitemap 指令。在 Google Search Console 和 Bing Webmaster Tools 中提交站点地图或索引以查看处理详情。
在 Search Console 中,“成功”表示站点地图被抓取且读取无错误。“有错误”表示读取时存在错误;“无法抓取”表示站点地图不可用。修复交付、认证、DNS、robots、重定向或 XML 问题后重新提交。
将被发现的页面计数作为诊断输入,而非评分标准。被发现的页面并不保证被抓取或索引。对照其规范 URL、响应以及索引报告抽样 URL 进行验证。
robots.txt 有助于发现;工具提交会暴露处理报告。
Search Console 列出的是通过报告或 API 提交的文件,而不是 robots.txt 发现的每一项。
把站点地图当作发布关键的站点基础设施来运营
当 CMS 插件更改、部署修改了规范主机、缓存规则提供陈旧输出或批量作业发布不完整页面时,站点地图质量可能退化。将站点地图检查纳入预发布和回滚流程。不要在没有警告的情况下用一个空或畸形的文件替换完整清单。
保留之前已知的良好站点地图,标记意外的数量变化,并在发布前抽样新增与移除条目。当路径变更时,将重定向、canonical 标签、内部链接和站点地图作为同一变更集协调执行。这是主动的可用性优化:在爬虫和访问者发现断链之前保护可被发现的公共面。
对无效、空、错误主机或非规范的站点地图输出暂停发布。
保留先前的工件和生成器配置以便回滚。
