确认301转向是否生效,不能只看浏览器地址栏是否变化。地址栏变化可能来自前端脚本、缓存或代理,而不是服务器返回的301。可靠做法是直接检查HTTP响应:请求旧地址时,响应状态码应为301,并带有指向新地址的Location头;再请求新地址,应返回200。只有这两步都成立,才能判断301转向配置实际生效。
浏览器和部分工具会自动跟随跳转,所以最终看到新页面,并不能证明中间发生过301。需要关闭自动跟随,观察第一跳响应。
curl -I 旧地址查看响应头,重点看第一行状态码和Location字段。适用条件是你能拿到旧地址的完整URL。若旧地址带参数、带斜杠差异或大小写不同,应分别测试,因为转向规则经常只覆盖其中一种形式。
状态码为301只说明“发生了永久转向”,不代表目标地址正确。需要核对Location的值:
假设旧地址为http://example.com/old,请求后返回301且Location: https://example.com/new,再请求https://example.com/new返回200,这就是一个可验收的结果。若Location指向http://example.com/new,而该地址又跳转到https,则属于两跳,应优化配置。
同一URL在不同时间、不同网络下结果不一致,常见原因是缓存或代理。判断方法:
?test=301check,减少命中缓存的机会。Age、X-Cache等缓存标识。这里要区分“可能原因”和“已经定位的原因”。看到缓存标识只能说明缓存可能参与,不能直接断定缓存就是唯一原因;需要清缓存后复测同一URL来验证。
服务器返回301,不等于搜索引擎已经完成替换。搜索引擎处理转向需要时间,且不同搜索引擎的抓取和索引更新节奏不同,不能保证固定见效时间。
如果robots.txt禁止抓取旧地址,搜索引擎可能无法看到301响应,从而影响替换判断;robots.txt的抓取限制不等于可靠的索引移除。若站点地图仍列出旧地址,也不代表它会被优先处理,站点地图不保证收录。
curl -I,确认第一跳为301。Location,确认目标为预期新地址且为绝对URL。下一步,选一个最重要的旧地址,按上述清单记录状态码、Location和目标页状态,形成一份可对比的验收记录;若任一项不符,先修正服务器或CDN规则,再重新测试。