你可能会说:
- “网站换了域名,外面那些旧链接怎么办?”
- “301 和 302 有什么区别,该用哪个?”
它是什么
重定向靠 3 开头的状态码加一个新地址完成。301 和 308 表示永久搬走,搜索引擎会把旧地址的权重转到新地址;302 和 307 表示暂时去别处,旧地址仍然有效。
改版、换域名、调整网址结构时,要给每个旧地址安排好去处。否则外面已有的链接、搜索结果、别人的收藏夹,都会变成 404。
服务器上的重定向看不到网址里 # 后面的部分。浏览器跟随重定向时会把井号原样带到新地址;要按井号的内容分流,只能在新页面里用脚本处理。
打个比方
像店铺搬家后贴在旧门口的告示:写着"永久迁至某某路"(301),还是"装修期间临时在隔壁营业"(302),老顾客和地图软件的反应完全不同。
在这个网站里
自动驾驶知识站并入本站那天,e2e.felixwithai.com 的所有请求都改成 301 跳到 space.felixwithai.com/e2e;旧的井号链接(如 #/term/bev)被原样带过来,再由页面脚本换成 /e2e/terms/bev。本站正式入口换成 www 后,e2e 直接 301 到 www.felixwithai.com/e2e,space 则 301 到 www 的相同路径并保留查询参数。在终端运行 curl -I https://e2e.felixwithai.com,第一行就是 301。
容易搞混的地方
常见误解
用 JavaScript 跳转和用状态码跳转,效果一样
正确理解
人看起来一样,程序看起来不同:搜索引擎和很多工具只认服务器返回的 301、302,不会运行页面里的脚本。
你可以这样告诉 AI
复制下面这段,贴给你的 AI
这次改版会让哪些旧网址失效?请列出旧网址到新网址的对应表,在服务器端配置好 301 重定向,再给我一条命令逐个验证:旧地址返回 301,并且指向正确的新地址。
接下来去哪
先知道
- HTTP 状态码——服务器回应每个请求时附带的三位数字,告诉对方这次是成功、找不到,还是出错了。
接着看
- 路由——决定"哪个网址对应哪个页面、交给哪段代码处理"的规则。
在这些课里出现