不少站长把 sitemap 当成收录开关:文件提交上去,就等着页面一个个进索引。实际做下来会发现,sitemap 通常只解决一件事——把地址明确地告诉搜索引擎。至于这个地址什么时候被抓、抓完要不要收,仍然由页面本身决定。所以更实用的思路是:先把这份清单写对,再谈提交之后怎么查。
先说清楚 sitemap 的边界
它是一份 URL 清单,不是收录指令。它负责让地址被看到,不负责让地址被收录。
明白这一点,很多困惑就消失了。比如清单里的地址一直停在“已发现,尚未抓取”,那不是 sitemap 没交对,而是抓取排队和优先级的问题;页面被抓了却没进索引,那要回到内容质量、重复度、规范地址上找原因,跟清单本身关系不大。
反过来,sitemap 也确实有用:站点层级深、内链稀少、新页面没人链过去时,它能给搜索引擎一条明确的入口。尤其是新站或大站的新栏目,光靠内链爬过去可能要等很久。
哪些 URL 适合放进 sitemap
- 返回 200、可以直接打开的正常页面;
- 内容有独立价值,且你希望它被搜到的地址;
- 已经收敛过的规范版本,不要同时放带参数、带大小写变体的多个副本;
- 页面自身没有 noindex,也没有被 robots.txt 挡住抓取。
反过来说,下面这些放进去基本是浪费位置,还可能让抓取判断变乱:跳转地址、404 或已下线的页面、登录后才可见的页面、筛选和排序产生的临时地址、分页里内容高度重复的那几页、以及一批内容几乎一样的聚合页。清单越干净,搜索引擎对它的信任越稳定。
几个容易被忽略的写法问题
lastmod 不要随手写
lastmod 表示这个地址的内容最后一次实质性变化的时间。如果每次生成都把全部地址刷成当前时间,这个字段就会失去参考价值。只更新真正改过的页面,或者在自动生成时按实际修改时间写入,比统一刷新更有意义。改个错别字要不要动 lastmod?影响不大,但也不值得为它把整份清单刷一遍。
分片和条数要按规则来
单个 sitemap 文件有地址条数和体积上限,超过就要拆成多个文件,再用一个索引文件把它们列出来。很多工具会自动处理,但自建脚本时容易漏。另外,地址里的特殊字符要做转义,非英文地址建议使用编码后的形式,避免解析失败。
清单里的地址要和页面上的一致
协议、域名写法、结尾斜杠要跟页面里的规范地址保持统一。如果清单里写的是 http 版本,页面上却是 https,或者一边带 www 一边不带,就会多出一次跳转,甚至让两个版本各被当成一个地址。写清单之前,先把站内的规范形式定下来,然后全站照做。
提交之后的自查顺序
- 先确认文件能被正常访问:直接在浏览器打开 sitemap 地址,看是否返回 200、内容是不是完整 XML。
- 再看格式有没有报错:XML 标签未闭合、缺少命名空间、编码声明不对,都会导致整份清单读不出来。
- 然后抽查清单里的地址:随机挑几条,确认能打开、状态码正常、页面可索引。
- 接着对照收录数据:把清单里的地址和实际已收录的地址做个比对,看看差距集中在哪一类页面上,是全部还是某个栏目。
- 最后看服务器日志:蜘蛛是否按清单来抓过、抓取的频率如何、有没有大量 404 或 5xx。日志里的信息比后台数据更直接。
这几步走完,通常就能判断问题出在清单本身、页面本身,还是抓取节奏上。
什么时候该重新生成
不必每次改内容都重做。比较合适的时机是:新增了一批页面、旧页面批量下线、栏目结构做了调整、或者发现清单里混进了大量无效地址。保持清单和线上真实可索引的地址一致,比追求天天更新更重要。
小结
sitemap 的价值在于减少发现成本,而不是替代内容质量。把清单里的地址筛干净、字段写准确、定期和线上状态核对一遍,剩下的就交给页面的内容和内链结构去决定。清单只是一个入口,走进去之后的事,还得看页面自己。