404页面设计要区分访问、抓取与索引,关键看三件事:用户或爬虫是否请求了URL、服务器返回什么状态码、该URL是否进入过索引。若一个不存在的地址返回200或跳转到首页,搜索引擎可能把它当正常页面抓取甚至尝试索引;若返回404或410,通常表示资源不存在,已索引的URL会逐步被移除,但速度不由页面设计决定。
假设某站点删除了/old-guide,并把它链接到新的/new-guide。站长在服务器上做了三种配置:
/old-guide返回200,内容是新指南:用户访问成功;爬虫抓取成功;搜索引擎可能把旧URL和新URL都视为可访问页面,产生重复内容。/old-guide返回301并指向/new-guide:用户和爬虫都到新地址;旧URL通常不再作为独立页面参与索引,权重和信号会向新URL转移。/old-guide返回404:用户看到404页面;爬虫抓取到404;如果旧URL此前已被索引,搜索引擎会在一段时间后把它移出索引,但不会因为页面设计得好看就立即删除。这个例子说明,404页面设计主要影响“访问体验”和“爬虫对状态的理解”,不能替代索引移除操作。页面再友好,只要状态码是200,搜索引擎就可能把它当正常页面处理。
访问是用户或爬虫发出请求;抓取是爬虫获取响应;索引是搜索引擎把URL存入可检索库。三者的判断依据不同:
常见错误是:把404页面做成200状态并显示“页面不存在”。这会让爬虫认为该URL有效,可能继续抓取并保留在索引中。正确做法是让不存在的URL返回404或410,同时在页面上给出返回首页、搜索框或相关推荐。
第一次处理这个问题,可以从以下检查项开始:
curl -I或浏览器网络面板确认目标URL的状态码,而不是只看页面文字。robots.txt是否屏蔽了该URL。抓取限制不等于索引移除:被屏蔽的URL仍可能因外链等原因出现在索引中,只是描述信息可能不完整。如果目标URL返回404,且页面没有跳转、没有被robots.txt屏蔽、也不在站点地图中,那么它属于“可抓取但不存在”的状态。搜索引擎抓取后会根据自身规则决定何时移除索引,没有固定时限。若返回200,则应视为正常页面,需要进一步判断是否重复或是否需要保留。若返回301,则重点核对跳转目标是否相关、是否可访问。
下一步:选一个已删除的URL,用响应头工具确认状态码,再对照站点地图和robots.txt,判断它当前属于访问正常、抓取受限还是索引待移除,然后只改与结论对应的那一项。