页面排名掉了怎么查:五层排查顺序

一次排名一夜之间掉光的经历

去年十月我改了一版首页模板,把顶部导航加了个"热门标签"下拉框,顺手把文章列表的排版调紧了 8px。上线第二天,Google Search Console 里首页的展示量从每天 1200 掉到 90,排名从第 4 位滑到第 30 位开外,两周后回来了一半,一个月后才完全恢复。那段时间我一直在找"是不是被算法惩罚了""是不是被人刷了负面外链",全都没找到。最后翻请求日志才发现真正的原因:新版模板让移动端出现了横向滚动条,Google 的移动优先索引把首页判成了"内容不可用"。

这件事教会我一个朴素的道理:刷排名的方法论我不打算写,因为那套东西半年一换;但"页面为什么排名掉了、怎么科学地验证"这套排查方法,五年来基本没变。这篇文章讲的就是后者。

先用数据确认"真的掉了",而不是"感觉掉了"

站长最容易被自己的直觉骗。某天没流量就以为掉排名,实际上是那天是周日、或者搜索需求本身有季节性。所以在动手之前,必须先建立一个基于数据的判断。

看三个口径,不要只看一个

GSC → 效果 → 搜索查询 / 网页 / 国家 / 设备 → 时间范围选「过去 3 个月」
对比模式:选「去年同期」或「前一个周期」
  • 展示(Impressions):掉展示说明关键词的需求还在但你的页面没被排入,或者曝光位置太靠后。
  • 平均排名:GSC 的平均排名是"按展示加权"的,如果某个高展示词的排名变差,平均值会明显恶化。
  • 点击(Clicks)与 CTR:展示没变但点击掉,问题往往在标题或摘要被改写了。

三个口径的组合能区分出完全不同的病因:

  • 展示掉 + 排名掉 = 可见性问题(去抓取、索引、内容相关性方向查)
  • 展示掉 + 排名没变 = 需求下降了,或者季节因素,不是你的问题
  • 展示没变 + 点击掉 = 典型的标题/摘要被重写或 SERP 上出现了新占位(富媒体、AI 摘要、站内问答)
  • 展示涨 + 点击掉 = 排名上去了但落到低质量词,需要看查询明细

把单条 URL 拉出来看

整站维度容易掩盖局部问题。在 GSC 的"网页"标签里输入具体 URL,看它的展示曲线。如果只有这一个页面掉了、其他页面正常,那基本可以肯定是这个页面本身的问题,而不是整站惩罚。

第一层:先排除"页面其实已经不在了"

我见过最尴尬的情况是:排名掉了一个月,最后发现是 301 链没跟完,页面已经 404。这一层用命令行三分钟能查完,别跳过。

# 1) 看状态码与跳转链
curl -sIL "https://www.example.com/post/123.html" | grep -iE '^(HTTP|location)'

# 2) 看 canonical 指向谁
curl -s "https://www.example.com/post/123.html" | grep -oE '<link[^>]*canonical[^>]*>'

# 3) 看 robots meta 有没有被顺手写上 noindex
curl -s "https://www.example.com/post/123.html" | grep -oE '<meta[^>]*robots[^>]*>'

# 4) 确认 robots.txt 没把这条路封了
curl -s https://www.example.com/robots.txt

四个检查的常见结果:

  • 301 链超过一跳:GSC 里看到的是"网页已抓取,尚未编入索引",权重在每一跳都会损失。常见于换域名或改伪静态后没把旧规则清理干净。
  • canonical 指向了错误的页面:比如模板里写死了 https://example.com/(不带 www),或者分页、标签页都 canonical 到首页——这会直接导致原页面"被合并"。
  • noindex 被某次紧急操作留下:测试环境上线、或者为了"暂时不让人搜到"加过,之后忘了删。这类事故最多,建议在 CI 或发布脚本里加一条断言:生产环境的 robots meta 不允许出现 noindex。
  • robots.txt 里有 Disallow: / 或误伤路径:比如为了封搜索页写了 Disallow: /?,结果把带参数的规范 URL 也封了。

顺手确认一下 wget 拿到的内容长度:curl -s URL | wc -c,如果正文只有几个字节、或者返回的是 JS 壳(SPA 没有 SSR),那就是渲染问题,不是排名问题。

第二层:抓取与索引状态

页面能打开不代表 Google 能看到它。site: 命令只能作为粗略参考,精确信息看 GSC 的"网页"报告:

GSC → 索引 → 网页 → 查看原因明细

四个高频状态及其含义:

  • 已抓取 - 尚未编入索引(Crawled - currently not indexed):Google 来看过,但觉得不值得收录。原因通常是内容单薄、与站内其他页高度重复、或者站点整体信任度不够。
  • 已发现 - 尚未编入索引(Discovered - currently not indexed):URL 已知但连抓取都没排上,属于抓取预算问题。个人站最典型的诱因是 sitemap 里塞了几万个低质量 URL(标签页、搜索结果页、日期归档),把真正重要的页面挤到了队尾。
  • 重复网页,未选择用户声明的规范网页:Google 不认你写的 canonical。多半是因为同一内容有多个可访问入口(http/https、带不带 www、带不带尾斜杠)。
  • 备用网页(有适当的规范标记):正常的,说明这套 canonical 生效了,但被指向的那一页状态也要一并看。

重要经验:如果掉排名的页面落在"Crawled - currently not indexed"里,那问题不是排名算法,而是页面质量/重复度,先去改内容或合并,别去研究算法。如果是"Discovered"里,先去清理 sitemap,把垃圾 URL 撤掉、给标签页加 noindex。

第三层:查页面自己有没有动过

这一层是我吃过最贵教训的地方。排名掉之前 7~14 天,只要"页面在这段时间被改过",就要把怀疑对象锁定在改动上。

用 git 或者 md5 留痕

# 如果站点内容在 git 里
git log --since="2026-09-01" --oneline -- posts/123.md

# 如果不在 git 里,用 md5 快照做基线
find /var/www/site -name '*.html' -exec md5sum {} \; > /var/log/site-md5-$(date +%F).txt
diff /var/log/site-md5-2026-09-01.txt /var/log/site-md5-2026-09-20.txt

改动里要重点看四样:

  1. 标题与 H1:改了标题等于换了"被检索的主体",哪怕是同义改写也可能让排名重算。切记不要为了"更吸引点击"把标题改得离用户搜索词更远。
  2. 正文首段和核心小节:Google 判断相关性的重心在首屏和 H2 层。把一篇讲"MySQL 慢查询"的文章首段改成讲"服务器优化总览",相关性立刻模糊。
  3. 内链数:删掉了 3 个指向它的站内链接,等于抽掉了它的权重来源。内链的贡献常常比外链更直接。
  4. 模板层面的改动:这块最隐蔽。改一次全局模板,全站所有页面的 DOM 都变了。我前面讲的那次横向滚动条事故就属于这一类。

第四层:页面体验的三个硬信号

移动优先索引之后,Google 抓的是移动版页面。所以"桌面好看"已经不够了。这三个信号在命令行就能查:

信号一:viewport 与横向溢出

curl -s "https://www.example.com/post/123.html" | grep -oE '<meta[^>]*viewport[^>]*>'
# 期望:width=device-width, initial-scale=1

如果写成 width=1200 或者根本没有 viewport,移动端浏览器会按桌面宽度渲染再缩小,正文看起来"极小"——这类页面的排名普遍吃亏。

横向溢出用浏览器 DevTools 查最准:Console 里跑一段 document.documentElement.scrollWidth > window.innerWidth,返回 true 就是有溢出。溢出的元凶经常是代码块没加 overflow-x:auto、宽表格、以及 pre 里的长行。技术博客在这上面栽得特别多——我那次事故就是这个。

信号二:LCP 与字体

技术类文章最常见的性能问题是首屏大图或字体阻塞。字体方面,中文字体动辄 3~8MB,如果不做子集化,LCP 会被拖到 4 秒以上。两个务实做法:

  • 系统字体栈优先(-apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif),完全不加载 web font;
  • 必须用 web font 时,font-display: swap + 按 unicode-range 分片。

信号三:正文是否在首屏就能看到

如果模板顶部堆了三个轮播、两个侧边订阅框、一个浮动广告,手机上一屏看不到任何正文,用户的跳出行为(pogo-sticking)会反过来伤害排名。这条没有直接的技术检测方法,只能自己用手机打开看一眼——而且必须用真机、用 4G 网络看,不要在办公室 WiFi 下用桌面缩小窗口自我安慰。

第五层:是谁占了我的位置

如果自己这边全部检查干净,那就要看 SERP 本身变了什么。这一步很多人忽略,但它解释了相当大比例的"莫名掉排名"。

  • 查询意图变了:同一个词,两年前用户想找教程,现在想找工具。判断方法是在搜索里看前 10 名的页面类型——如果清一色是产品页/工具站,而你是教程,说明意图漂移了,你的排名下降是"正常"的。
  • SERP 特性占位:AI 摘要、精选摘要、视频模块、问答模块、本地包。第 4 名被 AI 摘要压到折叠线以下,点击率直接腰斩。这类变化不是你能控的,对策只有两条:把内容做成"被引用"的形式(结构清晰、有直接答案段落),或者换到攻击性更弱的长尾词。
  • 竞争对手换策略:某些词的前三名突然都变成了同一个大站,说明它在做整体改版或专题聚合。这时硬碰没用,去找它没覆盖的细分角度。
  • 新的权威源出现:比如官方文档更新了对应页面。这种掉法是永久的,接受它,转去做官方不会写的那部分(实战踩坑、版本对比、真实数据)。

一张排查顺序表

把这五层压缩成一张表,出问题时按顺序过,不要跳:

层 1  URL 状态     : curl -sIL 看状态码/跳转链/canonical/robots meta   → 3 分钟
层 2  索引状态      : GSC 网页报告看具体原因分类                        → 5 分钟
层 3  页面改动      : git log / md5 diff 定位 7~14 天内的改动           → 10 分钟
层 4  页面体验      : viewport / 溢出 / LCP / 首屏正文                  → 20 分钟
层 5  竞争环境      : SERP 前 10 页面类型、SERP 特性、对手动作           → 15 分钟

顺序不能颠倒的理由:前两层是"客观事实",成本最低;中间两层是"自己的责任",能改;最后一层是"环境",改不动,放在最后确认是避免白忙。

恢复期该做什么,不该做什么

确认原因并修好之后,接下来这段时间的行为对恢复速度影响很大。

该做的

  • 在 GSC 里对修好的 URL 请求编入索引,一天别超过十几个,且只对真正改动过的页面请求。
  • 给页面补内链:从 2~3 篇相关的旧文里加上链接,这是提升"重要性"最直接的手段,比外链可执行得多。
  • 保持更新频率:不要因为掉排名就停更。站点整体活跃度是抓取预算的输入信号之一。
  • 记录时间点:把改动日期、验证日期、恢复日期写进一个表。下次出问题能拿自己的历史做参照,这比任何教程都准。

不该做的

  • 不要一天之内狂改页面。每改一次都是一个新版本,Google 需要重新评估,改得太频繁等于一直在"重新排队"。改完一次,至少给它两周观察期。
  • 不要为了"新鲜度"去改发布日期。把旧文日期改成今天,短期可能有波动,但这属于欺骗性信号,长期是负分。
  • 不要批量买外链或做链接交换。这是最容易被判定为操纵的手段,而且清理成本远高于收益。
  • 不要大规模删页面。掉排名的页面直接删掉是个糟糕的选择——除非确认它是重复或垃圾内容。要下线就用 301 合并到相关性近的页面,别 410。

小结:排名是结果,排查是过程

写这篇文章我想强调的不是"怎么把排名刷上去"——那件事没有稳定方法,而且绝大多数所谓技巧三个月就失效。我想说的是另一件事:当排名掉下来的时候,能在一小时内判断出"是自己的问题还是环境的问题",本身就是一种能力。

我自己的经验是,掉排名的事件里大约有一半最终归因于"自己改坏了什么":一个 noindex 忘了删、一次模板改动引入了溢出、一次 301 链没跟完、一次把好页面合并进了弱页面。这些问题的共同点是都可以用命令验证、都可以修。

剩下的一半里,大部分是意图漂移和 SERP 特性变化——对待它们唯一正确的做法是承认它们、然后去找下一个细分角度,而不是硬碰。

最后一条建议:给站点建立可回溯的内容基线——git 版本控制、每周一次的 md5 快照、以及一个手写的"重要页面清单"。这三样东西在出事那天,能把你从两天的猜测压缩到二十分钟的定位。

Last modification:October 22nd, 2026 at 10:24 pm

Leave a Comment