跳至内容

爬取和索引

什么是 HTTP 状态码?

HTTP 响应状态码 指示特定的 HTTP 请求是否已成功完成。状态码有很多,但在 SEO 上下文中只有少数几个有意义。让我们现在来看看它们。

200

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

为了使页面能够在 Google 上被索引,它必须返回状态码 200。这是你通常希望在你的页面中查找的内容,以便它们获得自然流量。

这是 Next.js 成功渲染页面时将设置的默认代码。

301/308

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

这是一个永久重定向。通常,这是使用最广泛的重定向类型。

重定向可以用于各种原因,但主要原因是指示 URL 已从 A 点移动到 B 点。

重定向是必要的,以确保如果内容从一个地方移动到另一个地方,你不会丢失当前和潜在的客户,并且机器人可以继续索引你的网站。

注意:Next.js 永久重定向默认情况下使用 308 而不是 301,因为它是一个较新的版本,被认为是更好的选择。

这两个状态码的主要区别在于 301 允许将请求方法从 POST 更改为 GET,而 308 则不允许。

你可以在 Next.js 中触发 308 重定向,方法是在 `getStaticProps()` 函数中返回重定向而不是 props。

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

你也可以在 next.config.js 中设置的重定向中使用 permanent: true 键。

//next.config.js

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

302

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

在大多数情况下,302 重定向应该为 301 重定向。如果你要将用户临时重定向到某个页面(例如促销页面)或根据位置重定向用户,则可能并非如此。

404

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

如上所述,已移动的页面应使用 HTTP 301 状态代码重定向到新位置。当这种情况没有发生时,URL 可能会返回 404 状态代码。

404 状态代码默认情况下不一定是坏事,因为如果用户访问不存在的 URL,这是预期的结果,但它们不应成为页面中的常见错误,因为这可能导致搜索排名不佳。

Next.js 将自动为应用程序中不存在的 URL 返回 404 状态代码。

在某些情况下,你可能还想返回一个 404页面中的状态代码。你可以通过返回以下内容代替 props 来做到这一点

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

你可以 创建一个自定义的 404 页面 在构建时静态生成,方法是创建 pages/404.js.

示例

// pages/404.js
export default function Custom404() {
  return <h1>404 - Page Not Found</h1>;
}

410

HTTP 410 已消失 客户端错误响应代码表示不再可以通过源服务器访问目标资源,并且这种情况可能是永久性的。

此代码不常使用,但如果你要删除网站上不再存在的内容,你可能需要查找此状态代码。

使用 HTTP 410 Gone 可能明智的示例包括

  • 电子商务:从库存中永久删除的产品。
  • 论坛:用户已删除的帖子。
  • 博客:从网站中删除的博文。

此状态代码通知机器人它们永远不应该返回来抓取此内容。

500

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

Next.js 将自动为意外的应用程序错误返回 500 状态代码。你可以 创建一个自定义的 500 错误页面 在构建时静态生成,方法是创建 pages/500.js.

示例

// pages/500.js
export default function Custom500() {
  return <h1>500 - Server-side error occurred</h1>;
}

503

HTTP 503 服务不可用 服务器错误响应代码表示服务器尚未准备好处理请求。

建议在你的网站关闭并且你预测网站将在较长时间内关闭时返回此状态代码。这可以防止长期失去排名。


快速回顾

哪个状态码表示页面已移动到新 URL?