永久重定向(301)只解决“访问请求该去哪里”的问题,它不直接决定搜索引擎是否抓取目标页、更不决定目标页是否被索引。区分三者要看三个独立信号:服务器返回的响应码、抓取日志或抓取工具里的请求记录、以及索引状态查询结果。把这三者混在一起,就会出现“已经301了,为什么搜索里还能看到旧页”或“已经抓取了,为什么没有收录”的误判。
访问是用户或爬虫向服务器发起请求,服务器用状态码回应。永久重定向返回301或308,表示资源已永久迁移到新地址,浏览器和爬虫会转向目标URL。
抓取是搜索引擎爬虫实际发出请求并读取响应的过程。它可能请求旧URL,看到301,再请求新URL。抓取成功只说明爬虫拿到了内容,不代表内容进入索引。
索引是搜索引擎把页面内容处理后存入可供检索的数据库。是否索引由内容质量、重复情况、规范标签、robots限制、页面可访问性等多种因素共同决定。因此,永久重定向与索引结果是两个不同层面的问题。
在判断抓取与索引之前,先确认重定向没有配置错误,否则后面的验证都不可靠。检查项如下:
noindex,否则等于主动阻止索引。这一步的关键是:永久重定向只传递“地址已变更”的信号,它不会强制搜索引擎索引新地址,也不会立刻删除旧地址的索引记录。
判断抓取,看服务器日志或抓取工具中的请求记录。日志里如果出现旧URL的请求且状态码为301,随后出现新URL的请求且状态码为200,说明爬虫完成了跳转抓取。若日志里只有旧URL的301、没有新URL的请求,说明抓取可能停在跳转环节。
判断索引,用站点自身的索引状态查询方式核对。不同搜索引擎的查询入口和命令不同,需要分别核查,不能用一个平台的结果推断另一个平台。查询时输入旧URL和新URL,观察各自是否出现在索引结果中。旧URL可能仍显示一段时间,这是索引更新滞后,不等于重定向失败。
判断访问,用浏览器或命令行工具直接请求旧URL,确认返回码和最终落地页。例如用命令行查看响应头:
curl -I https://example.com/old-page
若返回HTTP/1.1 301 Moved Permanently并带有Location指向新URL,说明访问层重定向生效。这一步是本题最关键的一步:先固定访问层的事实,再去看抓取和索引,否则会把索引滞后误判成重定向失效。
“搜索里还能看到旧页”通常有三种解释:索引尚未更新、旧页仍有外部链接被抓取、或旧页返回的不是301而是200。需要分别检查响应码和索引状态,不能断言唯一原因。
“新页被抓取了但没索引”与永久重定向无关,应检查新页是否有noindex、是否被robots.txt限制、内容是否与站内其他页高度重复。robots.txt的抓取限制不等于可靠的索引移除,它只阻止抓取,不保证页面从索引中消失。
“站点地图提交了却没收录”也不能归因于重定向。站点地图不保证收录,它只是提供发现入口。若旧URL仍在地图中,应更新为最终URL,避免把爬虫反复引向重定向链。
重定向上线后,索引更新需要时间,不同搜索引擎节奏不同。维护阶段应定期检查旧URL响应码是否仍为301、目标页是否仍返回200、索引状态是否逐步从旧URL转向新URL。若发现旧URL重新返回200,说明重定向被覆盖或规则失效,需要立即修复。
下一步:选一个已上线的永久重定向,用命令行确认旧URL返回301且目标返回200,再分别到各搜索引擎的索引状态查询入口核对新旧URL,把访问、抓取、索引三项结果分开记录,避免用一个层面的结论代替另一个层面。