301 俗称“永久重定向”(Moved Permanently),意思
是原 URI 已经“永久”性地不存在了,今后的所有请求都必
须改用新的 URI。 浏览器看到 301,就知道原来的 URI“过时”了,就会做适
当的优化。比如历史记录、更新书签,下次可能就会直接用
新的 URI 访问,省去了再次跳转的成本。搜索引擎的爬虫看
到 301,也会更新索引库,不再使用老的 URI。
302 俗称“临时重定向”(“Moved Temporarily”),意
思是原 URI 处于“临时维护”状态,新的 URI 是起“顶
包”作用的“临时工”。
浏览器或者爬虫看到 302,会认为原来的 URI 仍然有效,
但暂时不可用,所以只会执行简单的跳转页面,不记录新的
URI,也不会有其他的多余动作,下次访问还是用原 URI。
301/302 是最常用的重定向状态码,在 3××里剩下的几个
还有:
303 See Other:类似 302,但要求重定向后的请求改为
GET 方法,访问一个结果页面,避免 POST/PUT 重复操
作;
307 Temporary Redirect:类似 302,但重定向后请求
里的方法和实体不允许变动,含义比 302 更明确;
308 Permanent Redirect:类似 307,不允许重定向后
的请求变动,但它是 301“永久重定向”的含义。 不过这三个状态码的接受程度较低,有的浏览器和服务器可
能不支持,开发时应当慎重,测试确认浏览器的实际效果后
才能使用