HTTP 状态码详解

HTTP 响应状态码用于表示特定 HTTP 请求是否成功完成。虽然状态码种类繁多,但只有少数几个对 SEO 具有重要意义。

下面我们来逐一解析这些关键状态码。

200

HTTP 200 OK 成功状态响应码表示请求已成功完成。

若要让页面被 Google 索引,必须返回 200 状态码。这是您通常希望页面返回的状态码,以便获得自然搜索流量。当 Next.js 成功渲染页面时,默认就会设置此状态码。

301/308

HTTP 301 永久移动 重定向状态响应码表示请求的资源已被永久移动到目标 URL。

这是永久性重定向,也是最常用的重定向类型。

重定向的使用场景多样,但主要用途是表明 URL 已从位置 A 移动到位置 B。通过设置重定向,可以确保当内容移动位置时,既不会流失现有和潜在用户,也能让爬虫继续索引您的网站。

注意:Next.js 的永久重定向默认使用 308 而非 301,因为 308 是新版标准,被认为是更优选择。

两者的主要区别在于:301 允许将请求方法从 POST 改为 GET,而 308 不允许。

在 Next.js 中,您可以通过在 getStaticProps() 函数中返回 redirect 而非 props 来触发 308 重定向:

//  pages/about.js
export async function getStaticProps(context) {
  return {
    redirect: {
      destination: '/',
      permanent: true, // 触发 308
    },
  };
}

您也可以在 next.config.js 中设置的 redirects 里使用 permanent: true 参数:

//next.config.js
 
module.exports = {
  async redirects() {
    return [
      {
        source: '/about',
        destination: '/',
        permanent: true, // 触发 308
      },
    ];
  },
};

302

HTTP 302 临时移动 重定向状态响应码表示请求的资源已被临时移动到目标 URL。

大多数情况下,302 重定向应该是 301 重定向。但以下情况除外:临时将用户重定向到特定页面(如促销页面),或基于用户地理位置进行重定向。

404

HTTP 404 未找到 客户端错误响应码表示服务器找不到请求的资源。

如前所述,已移动的页面应使用 HTTP 301 状态码重定向到新位置。若未设置重定向,URL 可能会返回 404 状态码。404 状态码本身并非总是坏事——当用户访问不存在的 URL 时,这正是期望的响应。但如果网站频繁出现 404 错误,则可能导致搜索排名下降。

对于应用中不存在的 URL,Next.js 会自动返回 404 状态码。

某些情况下,您可能需要主动从页面返回 404 状态码。可以通过返回以下内容代替 props 来实现:

export async function getStaticProps(context) {
  return {
    notFound: true, // 触发 404
  };
}

您可以通过创建 pages/404.js创建自定义 404 页面,该页面会在构建时静态生成。

示例:

// pages/404.js
export default function Custom404() {
  return <h1>404 - 页面未找到</h1>;
}

410

HTTP 410 已删除 客户端错误响应码表示目标资源在源服务器上已永久不可用。

这个状态码不常使用,但当您删除网站上不再存在的内容时,可能需要使用它。

适合使用 HTTP 410 已删除 的场景包括:

  • 电商网站:永久下架的商品
  • 论坛:用户删除的帖子
  • 博客:从网站移除的博文

此状态码会告知爬虫无需再来抓取该内容。

500

HTTP 500 服务器内部错误 响应码表示服务器遇到意外情况,无法完成请求。

当应用发生未预期的错误时,Next.js 会自动返回 500 状态码。您可以通过创建 pages/500.js创建自定义 500 错误页面,该页面会在构建时静态生成。

示例:

// pages/500.js
export default function Custom500() {
  return <h1>500 - 服务器发生错误</h1>;
}

503

HTTP 503 服务不可用 服务器错误响应码表示服务器暂时无法处理请求。

当网站下线且预计会长时间不可用时,建议返回此状态码。这样可以避免长期影响搜索排名。

On this page