SEO 分享与数据统计
14.3 SEO最佳实践
Tip
你配置好了 TDK (14.2),Google 知道你是谁了。但你的网站有 1000 个页面,Google 怎么知道这 1000 个页面的地址?你需要给 Google 一张地图 (Sitemap)。
1. 为什么要学这个?
你写了 500 篇博客。但 Google 搜不到。 因为 GoogleBot 从首页顺藤摸瓜,只找到了 5 篇文章的链接。剩下的它找不到入口。 如果不主动提交 Sitemap,你的深层页面可能需要几个月才能被发现。
2. 核心概念:Sitemap & Robots.txt
- Sitemap.xml (藏宝图): 一个 XML 文件,列出了网站所有页面的 URL 和最后更新时间。爬虫会定期检查这个文件。
- Robots.txt (门禁卡): 一个 TXT 文件,告诉爬虫哪些房间不能进(比如后台管理页、测试环境)。
3. 解决方案 (HOW)
3.1 动态 Sitemap (Next.js)
在 app/sitemap.ts 中:
import { MetadataRoute } from 'next'
export default async function sitemap(): Promise<MetadataRoute.Sitemap> {
const posts = await getAllPosts() // 从数据库获取所有文章
const baseUrl = 'https://vibecoding.com'
const postUrls = posts.map((post) => ({
url: `${baseUrl}/posts/${post.slug}`,
lastModified: post.date,
}))
return [
{ url: baseUrl, lastModified: new Date() },
...postUrls,
]
}
Next.js 会自动生成 /sitemap.xml。
3.2 爬虫路径示意图
graph TD
Bot["GoogleBot"] -->|"Step 1: 敲门"| Robots["robots.txt"]
Robots --"Step 2: 禁止 /admin"--> Block["Block"]
Robots --"Step 3: 地图在这"--> Sitemap["sitemap.xml"]
Sitemap -->|"Step 4: 获取 URL 列表"| List["Post 1, Post 2, ... Post 100"]
List -->|"Step 5: 逐个抓取"| Pages["文章详情页"]
style Robots fill:#fff9c4,stroke:#fbc02d
style Sitemap fill:#c8e6c9,stroke:#2e7d32
4. 避坑指南
| ❌ 不要这样做 | ✅ 应该这样做 | 为什么 |
|---|---|---|
| 手写 Sitemap | 代码生成 | 永远不要手动维护 Sitemap。你一定会忘更新,导致新文章很久才被收录。 |
| 坐等收录 | 提交 GSC | 主动去 Google Search Console (GSC) 提交你的 Sitemap 地址。这能把收录速度从几周缩短到几小时。 |
| 用 display:none | 用 robots.txt | 即使你在页面里隐藏了链接,爬虫还是能看到源码。不想被搜到的内容,必须显式在 robots.txt 里 Disallow。 |
5. 真实案例
Story
2020年,泄露的测试环境
某公司把开发环境部署在 dev.company.com。
忘了配置 robots.txt 禁止抓取。
结果 Google 把整个测试环境收录了。
用户搜公司名,第一条是官网,第二条是乱七八糟的测试版(里面甚至有假数据和脏话)。
Vibe 心法:不要在 GoogleBot 的智商上赌博。对于测试环境与敏感后台,显式的 Disallow 是唯一的门禁。主动提交 Sitemap 并不是示弱,而是邀请搜索引擎巨头高效扫描你“数字王国”的官方请柬。
6. 本章小结
- Sitemap:是网站的目录,动态生成它。
- Robots.txt:是网站的保安,告诉爬虫止步于此。
- GSC:Google Search Console 是站长的必修课。