摆摊AI 产品实战手册

技术 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,逐条看有没有不该被收录的页面。

再用站长工具检查一次首页和最重要那个内容页的收录状态。

下一步

  1. 外部链接——技术基础配好之后的下一环
  2. 页面 SEO——单页面的标题和结构
  3. 域名、DNS 与邮箱——域名和解析这一层

On this page