重定向改变路径,不会自动改写原始外链
外链是来源页面中的HTML链接。如果它指向的地址返回301,客户端可以沿Location访问另一个网址,但发布者页面里的href不会因此自动改变。记录时要分清来源链接、负责跳转的网址以及最终文档。迁移能够让读者继续到达相应内容,却不能把新增的中转地址当成新获得的编辑推荐。链接是否存在、原地址是否响应、最终页面是否合适是不同问题,应分别保存证据,而不是只写一个“链接已修好”的结论。
RFC 9110 · 301 / 302 / 307 / 308
明确你能控制哪些网址
你只能修改自己有权限管理的主机或应用规则。外部发布者负责来源页面,目标网站负责人负责目标路由,先明确双方职责再安排修复。更新自己的内部引用,合适时请发布者调整旧链接,同时保留仍被读者使用的旧路径。这个指南不会通过Google网址生成链接,不购买过期域名,也不发送推广消息。不能控制来源页时,不应把一个重定向配置描述成已经修改了第三方内容;应如实记录仍然指向旧地址的链接。
按内容与目的建立对应关系
列出旧网址、原来用途、拟定替代页和内容相当的证据。可以参考自己的链接记录、导航及站点地图,但单次导出不一定是完整清单。保留有意义的语言、产品和查询参数差异,不能把所有地址都无差别送到首页。内容永久删除且没有合适替代时,返回资源缺失响应可能才是正确处理。实验中的“相当内容”是明确给出的教学条件,并非自动判断真实网页质量的算法。准备映射时还应指定审核人,避免仅按字符串相似度自动上线。
有意识地区分永久和临时迁移
真正永久迁移可选择301或308,原位置计划恢复则使用302或307。Google将其解释为不同的规范化信号,但本地状态测试无法显示它最终选择了哪个规范网址。本练习只使用GET。对接受POST或其他方法的接口,还需检查所选状态是否保留请求方法。此前的永久跳转可能在修正后仍留在浏览器或代理缓存中,因此线上验证不能只看服务器配置文件。实验服务器返回no-store,使反复切换前后状态时更容易观察当前响应。
重现七组修正前后的案例
工具包在loopback上运行真实HTTP服务器。两个配置中,来源页的链接完全相同,改变的只是目标路由。选择案例和阶段后逐条查看响应,不要只看浏览器地址栏最后显示什么。循环会在再次请求重复地址前停止;已经正确的对照案例刻意不变。这是可复现的工程练习,不是你的网站扫描,也不是搜索引擎模拟。相同路径在前后两个服务器配置下运行,便于对比规则变化,不能把本地案例当成已在生产环境部署的证据。
| ID | 预期结果 | 修复前 | 修复后 |
|---|---|---|---|
| R01 | 旧指南有合适替代页/guide,但旧网址目前返回404。 | 404 /r1/old-guide | 301 /r1/old-guide → 200 /guide |
| R02 | 指南通过/middle到达,多出的这一步可以省去。 | 301 /r2/old-guide → 301 /middle → 200 /guide | 301 /r2/old-guide → 200 /guide |
| R03 | 旧地址与/r3/loop互相跳转,无法到达最终文档。 | 301 /r3/old-guide → 301 /r3/loop · 网址重复:在再次请求前停止 | 301 /r3/old-guide → 200 /guide |
| R04 | 读者期待指南,而/home只有一般导航。两个阶段都以200结束。 | 301 /r4/old-guide → 200 /home | 301 /r4/old-guide → 200 /guide |
| R05 | 内容永久移除,/home不能满足原用途。 | 301 /r5/old-guide → 200 /home | 410 /r5/old-guide |
| R06 | 原服务会恢复,/holding只是临时通知。 | 301 /r6/old-guide → 200 /holding | 302 /r6/old-guide → 200 /holding |
| R07 | 旧指南已经通过一次301到达相应替代内容。 | 301 /r7/old-guide → 200 /guide | 301 /r7/old-guide → 200 /guide |
R01 · 迁移页面没有对应规则
添加一次永久跳转到声明的替代页。
相同旧网址返回301,随后/guide以200提供预期指南。
R02 · 能到达但多绕一步的链条
旧地址直接指向/guide,同时保留仍有用途的中间地址规则。
请求从三次变成两次,最终指南及来源链接不变。
R03 · 两个网址形成循环
将入口规则改为直接对应/guide。
不再因重复路径停止,观察到的响应是301和200。
R04 · 首页成功响应,但内容不合适
指向相应的/guide,而不是任意成功页面。
同时核对最终路径和正文。这不是已观察到的Google软404分类。
R05 · 内容删除且没有合适替代
在这个明确条件下返回410,并清理旧内部引用。
旧地址返回410及不可用说明,不虚构替代内容或排名恢复。
R06 · 临时迁移被声明成永久
本GET示例使用302,并记录恢复原服务的计划。
仍到达同一通知,但经由302而非301。旧缓存与搜索处理需要另外核对。
R07 · 正确的永久映射保持不变
保留工作正常的规则作为对照。
前后证据完全一致,不制造多余修复或排名改善。
上线后验证完整路径
经过授权的映射上线后,应通过实际代理或CDN访问公开网址,保存首次状态、每个Location、最终网址、状态与预期正文。有意识地检查重要查询参数、协议和主机名称变体。爬取许可、canonical与索引指令应作为独立项目核对,不能由200响应直接推断。再测试已知循环及旧中间路径,记录观察时间、证据位置和负责修正的人。请求成功并不说明Google已重新抓取变化,更不能单凭它承诺访问量或搜索排名增长;这些结果需要后续独立观测。
未测量收录、规范网址选择、流量或排名,也不计算传递权重的百分比。
持续维护有用的映射
保留带日期的映射表,在CMS或路由规则变更后复查重要旧链接。Google的迁移指南建议尽可能长期保留重定向,通常至少一年;如果访客仍依赖旧链接,继续保留可能更有帮助。将内部链接和站点地图更新到现行地址,监控已知来源与目标配对,并在获得权限后查看实际搜索数据。供应商计数使用各自的采集日期、过滤和覆盖范围,因此面板更新较慢并不能单独证明跳转失效。应先确定请求路径是否正确,再讨论索引与流量层面的变化。
需要Python 3.10或更新版本。将ZIP解压到本地目录。验证命令会启动临时回环服务器,测试所有案例,输出JSON后停止,不访问外部网站。