站点地图里混进 404:一个很低级但很伤收录的错

· zblog · 阅读 2
摘要

sitemap 的作用是告诉搜索引擎「这些页面值得抓」。如果里面混了 404 页面,等于在告诉它「我这边有不少坏链接」。为什么会混进去文章被删了,sitemap 没重新生成草稿状态的文章被算进去了URL 改过,sitemap 里还是旧地址插

把站点地图丢进 Search Console 或百度站长平台,最常报的问题就是「已提交的网址中有 N 个返回 404」。这个数字看着吓人,实际要先分清两种情况。

情况一:网址确实已经不存在了

这类多半来自历史遗留——你删过文章、改过别名、合并过分类,但 sitemap 是程序自动生成的,理论上是实时的。然后你发现 sitemap 里还有旧地址,通常说明两件事之一:

缓存没清。Z-Blog 的 sitemap 插件或主题内置的生成器,很多会缓存一份 XML 文件,文章删了但文件没重新生成。解决办法是在后台清一次缓存,或者手动触发重新生成。

sitemap 是静态文件而非动态输出。有些站把 sitemap 导出成 sitemap.xml 放在根目录,这种情况下程序再怎么实时,文件也不会自己变。要么改成动态路由,要么每次发文章后手动重新导出。

情况二:网址本身没问题,是 sitemap 里的格式写错了

这个更隐蔽。常见几种:

  • URL 带了多余的参数,比如 ?from=sitemap,而实际页面只认裸地址
  • 开启了伪静态但 sitemap 里输出的还是动态地址
  • URL 里含中文未编码,& 未转义
  • 协议不一致,站点是 https 但 sitemap 里写的是 http

协议不一致这类问题尤其多见——从 http 迁到 https 之后,忘了改 sitemap 生成配置,导致整份 sitemap 全部失效。这种整份报错的情况反而好处理,一眼就能看出来。

怎么快速定位是哪种

拿报错的那几条 URL,直接复制到浏览器地址栏访问:

  • 能打开,内容也对 → 是 sitemap 生成的问题
  • 能打开,但自动跳到了别的地址 → 是重定向,sitemap 里应该写最终地址
  • 打不开,404 → 是历史遗留,清理掉就行
  • 打不开,500 → 服务器或插件出错,先修这个

逐条验证比较笨,但最可靠。数量多的时候可以先用工具的批量状态码检查过一遍,把非 200 的挑出来看。

要不要在乎这个报错

少量 404(占 sitemap 总量 5% 以内)不影响收录,搜索引擎早就习惯了。

但有两个红线:一是 404 比例过高,比如一半以上,会被认为站点维护不善;二是核心页面 404,比如首页、主要分类页,那问题就大了。

所以处理优先级是:先修首页和分类页,再修文章页,最后处理那些无人访问的旧文章。

一个预防措施

每次批量操作(删文章、改别名、改 URL 结构)之后,立刻提交一次 sitemap,然后隔两天看一眼报错数。这个习惯能让你在问题积累成灾之前发现它。