把“访问”“抓取”“索引”当成同一件事,是404页面设置里最常见的误解。访问是请求到达了服务器;抓取是搜索引擎的爬虫取走了响应内容;索引是搜索引擎把某个URL收进可检索结果。三者可能同时发生,也可能彼此脱节。要区分它们,不能只看搜索结果里有没有那条URL,而要分别核对服务器日志、抓取统计和索引状态,再决定404页面该返回什么状态码、该不该做跳转。
搜索结果里出现一条标题带“404”的链接,可能是抓取阶段留下的旧记录,也可能是索引尚未更新,还可能只是页面被其他站点引用后产生的展示。它不能证明你的404页面已经按预期工作,也不能证明搜索引擎已经完成移除。
反过来,服务器日志里出现大量404请求,也不等于这些URL都进了索引。很多请求来自爬虫对旧链接的复查、外部站点引用、用户误输地址,甚至扫描行为。只有把“谁在请求”“请求后返回什么”“该URL当前能否被检索到”分开看,判断才可靠。
时间和人手有限时,先按下面三类证据各取一条,不要混在一起下结论。
这三类证据的时间点可能不同。日志显示今天有抓取,不代表今天已经重新索引;索引里还留着旧页面,也不代表服务器现在没有返回404。判断时要把时间戳对齐。
在robots.txt里写Disallow,只表示请求抓取被限制,不等于可靠的索引移除。如果某个URL已经被索引,单靠robots.txt通常不会把它从结果中拿掉,因为搜索引擎可能仍保留已有信息。要处理已索引的404类URL,应优先让服务器对不存在的页面返回正确的404状态码,再根据是否需要保留链接价值决定是否做301跳转。
站点地图也不保证收录。把URL放进sitemap只表示你希望它被抓取和考虑,最终是否索引由搜索引擎判断。HTTPS同样不保证安全无漏洞,也不保证排名。这些点分开看,才能避免把“提交了”“加密了”误当成“已索引”。
人手有限时,不要平均用力。先处理同时满足以下条件的URL:有外部链接指向、日志里近期仍有抓取、当前返回404、且索引里仍可查到。这类URL既影响用户体验,又可能继续消耗抓取预算。
假设某个旧活动页已经下线,但仍有几个外部站点链接指向它,日志显示爬虫每周访问一次。若站内有内容相近的新活动页,可以301到新页;若没有相近内容,就返回404并给出返回首页或搜索入口。这里的判断条件是“是否存在内容对等的替代页”,而不是“是否想留住访问量”。
一个可用的404页面,首先要让服务器对不存在的URL返回404状态码,而不是返回200再显示“页面不存在”。返回200会让搜索引擎把该URL当作正常页面,可能造成软404。其次,404页面应提供返回首页、站内搜索或相关栏目的入口,减少用户直接离开。
如果错误地做了全站跳转,把所有404都301到首页,短期看似减少了404,长期会让搜索引擎难以判断哪些页面真正消失,也可能让用户落到与预期无关的页面。只有存在内容对等的替代页时,301才是合适选择。
下一步,从日志里取最近一周返回404最多的十个URL,逐个标注“有替代页”或“无替代页”,再分别设置301或保留404。做完这一轮,再去看索引状态是否跟着变化。