HTTP 301
2023-11-26 10:57AM
参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Status/301
参考:https://en.wikipedia.org/wiki/HTTP_301
HTTP 301 Moved Permanently
说明请求的资源已经被移动到了由 Location 头部指定的 url 上,是固定的不会再改变。搜索引擎会根据该响应修正。
HTTP 301 是 HTTP 响应状态代码 的 301 Moved Permanently 。 它用于永久重定向,这意味着返回此响应的链接或记录应该更新。 新的 URL 应在位置字段中提供,并包含在响应中。 301 重定向被认为是将用户从 HTTP 升级到 HTTPS 的最佳实践。
RFC 2616 [1] 指出:
- 如果客户端具有链接编辑功能,则应更新对请求 URL 的所有引用。
- 除非另有说明,响应是可缓存的。
- 除非请求方法是 HEAD,否则实体应包含一个小的超文本注释,其中包含指向新 URL 的超链接。
- 如果收到 301 状态代码以响应除 GET 或 HEAD 之外的任何类型的请求,则客户端必须在重定向之前询问用户。
技术细节
HTTP 301 状态代码有几个技术细微差别,开发人员在实现和管理重定向时应注意这些细微差别:
浏览器处理
- 缓存行为 :许多 Web 浏览器都会缓存 301 重定向。 这意味着一旦用户的浏览器遇到 301 重定向,后续对原始 URL 的请求将自动定向到新 URL,而无需联系服务器。
- 更新书签 :浏览器可能会在遇到 301 重定向后更新书签以反映新的 URL。
服务器端
- Apache :Apache 有 mod_alias 和 mod_rewrite 来处理 301 重定向。 使用两者通常会导致不可预测的行为,因为模块不尊重其他模块规则。 [4]
与其他状态代码的比较
- 302 Found :与 301 不同,302 状态代码表示临时重定向。 搜索引擎可能不会将 SEO 值传递给新 URL。 [5]
- 307临时重定向 :与302类似,但保证重定向请求时方法和主体不会改变。
- 303 See Other :当 POST 或其他非幂等请求方法的结果是应使用 GET 检索的资源时使用。
位置标题
- 强制包含 :发送 301 重定向时,应始终在“位置”字段中提供新 URL。 省略 Location 标头会使浏览器感到困惑,并可能导致意外行为。
- 绝对 URL 使用 :虽然某些浏览器可能接受相对 URL,但在 Location 标头中使用绝对 URL 是标准,可以确保所有用户代理的行为一致。
对 SEO 的影响
- 链接资产转移 :搜索引擎通常会将大部分链接资产(或“链接汁”)从源 URL 转移到 301 重定向的目标 URL。 [6]
- 索引延迟 :在搜索引擎识别重定向并相应更新其索引之前可能会有延迟。
常见陷阱
- 多次重定向 :连续使用多个 301 重定向(A 到 B,然后 B 到 C)可能会导致页面加载时间增加,并可能会削弱 SEO 价值。
- 混合内容问题 :从 HTTP 重定向到 HTTPS 时,请确保页面上的所有资源(图像、脚本、样式表)也通过 HTTPS 加载,以防止出现混合内容警告。
登录
请登录后再发表评论。
评论列表:
目前还没有人发表评论