HTTP 状态码大全
70+ 状态码完整速查 · 1xx-5xx 分类 · 含使用场景
SEO 视角详解:301/302 vs canonical/404 vs 410/503
70+ 状态码完整速查 · 1xx-5xx 分类 · 含使用场景
了解工具定位 · 使用场景 · 对比优势
对照 HTTP 状态码与 SEO 策略,快速判断 301/302 跳转、canonical 标签、404/410 状态码在搜索引擎眼中的差异。SEO 人员排查收录异常、开发者配置重定向规则、内容运营处理死链时,输入状态码或场景描述即可获得搜索引擎处理逻辑与建议。所有比对在浏览器内完成,不向服务器发送任何数据。
网站改版或域名更换时,SEO 人员需要决定用 301 永久重定向还是 302 临时重定向。选错会导致搜索引擎错误合并权重或保留旧 URL。本工具对比两种状态码对 PageRank 传递、索引替换速度、用户端缓存行为的影响,并给出 canonical 标签的配合方案,避免流量流失。
内容运营清理过期页面时,不确定该返回 404(未找到)还是 410(已删除)。搜索引擎对 410 的删除确认速度更快,但误用可能影响站点健康度。本工具列出两者在 Google Search Console 中的处理差异、软 404 判定风险,以及何时搭配 301 到相关页面更安全。
电商网站因分页、参数追踪(UTM)、多域名导致同一内容出现多个 URL。SEO 工程师需要判断何时用 301 重定向、何时用 rel=canonical。本工具提供两者的优先级规则:301 强制合并权重,canonical 仅作建议;并给出 URL 参数处理策略,防止索引膨胀。
网站因服务器升级或流量高峰需要短暂下线。错误使用 503 会导致搜索引擎抓取延迟,但若返回 500 或 302 则可能被误判为死链。本工具说明 503 的 Retry-After 头配置、维护时长建议(< 24 小时安全),以及如何结合 502/504 区分服务过载与崩溃。
审计网站时发现某页面经过 301 → 302 → 200 的多跳链,搜索引擎可能只跟踪第一跳。SEO 分析师需要快速识别链中每个状态码对权重传递的影响。本工具列出常见跳转链模式(如 301→301 安全、301→302 风险),并计算每跳的权重损耗比例。
| 维度 | 本工具 | 竞品 A (HTTP Status Codes) | 传统方法 |
|---|---|---|---|
| 数据隐私 | 纯浏览器,零上传,状态码对照在本地完成 | 需将 URL 或状态码发送至服务器解析 | 需人工查阅 RFC 文档或浏览器开发者工具,数据完全本地 |
| 处理速度 | 即时,输入即出 | 2-5 秒,含网络请求与服务器渲染 | 数分钟至数小时,取决于查阅资料效率 |
| 离线可用 | 完全离线,加载后不依赖网络 | 必须在线,依赖服务器 API | 完全离线,依赖纸质或本地文档 |
| SEO 视角深度 | 按 SEO 场景分组(301/302 vs canonical/404 vs 410/503),含搜索引擎行为解析 | 通用状态码列表,无 SEO 专项解读 | 需自行从多篇 SEO 博客和官方文档中拼凑信息 |
| 状态码覆盖范围 | 聚焦 SEO 相关状态码(约 20 个),非全量 | 覆盖全部 HTTP 状态码(约 60+ 个) | 取决于资料范围,通常覆盖全部标准状态码 |
| 更新及时性 | 静态页面,更新需手动发布 | 云端更新,可实时推送新标准 | 依赖资料再版或社区更新,滞后明显 |
| 使用门槛 | 零学习成本,打开即用,按场景查找 | 需理解状态码编号体系,自行筛选 | 需具备 HTTP 协议基础和搜索引擎检索能力 |
上手步骤 · 输入输出 · 避坑提示
| 输入 | 输出 | 说明 |
|---|---|---|
| 301 | 301 Moved Permanently 永久重定向。搜索引擎会将原 URL 的权重完全转移至目标 URL。适用于网站改版、域名更换等场景。 | 典型场景:网站域名变更后使用 301 告知搜索引擎 |
| 302 | 302 Found (Temporary Redirect) 临时重定向。搜索引擎通常保留原 URL 索引,不转移权重。适用于 A/B 测试、促销活动等临时跳转。 | 典型场景:电商大促期间临时跳转至活动页 |
| 404 | 404 Not Found 页面不存在。服务器无法找到请求的资源。搜索引擎会逐步从索引中移除该 URL。适用于已删除且无替代页面的内容。 | 典型场景:用户访问了已删除的旧文章 |
| 410 | 410 Gone 资源已永久删除,且服务器明确知道该资源不再可用。搜索引擎会更快移除索引。适用于已主动删除且不再恢复的内容。 | 边界 case:410 比 404 更明确告知搜索引擎“永久删除” |
| 503 | 503 Service Unavailable 服务暂时不可用。通常用于服务器维护或过载。搜索引擎会暂时保留索引,稍后重试。适用于计划内维护或突发故障。 | 典型场景:网站进行服务器升级时临时返回 503 |
| 200 | 200 OK 请求成功。页面正常访问。搜索引擎正常抓取并索引。 | 边界 case:正常页面状态码,用于对比理解其他状态码 |
| 301 vs canonical | 301 是服务器级别的永久重定向,告诉搜索引擎和浏览器都去新地址。 Canonical 标签是 HTML 级别的建议,仅影响搜索引擎索引,浏览器仍显示原 URL。 适用场景: - 301:域名变更、URL 结构永久改变 - canonical:同一内容有多个 URL 时指定主版本(如 www 与 非 www、http 与 https) | 易错 case:新手常混淆 301 和 canonical 的生效范围 |
| 404 vs 410 | 404:资源不存在(可能临时也可能永久,服务器不知道原因)。 410:资源已永久删除(服务器明确知道)。 SEO 影响: - 410 比 404 更快让搜索引擎移除索引(通常数天内)。 - 对于已确认删除且不再恢复的内容,推荐使用 410 以加速索引清理。 | 易错 case:很多站长不知道 410 比 404 对 SEO 更友好 |
临时改版用 302,结果搜索引擎一直不更新索引临时改版用 302,但确认不需要搜索引擎缓存新 URL;如需传递权重,用 301302 告诉客户端/搜索引擎「这次临时跳转,下次还用原 URL」,浏览器和搜索引擎会继续请求原 URL,不会缓存新 URL 的权重
已彻底删除的商品页返回 404,几个月后搜索引擎仍保留索引已彻底删除且不再恢复的页面返回 410 Gone,明确告知搜索引擎「永久移除,请删除索引」404 是「未找到」,搜索引擎可能重试或保留索引;410 是「已删除」,搜索引擎会更快移除索引并停止抓取
页面 A 和 B 内容相同,只加 <link rel="canonical" href="/A">,不设 301 跳转页面 A 和 B 内容相同,对 B 设置 301 跳转到 A,同时保留 canonical 标签作为兜底canonical 是「建议」,搜索引擎可能忽略;301 是「强制」,两者配合才能确保权重集中
网站维护返回 503,但没加 Retry-After 头,搜索引擎频繁重试503 响应中加 Retry-After: 3600(或具体时间),告诉搜索引擎「1 小时后再来」没有 Retry-After 的 503 会被搜索引擎视为临时故障,但可能几秒后就重试,浪费抓取配额
A → B → C → A,搜索引擎抓取时陷入死循环确保所有重定向链最终指向一个最终 URL,且没有闭环浏览器和搜索引擎对重定向循环的处理不同:浏览器可能报错,搜索引擎会放弃抓取该页面
从 http://example.com/page?utm_source=google 301 到 https://example.com/page,丢失了参数301 跳转时保留原始 URL 参数,或明确指定参数处理规则搜索引擎可能将带参数和不带参数的 URL 视为不同页面,导致权重分散;301 时应考虑参数是否保留
域名更换后用 302 跳转,半年后新域名没有排名域名更换后必须用 301 永久重定向,确保权重传递302 是临时跳转,搜索引擎不会传递 PageRank 等权重到新 URL;301 才会传递大部分权重
公式推导 · 流程图解 · 依据出处
SEO 状态码决策公式: 301/302 vs canonical: IF (永久移动) → 301; IF (临时移动) → 302; IF (重复内容且需保留原URL) → canonical; 404 vs 410: IF (内容已删除且永久消失) → 410; IF (内容暂时不可用或不确定) → 404; 503: IF (服务器临时过载或维护) → 503
301 — 永久重定向,传递大部分权重302 — 临时重定向,不传递权重canonical — 指定首选URL,处理重复内容404 — 页面未找到,保留索引可能性410 — 内容永久删除,快速移除索引503 — 服务暂时不可用,保留索引场景:某电商网站下架一款商品,且确定不再上架。SEO 决策:应返回 410 状态码,告知搜索引擎该资源已永久删除,加速从索引中移除。若仅暂时缺货,则返回 404 或 503(若服务器维护)。若将旧商品页重定向到新商品,且为永久转移,使用 301;若为促销活动临时跳转,使用 302。
适用于 SEO 场景下的状态码选择,基于 Google 官方指南(Google Search Central)及 IETF RFC 7231。不适用于非 HTTP 协议或非搜索引擎爬虫场景。对于动态内容(如 API 响应),需结合具体业务逻辑判断。
3 种主流语言 · 复制即用
import http.client
import json
# 模拟 HTTP 状态码查询(无需网络,纯本地映射)
def lookup_status(code: int) -> dict:
status_map = {
301: {"name": "Moved Permanently", "seo_note": "永久重定向,传递大部分链接权益"},
302: {"name": "Found", "seo_note": "临时重定向,不传递链接权益"},
404: {"name": "Not Found", "seo_note": "软 404 可能损害索引效率"},
410: {"name": "Gone", "seo_note": "明确告知资源已永久删除,利于搜索引擎清理索引"},
503: {"name": "Service Unavailable", "seo_note": "临时故障时使用,避免降权"},
}
return status_map.get(code, {"name": "Unknown", "seo_note": "无 SEO 建议"})
# 示例查询
result = lookup_status(301)
print(f"{result['name']}: {result['seo_note']}")
# 输出: Moved Permanently: 永久重定向,传递大部分链接权益
package main
import "fmt"
// StatusInfo 存储状态码的 SEO 含义
type StatusInfo struct {
Name string
SEONote string
}
func lookupStatus(code int) StatusInfo {
statusMap := map[int]StatusInfo{
301: {"Moved Permanently", "永久重定向,传递大部分链接权益"},
302: {"Found", "临时重定向,不传递链接权益"},
404: {"Not Found", "软 404 可能损害索引效率"},
410: {"Gone", "明确告知资源已永久删除,利于搜索引擎清理索引"},
503: {"Service Unavailable", "临时故障时使用,避免降权"},
}
if info, ok := statusMap[code]; ok {
return info
}
return StatusInfo{"Unknown", "无 SEO 建议"}
}
func main() {
result := lookupStatus(410)
fmt.Printf("%s: %s\n", result.Name, result.SEONote)
// 输出: Gone: 明确告知资源已永久删除,利于搜索引擎清理索引
}
// 浏览器或 Node.js 均可运行
function lookupStatus(code) {
const statusMap = {
301: { name: 'Moved Permanently', seoNote: '永久重定向,传递大部分链接权益' },
302: { name: 'Found', seoNote: '临时重定向,不传递链接权益' },
404: { name: 'Not Found', seoNote: '软 404 可能损害索引效率' },
410: { name: 'Gone', seoNote: '明确告知资源已永久删除,利于搜索引擎清理索引' },
503: { name: 'Service Unavailable', seoNote: '临时故障时使用,避免降权' },
};
return statusMap[code] || { name: 'Unknown', seoNote: '无 SEO 建议' };
}
// 示例
const result = lookupStatus(503);
console.log(`${result.name}: ${result.seoNote}`);
// 输出: Service Unavailable: 临时故障时使用,避免降权
8 个高频疑问
「HTTP / 网络」下的其他工具