SEO 百科

301

本页目录

301

301 是服务器在响应里给出的状态码,意思是请求的网址已经永久搬到另一个地址[1]。它属于 3xx 重定向一类,由服务端发出,不需要页面里再写脚本。做换域名、改目录结构、合并站点的时候,这个代码决定旧网址会不会被新网址取代,也决定旧网址积累的信号会不会跟到新地址[5]。

永久迁移的判定

301 的含义落在请求的处理结果上。RFC 把它定义为目标资源已被分配新的永久 URI,将来对这个资源的引用都应改用新的地址[1]。永久两个字是判断的落点:一旦用上它,就等于向所有客户端声明旧地址以后不再使用。

Google 按生效时长把重定向分成两类,永久重定向会在搜索结果中显示新的目标网址[5]。301 落在永久这一类,和 308 同组。两者的差别在请求方法的处理上,308 保留原有的请求方法,301 允许客户端把 POST 改成 GET[1]。

各家搜索引擎对它的定位一致。Yandex 文档写明,页面永久换地址时使用这个代码,并建议把跳转至少保留六个月[3]。保留时间足够长,爬虫才有机会重访旧地址并完成替换。

百度把这条要求写进了改版工具:改版规则里的新旧链接,必须用 301 方式跳转[7]。换域名和换目录结构这类改动,百度不接受用别的跳转方式提交。跳转关系还要长期保持,直到新站流量完全稳定[7]。

引擎的处理方式

抓取工具遇到 301 都会跟到新地址,差别在索引系统怎么解读这次跳转。

Google 的处理写在状态代码文档里,索引编制流水线把 301 当作强信号,表明跳转目标应当成为规范网址,也就是搜索引擎在多个版本里选定的正式地址[6]。信号强,意味着新网址接手旧网址位置的可能性大。同一份文档还说明,跳转过程中收到的那段内容会被忽略,只有最终目标网址的内容参与收录[6]。旧页面上写的东西不会随跳转一起被收走。

替换不会在跳转生效的当天完成。Google 会同时记着旧网址和新网址,其中一个成为规范网址,另一个成为它的备用名称[5]。备用名称是同一内容的不同版本,当查询暗示用户更认可旧地址时,旧网址仍可能露面。这种状态会随时间自然消退。

Yandex 的描述更直接,站内跳转生效后,机器人收录跳转目标的内容,搜索结果里显示目标的链接[2]。旧地址上的内容不再进入索引。

该用与不该用的情况

适合使用 301 的场合:

  • 站点迁到新域名,并要求尽量平滑地完成过渡[5]。
  • 同一个首页可以通过多个网址访问,需要挑一个作为首选,把其余地址转过去[5]。
  • 合并两个站点,让指向旧网址的链接落到对应页面[5]。
  • 删除某个页面并把用户引到替代内容,且不打算恢复[5]。

不该使用 301 的场合:

  • 活动页、维护页、A/B 测试,过几天就要恢复到原地址。A/B 测试指把两个版本分别展示给不同用户来比较效果,这类情况要用临时跳转[3]。
  • 只想让某个网址不被收录。301 会把它并到目标网址,达不到屏蔽的效果,这种情况应当换成 noindex 这类手段。

服务器配置示例

Nginx 用 return 处理单页迁移,用整段 server 处理换域名。第二种写法把请求路径原样带过去,旧内页不会全部落到新站首页。

# 单页永久迁移
location = /old.html {
    return 301 https://www.example.com/new.html;
}

# 整站换域名,保留原有路径
server {
    listen 80;
    server_name old.example.com;
    return 301 https://www.example.com$request_uri;
}

Apache 分两层写法,简单映射用 mod_alias,需要保留路径时改用 mod_rewrite。

# 单页永久迁移
Redirect 301 /old.html https://www.example.com/new.html

# 整站换域名,保留原有路径
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

两种写法都要一路落到最终地址。每多跳一次,抓取工具就少一次直接取内容的机会。跳数一多,搜索引擎愿意花在这个站点上的抓取次数也会被吃掉[6]。

常见误用

第一种是用 302 做永久迁移。302 是弱信号,索引系统不把它当作规范网址的指示,旧网址会继续留在搜索结果里,新网址接不到位[6]。

第二种是把所有旧网址都跳到新站首页。跳转应当指向内容对应的页面,只有在原内容确实不存在时,才退而指向主题相近的栏目[4]。

第三种是迁移刚结束就撤掉跳转规则。百度建议把跳转关系长期保持到流量稳定[7],Yandex 建议至少保留六个月[3]。撤得太早,还没完成替换的旧网址会先变成死链。

第四种是让 http、https、带 www 与不带 www 各写一条规则,两条规则首尾相接。这类规则应该合并成一条,一次跳到最终地址[6]。

附录

参见

参考资料

官方(境外)

  1. 《RFC 9110 : STD 97 : HTTP Semantics》,RFC 编辑部,2022-06。
  2. 《Processing redirects》,Yandex Webmaster。
  3. 《HTTP status codes reference》,Yandex Webmaster。
  4. 《Changing your site's structure and design》,Yandex Webmaster。
  5. 《重定向和 Google 搜索》,Google 搜索中心。
  6. 《HTTP 状态代码以及网络连接错误和 DNS 错误对 Google 搜索有何影响》,Google 搜索中心。

官方(国内)

  1. 《网站改版》,百度搜索资源平台。

外部链接

无。