# 抓取与索引

URL: https://caijiao.org/google-search-central/03-crawling-indexing
Source: docs/google-search-central/03-crawling-indexing.md
Description: 说明 Google 抓取和索引网页时关注的关键技术信号，包括 HTTP 状态码、重定向、canonical、noindex、重复内容和移动端访问。

抓取与索引是技术 SEO 的核心。你要让 Googlebot 能顺利请求页面、读取主要内容，并判断哪个 URL 是应当进入索引的规范版本。

## HTTP 状态码

| 状态码 | SEO 含义 |
| --- | --- |
| `200` | 页面可正常访问，适合重要页面 |
| `301` | 永久重定向，适合 URL 迁移和规范化 |
| `302` | 临时重定向，适合短期跳转 |
| `404` | 页面不存在，适合确实删除的 URL |
| `410` | 页面已永久删除，比 404 更明确 |
| `5xx` | 服务器错误，可能影响抓取稳定性 |

不要让错误页返回 `200`。这种“软 404”会让搜索系统误以为页面存在，但内容又没有实际价值。

## 重定向策略

URL 迁移、HTTPS 切换、尾斜杠规范化、旧目录改版时，重定向要尽量清晰。

建议：

- 一步跳到最终 URL，避免多段链式重定向。
- 保持页面主题对应，不要把大量旧页面都重定向到首页。
- 大规模迁移前生成旧 URL 到新 URL 的映射表。
- 迁移后同时更新站内链接、canonical 和站点地图。

## canonical

当多个 URL 展示相同或高度相似内容时，可以使用 canonical 提示规范版本。

```html
<link rel="canonical" href="https://example.com/tutorials/google-search/" />
```

canonical 常用于：

- HTTP 与 HTTPS 规范化。
- 带追踪参数的 URL。
- 打印页、排序页、分页或筛选页。
- 同一内容存在多个路径的情况。

注意：canonical 是强信号，不是绝对指令。如果页面内容差异很大、目标 URL 不可访问、站内链接与 sitemap 信号冲突，搜索系统可能选择其他规范 URL。

## noindex

`noindex` 用于告诉搜索系统不要把页面加入索引。

```html
<meta name="robots" content="noindex" />
```

适合 noindex 的页面：

- 站内搜索结果页。
- 登录后页面。
- 临时活动页或测试页。
- 内容极少且不希望进入搜索结果的页面。

不要同时用 `robots.txt` 阻止抓取又期待 Google 读取页面里的 `noindex`。如果页面无法被抓取，搜索系统可能看不到页面里的 meta robots。

## 重复内容

重复内容不一定会导致惩罚，但会稀释信号，让搜索系统难以判断应该展示哪个 URL。

常见来源：

- 同一页面同时存在 `/foo`、`/foo/`、`/foo.html`。
- 参数 URL，例如 `?utm_source=`、排序、筛选。
- 列表页和标签页生成大量相似内容。
- 多语言页面没有正确标注语言版本。

处理思路：

1. 确认要保留的规范 URL。
2. 用 301、canonical、站内链接和 sitemap 指向同一版本。
3. 对不希望被索引的低价值页面使用 noindex。
4. 避免把无穷参数组合开放给抓取。

## 参考资料

- [抓取和索引主题文档](https://developers.google.com/search/docs/crawling-indexing)
- [合并重复网址](https://developers.google.com/search/docs/crawling-indexing/consolidate-duplicate-urls)
- [robots meta 标记](https://developers.google.com/search/docs/crawling-indexing/robots-meta-tag)
- [HTTP 状态码、网络和 DNS 错误](https://developers.google.com/search/docs/crawling-indexing/http-network-errors)
