技术学院 / 站长 SEO 入门

站长 SEO 入门

入门

收录、权重、蜘蛛抓取的原理,以及可落地的优化清单。

6 章 · 21 节 · 约 11 分钟 · 更新于 2026-09-28 · 免费

章节
01 搜索引擎工作原理 1 小节
02 robots 与 sitemap 2 小节
03 标题与结构化数据 3 小节
04 蜘蛛 IP 识别 2 小节
05 收录诊断 4 小节
06 外链与权重 3 小节

搜索引擎工作原理

搜索引擎干的事分四步,SEO 的每一项优化都能对应到其中一步:

text
抓取 Crawling  →  索引 Indexing  →  排序 Ranking  →  展现 SERP
 蜘蛛能不能        内容值不值得      在候选里排第几     标题摘要好不好看
 访问到这个页       存进索引库                          (决定点击率)
阶段关键问题你能做的
抓取蜘蛛发现得了吗?访问得了吗?sitemap、内链、robots、服务器可用性与速度
索引内容有价值吗?是重复的吗?原创内容、canonical、避免大量模板页
排序和查询词的相关性、页面质量、站点权威度标题与正文的匹配、结构化数据、外链
展现用户会点吗?title、description、富摘要

抓取有预算的概念:搜索引擎不会无限制地爬你的站,它按站点规模和质量分配一个大致的抓取额度。所以大量低质页面(无限翻页、排序参数组合、空标签页)不只是没用,它们会挤占真正重要页面的抓取机会。

页面被收录要过的几道关

  1. 有入口(sitemap 里有,或者被别的页面链到);
  2. robots.txt 没禁;
  3. 服务器返回 200 且速度不至于超时;
  4. 页面没有 noindex;
  5. 内容和已有页面不重复,或者用 canonical 指明了正主;
  6. 内容本身有实质价值。

排查「为什么不收录」就按这个顺序走一遍,绝大多数问题出在前四步,而不是玄学。

一个常被忽略的点:抓取失败不是立刻反映在收录上的。服务器抖一阵,收录量掉可能是两周后的事,所以可用性监控要常态化,用网站连通性检测和批量网站巡检定期扫。

robots 与 sitemap

这两个文件是你和蜘蛛之间的正式接口:robots.txt 说哪里别去,sitemap.xml 说哪里值得去。

robots.txt

放在站点根目录,必须是 https://example.com/robots.txt,放别的路径无效。

text
User-agent: *
Disallow: /admin/
Disallow: /*?sort=
Allow: /admin/help/
 
User-agent: Baiduspider
Crawl-delay: 2
 
Sitemap: https://www.ip438.com/sitemap.xml

几条必须记住的规则:

  • Disallow 只阻止抓取,不阻止收录。 被外链指到的页面仍可能出现在结果里(只是没有摘要)。真要不收录,必须让蜘蛛能抓到页面并读到 <meta name="robots" content="noindex">——这两件事是矛盾的,所以别对想 noindex 的页面同时 Disallow。
  • 路径大小写敏感,Disallow: /Admin/ 挡不住 /admin/。
  • 通配符 * 和结尾符 $ 主流引擎都支持,但 Crawl-delay 谷歌不认(它在站长工具里单独设)。
  • 最要命的一条:上线时忘了把测试环境的 Disallow: / 改回来。改完 robots 一定要实际访问一次确认内容。

生成用在线网站 robots.txt 文件生成器,改完用 Robots 检测验证某个具体 URL 到底被允许还是被禁。

sitemap.xml

xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.ip438.com/</loc>
    <lastmod>2026-09-28</lastmod>
    <changefreq>daily</changefreq>
    <priority>1.0</priority>
  </url>
</urlset>

要点:

  • 单个文件最多 50000 条 URL、未压缩不超过 50MB,超了就拆分并用 sitemap 索引文件(<sitemapindex>)串起来;
  • <loc> 必须是绝对地址、且和 canonical 一致(带不带 www、有没有尾斜杠都要统一),否则等于自己制造重复页;
  • lastmod 要真实,内容没改却天天更新时间,引擎会学会忽略它;
  • changefreq 和 priority 只是建议,实际权重很低,不必纠结;
  • 新增页面要同步加进 sitemap——漏加不会报错,只是永远不被发现。

生成用 sitemap.xml 生成,提交入口见网站搜索引擎提交入口。改完顺手校验一下 XML 合不合法:

bash
xmllint --noout public/sitemap.xml && echo OK

标题与结构化数据

title 和 description

title 是排序和点击率里权重最高的单个元素,写法上有几条经验:

要素建议
长度中文 20–30 字,超了会被截断成省略号
结构核心词 - 补充说明 - 站点名,核心词靠前
唯一性每个页面都不一样,模板页堆同一个标题是重复内容的重灾区
堆砌同一个词重复三四次会被判作弊,反而扣分

description 不直接参与排序,但它决定搜索结果里那段摘要好不好看,也就直接决定点击率。80–120 字,把页面能解决的问题说清楚,别写成关键词列表。

html
<title>IP 地址查询 - 精确到运营商的归属地查询 - ip438查询网</title>
<meta name="description" content="输入 IPv4 / IPv6 地址,查询归属国家、省市、运营商与 ASN 信息,支持批量查询。">
<link rel="canonical" href="https://www.ip438.com/tool/result/">

canonical

同一份内容有多个 URL 可达时(带参数、带 session、www 与裸域、http 与 https、分页),用 canonical 指明哪个是正主,把权重集中过去。

三个高频错误:

  • 整站 canonical 都指向首页——等于告诉引擎「除了首页我没有别的内容」,内页全部掉出索引;
  • 带查询串的页面忘了显式指定 canonical,模板自动取当前 URL,结果每个参数组合都成了独立页;
  • canonical 指向一个 404 或者会跳转的地址。

结构化数据

结构化数据让引擎直接读懂页面在讲什么,还能换来富摘要(星级、FAQ 折叠、面包屑)。用 JSON-LD 写最省事,和 HTML 解耦:

json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {"@type": "ListItem", "position": 1, "name": "首页", "item": "https://www.ip438.com/"},
    {"@type": "ListItem", "position": 2, "name": "技术学院", "item": "https://www.ip438.com/college/"}
  ]
}

常用类型:文章用 Article / TechArticle,问答用 FAQPage,商品用 Product + Offer,导航用 BreadcrumbList,站点搜索框用 WebSite + SearchAction。

铁律:结构化数据里写的东西必须在页面上真实可见。FAQ 结构化里写了页面上根本没有的问答,属于作弊,会被取消富摘要资格。

标签生成用 Meta 标签生成器,写完用 Meta 标签优化分析看长度、重复和关键词密度,HTML 本身有没有写坏用 HTML 标签检测。

蜘蛛 IP 识别

日志里满屏的 Baiduspider、Googlebot,其中相当一部分是假的——采集器和刷流量的脚本都爱伪装成蜘蛛,因为很多站会给蜘蛛开绿灯(不限速、不弹验证)。只看 User-Agent 等于没验。

正确的验证方法:反向 + 正向解析

bash
# 1. 反查这个 IP 的域名
dig -x 66.249.66.1 +short
# googlebot.com 或 google.com 结尾才可能是真的
 
# 2. 再把这个域名正查回来,IP 必须和原来的一致
dig crawl-66-249-66-1.googlebot.com +short

两步都对上才是真蜘蛛。只做第一步不行,PTR 记录是 IP 持有者自己填的,可以随便写。

各家的合法域名后缀:

蜘蛛反查应得到
Googlebot.googlebot.com / .google.com
Baiduspider.baidu.com / .baidu.jp
Bingbot.search.msn.com
搜狗.sogou.com
字节.bytedance.com

对应的 nginx 片段(只对验证通过的放行,其余按普通访客限速):

nginx
map $http_user_agent $maybe_bot {
    default            0;
    ~*(googlebot|baiduspider|bingbot|sogou|yisouspider)  1;
}

真正的校验放在应用层做,把结果缓存起来(同一个 IP 一天验一次就够),别每次请求都去 dig。

从日志里看蜘蛛

bash
# 今天各蜘蛛的抓取次数
grep "$(date +%d/%b/%Y)" access.log \
  | grep -oiE 'googlebot|baiduspider|bingbot|sogou' \
  | sort | uniq -c | sort -rn
 
# 蜘蛛抓到的非 200 状态,这是最值得看的一张表
awk '$9 != 200 && /Baiduspider/ {print $9, $7}' access.log \
  | sort | uniq -c | sort -rn | head -20

第二条命令能直接暴露问题:蜘蛛大量拿到 404 说明站内有死链,大量 5xx 说明抓取时服务器在抖,大量 301 说明内链写的是旧地址、白白浪费抓取预算。

各家蜘蛛的 IP 段对照在搜索引擎蜘蛛 IP 地址大全,拿到可疑 IP 想看归属用 IP 地址查询,要判断一整段用 IP 段与 CIDR 互转。

收录诊断

「页面不收录」不是一个问题,是六七个问题的统称。按这个顺序排查,一般三步之内能定位。

第一步:站长平台怎么说

各家站长平台(百度搜索资源平台、Google Search Console、Bing 网站管理员工具)都有单 URL 检查功能,直接告诉你抓取状态和排除原因。这是唯一的权威信源,其他都是推断。先在网站搜索引擎提交入口把站提交并验证了。

第二步:蜘蛛视角看一遍

自己浏览器能打开不代表蜘蛛能。用蜘蛛的 UA 和不带 Cookie 的方式请求一次:

bash
curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' \
  -A 'Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)' \
  https://www.ip438.com/college/
 
# 看返回的 HTML 里到底有没有正文(JS 渲染的站这里会是空壳)
curl -s -A 'Googlebot' https://www.ip438.com/college/ | grep -c '技术学院'

高频原因:

现象原因
返回 403 / 503WAF 或 IP 黑名单把蜘蛛当攻击挡了
返回 200 但正文为空前端渲染,蜘蛛拿不到内容,需要 SSR 或预渲染
跳转到登录页内容需要登录,蜘蛛永远看不到
跳到首页移动端适配或地域跳转写错了

第三步:页面自身有没有自断后路

  • <meta name="robots" content="noindex"> 忘了删(测试环境带过来的);
  • HTTP 响应头里的 X-Robots-Tag: noindex,比 meta 更隐蔽,只有看响应头才发现;
  • canonical 指向了别的页面;
  • robots.txt 的 Disallow 命中;
  • 页面被 301 到了别处。
bash
# 响应头里的 noindex 只能这样看
curl -sI https://example.com/page | grep -i x-robots-tag

用 HTTP 状态检测看状态和跳转,网页内容提取看蜘蛛实际能拿到的正文,Robots 检测验证某个 URL 是否被禁。

第四步:速度与体量

抓取超时会直接导致放弃。首字节时间尽量控制在 500ms 内,页面别动辄好几 MB。用网站测速和 Web 尺寸规范量一量,顺手确认 GZIP 压缩是否开启——开压缩是投入产出比最高的一项优化。

外链与权重

「权重」不是搜索引擎官方的指标,第三方工具给的那个数字是估算值,别拿它当 KPI。真正在起作用的是站点的可信度与相关性积累,外链只是其中一个信号。

什么样的外链有用

特征说明
来源站点相关且可信同领域的站一条,胜过不相干的站一百条
正文内的自然链接页脚、友链区、评论区的权重远低于正文
锚文本自然全站清一色同一个关键词反而是典型的作弊特征
来源多样域名、行业、地域分散
随时间平缓增长一周暴涨几千条必然触发人工审核

rel 属性要用对:

html
<a href="..." rel="nofollow">不传递信任的普通外链</a>
<a href="..." rel="sponsored">付费 / 广告链接</a>
<a href="..." rel="ugc">用户生成内容里的链接</a>

买链接、链轮、站群互链这类手段,短期可能有效,被识别后是整站级惩罚,恢复周期以月计。评估一下:你的站扛得住整站掉排名吗?

比外链更值得花时间的事

对绝大多数站长来说,下面这些的回报都比去搞外链高:

  1. 内链结构。让重要页面从首页三次点击内可达,用面包屑和相关推荐把相关页面串起来。站内链接是你完全可控的,且直接影响抓取预算的分配。
  2. 消灭重复内容。参数页、分页、打印版、多域名同内容,统统用 canonical 收敛。
  3. 补齐内容深度。同一个主题写一篇能真正解决问题的长文,胜过十篇泛泛而谈。
  4. 修死链。定期扫一遍站内链接,404 既浪费抓取预算也伤体验。
bash
# 从 sitemap 里取出所有 URL,逐个检查状态码
grep -o '<loc>[^<]*' public/sitemap.xml | sed 's/<loc>//' | while read -r u; do
    code=$(curl -s -o /dev/null -w '%{http_code}' "$u")
    [ "$code" = 200 ] || echo "$code $u"
done

这一条脚本能发现的问题,通常比一个月的外链建设更值钱。批量检查也可以直接用批量网站巡检。

怎么衡量有没有进步

别盯着「权重」那个数字,盯这四个:

指标从哪看说明
索引量站长平台被收录的页面总数
抓取频次与抓取异常站长平台异常上升是最早的预警信号
展现量与点击率站长平台展现高点击低 → 标题描述该改了
关键词覆盖数站长平台 / 第三方长尾词数量比单个大词排名更能反映站点健康

横向看看同行做到了什么水平,可以参考网站综合质量排行,自己站的整体情况用网站综合查询一次性拉出来。

关于本文

本文由 ip438查询网 原创,正文中的命令与配置片段可直接取用。 内容会随实践持续修订,发现错漏欢迎反馈。