技术 SEO
sitemap、robots、canonical、多语言、结构化数据——配一次就不用再动的基础。
技术 SEO 解决的是能不能被抓到、能不能被正确收录,不解决"值不值得排在前面"。
好消息是它大部分是一次性的。配好之后除了偶尔检查,基本不用再动。
技术 SEO 做得再完美,也不会让一个没人搜的页面有流量。
它的作用是防止浪费,不是创造效果。 如果你还没确定要回答哪些问题,先去做关键词研究。
五件事
1. sitemap.xml ← 告诉搜索引擎有哪些页面
2. robots.txt ← 告诉它哪些不用抓
3. canonical ← 内容相似的页面指定一个正式版本
4. hreflang ← 多语言站点声明各语言版本的关系
5. 结构化数据 ← 可选,让搜索结果显示更丰富的样式前三件是必做。第四件只有多语言站点需要。第五件是可选。
sitemap
列出你希望被收录的公开页面,放在网站根目录,然后在搜索引擎的站长工具里提交一次。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://example.com/docs/guide/technical-seo</loc>
<lastmod>2026-08-31</lastmod>
</url>
</urlset>几个容易错的地方:
- 只放公开且希望被收录的页面。后台、测试页、重复页不要放。
- 地址要和实际能访问的地址完全一致(含不含尾斜杠、http 还是 https、带不带 www)。
- 不要放会返回 404 或跳转的地址。
- 页面更新后同步更新
lastmod,不要一直写同一个日期。
大部分现代框架能自动生成 sitemap。生成之后自己打开看一遍——自动生成最常见的问题是把不该收录的页面也放进去了。
robots.txt
放在根目录,声明哪些路径不需要抓取,并指向 sitemap。
User-agent: *
Disallow: /admin/
Disallow: /api/
Sitemap: https://example.com/sitemap.xml最危险的错误是误拦正文资源。 如果你 Disallow 了存放样式和脚本的目录,爬虫看到的可能是一个排版错乱、内容缺失的页面。
另一个常见错误是用 robots.txt 来"隐藏"页面。它只是请求不要抓取,不保证不被收录,也不保证别人看不到。真正需要保密的东西要靠权限控制,不是靠 robots.txt。
canonical
内容相同或高度相似的多个地址,用 canonical 指定哪个是正式版本,避免权重分散。
<link rel="canonical" href="https://example.com/docs/guide/technical-seo" />典型需要它的情况:
| 情况 | 说明 |
|---|---|
| 带参数的地址 | 带来源追踪参数的链接和干净地址是同一页 |
| 带不带尾斜杠 | 两个地址都能访问同一页 |
| 分页或筛选 | 筛选结果和主列表内容重叠 |
| 内容被转载 | 转载方指向你的原文 |
每个页面都应该有 canonical,包括指向自己的。不要让 canonical 指向一个跳转或 404 的地址——那会让搜索引擎完全不知道该收录哪个。
多语言
如果你的站点有多个语言版本,声明它们的关系,否则搜索引擎可能只收录一种,或者给用户展示错的语言。
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/" />
<link rel="alternate" hreflang="en" href="https://example.com/en/" />
<link rel="alternate" hreflang="x-default" href="https://example.com/" />规则:
- 每个语言版本的页面都要列出全部语言版本,包括自己
- 声明必须双向对应,A 指向 B 的同时 B 也要指向 A
- 加一个
x-default作为没有匹配语言时的默认版本 - 语言代码要写对,写错等于没写
机器翻译的页面不建议全部放出去。 一堆质量很差的翻译页面会拉低整站评价,不如只放认真做过的语言。
结构化数据
用标记告诉搜索引擎这一页的内容类型——文章、常见问题、产品、教程。配好之后有机会在搜索结果里显示更丰富的样式,比如问答折叠、评分、面包屑。
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [{
"@type": "Question",
"name": "SEO 大概多久见效",
"acceptedAnswer": {
"@type": "Answer",
"text": "通常是几周到几个月,新站更慢。"
}
}]
}两点提醒:标记的内容必须和页面上真实可见的内容一致,标了页面上没有的问答会被判为作弊;而且丰富样式是搜索引擎决定给不给,配了不一定会显示。
它是可选项。前四件没做完,不要先做这个。
收录检查
配好之后要确认真的被收录了。没被收录的页面,搜不到,等于不存在。
站长工具里有单个网址的检查功能,能看到三件事:有没有被收录、爬虫最后一次抓取拿到了什么内容、有没有报错。
爬虫实际拿到的内容那一项最值得看。纯前端渲染的站点常出现"用户能看到、爬虫拿到空壳"的情况——这时候前面所有的优化都不起作用。
定期检查
不需要频繁看,每季度一次:
sitemap 里的地址都还能正常访问:__
robots.txt 没有误拦正文资源:__
重要页面都已被收录:__
没有出现大量抓取错误:__
canonical 都指向可访问的地址:__
多语言声明双向对应:__
爬虫拿到的内容和用户看到的一致:__常见错误
sitemap 里放了后台和测试页。 自动生成最常见的问题。
robots.txt 拦掉了样式和脚本目录。 爬虫看到的页面是残缺的。
canonical 指向跳转或 404。 比不配更糟。
改域名或改 URL 结构不做永久跳转。 收录和外链一起归零。
多语言声明单向。 只有中文页面指向英文,英文不指回来,声明无效。
结构化数据和页面内容不符。 有被判作弊的风险。
配完就再也不检查。 一次误改配置可能让整站从收录里掉出去,而你几个月后才会发现。
验收标准
- sitemap 只含公开且希望被收录的页面,地址都可访问
- sitemap 已在站长工具提交
- robots.txt 没有误拦样式、脚本和图片
- 每个页面都有 canonical,且指向可访问地址
- 多语言站点的 hreflang 双向对应,含 x-default
- 用站长工具确认重要页面已被收录
- 确认过爬虫拿到的内容和用户看到的一致
- 有季度检查安排
本章动作
打开你的 sitemap,逐条看有没有不该被收录的页面。
再用站长工具检查一次首页和最重要那个内容页的收录状态。
下一步
- 外部链接——技术基础配好之后的下一环
- 页面 SEO——单页面的标题和结构
- 域名、DNS 与邮箱——域名和解析这一层