SEO

301 重定向

301 重定向是一种 HTTP 状态码(301 Moved Permanently),用于告知浏览器和搜索引擎某个网页的 URL 已永久迁移到新地址。它会自动将访问旧 URL 的用户和搜索引擎爬虫引导至新 URL,同时把原页面累积的链接权重传递给新 URL。

301 重定向是一种 HTTP 状态码(301 Moved Permanently),用于告知浏览器和搜索引擎某个网页的 URL 已永久迁移到新地址。它会自动将访问旧 URL 的用户和搜索引擎爬虫引导至新 URL,同时把原页面累积的链接权重传递给新 URL。

为什么它很重要

搜索引擎在判定排名时,会把指向页面的反向链接数量与质量作为关键信号。如果你在更改 URL 时没有设置 301 重定向,原 URL 累积的全部链接权重都会丢失,可能导致搜索排名大幅下滑。根据 Moz 和 Ahrefs 的研究,正确实施的 301 重定向能将原页面约 90 至 99% 的链接权重传递到新 URL。Google 的 John Mueller 也已正式确认“301 不会损失权重”。因此,每当发生永久性的 URL 变更,例如域名迁移、网站改版或 URL 结构调整时,设置 301 重定向都是 SEO 层面不可或缺的一步。

301 与 302 的区别

属性301(永久迁移)302(临时迁移)
含义URL 已永久迁移URL 已临时迁移
链接权重传递90 至 99% 传递给新 URL保留在原 URL,不传递给新 URL
搜索索引随时间推移,旧 URL 从索引中移除并由新 URL 替代旧 URL 仍保留在索引中
浏览器缓存永久缓存每次请求都会重新检查原 URL
适用场景域名变更、URL 结构调整、HTTP 到 HTTPS 迁移A/B 测试、维护页面、季节性促销

虽然 Google 表示它在技术上可以同时处理 301 和 302 重定向,但在永久性变更中使用 302 会让搜索引擎持续爬取原 URL,浪费抓取预算。链接权重也可能无法按预期传递。为每种情况选择恰当的状态码至关重要。

如何设置

Apache (.htaccess)

Redirect 301 /old-page https://www.example.com/new-page

Nginx (nginx.conf)

server {
    location /old-page {
        return 301 https://www.example.com/new-page;
    }
}

Next.js (next.config.js)

module.exports = {
  async redirects() {
    return [
      {
        source: '/old-page',
        destination: '/new-page',
        permanent: true, // 301
      },
    ];
  },
};

配置完成后,请务必使用 Google Search Console 的 URL 检查工具,确认重定向正常工作且新 URL 被正确编入索引。同时建议将重定向至少保持启用一年。

常见错误

  1. 重定向链:当重定向经过多次跳转(例如 A 到 B 到 C)时,每一步都会损失链接权重,并降低页面加载速度。应尽可能从 A 直接链接到 C。
  2. 无限重定向循环:A 指向 B、B 又指回 A 的配置会导致浏览器抛出“ERR_TOO_MANY_REDIRECTS”错误。请务必在配置后进行测试。
  3. 重定向到无关页面:将 301 重定向设置到内容完全不同的页面,会使 Google 将其视为软 404 并拒绝传递链接权重。请始终以一对一的方式重定向到内容相似或相同的 URL。
  4. 用 302 代替 301:在永久性 URL 变更中使用 302,会让搜索引擎持续爬取旧 URL,链接权重也不会传递给新 URL。
  5. 未考虑浏览器缓存:301 重定向会被浏览器永久缓存。即使你撤销了误配置的 301,之前的设置仍可能残留在用户浏览器中,因此应谨慎应用。必要时,在重定向的同时附加 Cache-Control: no-cache 标头会更稳妥。

Sources:

相关 inblog 文章

inblog 如何提供帮助

inblog 的重定向管理功能让你无需编写代码即可设置 308(永久,等同于 301)和 307(临时)重定向。