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
重定向:
您也可以在 next.config.js
中设置的 redirects 里使用 permanent: true
参数:
302
HTTP 302 临时移动
重定向状态响应码表示请求的资源已被临时移动到目标 URL。
大多数情况下,302
重定向应该是 301
重定向。但以下情况除外:临时将用户重定向到特定页面(如促销页面),或基于用户地理位置进行重定向。
404
HTTP 404 未找到
客户端错误响应码表示服务器找不到请求的资源。
如前所述,已移动的页面应使用 HTTP 301
状态码重定向到新位置。若未设置重定向,URL 可能会返回 404
状态码。404
状态码本身并非总是坏事——当用户访问不存在的 URL 时,这正是期望的响应。但如果网站频繁出现 404 错误,则可能导致搜索排名下降。
对于应用中不存在的 URL,Next.js 会自动返回 404
状态码。
某些情况下,您可能需要主动从页面返回 404
状态码。可以通过返回以下内容代替 props 来实现:
您可以通过创建 pages/404.js
来创建自定义 404 页面,该页面会在构建时静态生成。
示例:
410
HTTP 410 已删除
客户端错误响应码表示目标资源在源服务器上已永久不可用。
这个状态码不常使用,但当您删除网站上不再存在的内容时,可能需要使用它。
适合使用 HTTP 410 已删除
的场景包括:
- 电商网站:永久下架的商品
- 论坛:用户删除的帖子
- 博客:从网站移除的博文
此状态码会告知爬虫无需再来抓取该内容。
500
HTTP 500 服务器内部错误
响应码表示服务器遇到意外情况,无法完成请求。
当应用发生未预期的错误时,Next.js 会自动返回 500
状态码。您可以通过创建 pages/500.js
来创建自定义 500 错误页面,该页面会在构建时静态生成。
示例:
503
HTTP 503 服务不可用
服务器错误响应码表示服务器暂时无法处理请求。
当网站下线且预计会长时间不可用时,建议返回此状态码。这样可以避免长期影响搜索排名。