刚做完一次大改版(新模板、新结构、可能改了 URL),2-4 周后 Search Console 的 Pages 报告显示 Indexed 数掉了 20-60%。在回滚任何东西之前先冷静:改版后头 4-8 周的下降是正常的——Google 在重爬、重新评估整站。但如果 8 周后还在跌,那就是结构性问题了。
最快的修法: 最常见的根因是老 URL 现在返回 404,而不是干净地 301 到新等价页。把掉的 URL 拉出来,对每个跑一遍 curl -sI,把所有”不是单跳 301 到一个相关的 200 页面”的情况修掉。光这一项检查就能解决改版后绝大多数收录下降。本文剩下的部分讲怎么区分正常重新评估和真损害,以及另外六种原因的诊断方法。
症状
- Pages 报告在改版后 2-4 周内 Indexed 页数下降 20%-60%。
- 部分 URL 在 Why pages aren’t indexed 表里被重分类为
Crawled - currently not indexed。 - 部分 URL 直接掉出索引(URL Inspection 里显示
URL is not on Google)。 - Performance(点击/曝光)同期下降,但幅度和索引数的降幅并不一致。
快速判断:正常还是结构性?
| 信号 | 多半是正常重新评估 | 多半是结构性损害 |
|---|---|---|
| 距上线时间 | 前 4-8 周 | 8 周后仍在跌 |
| 老 URL 的 HTTP 状态 | 干净的单跳 301 → 200 | 404、410、重定向链或软 404 |
| 未收录原因 | 部分页面 Crawled - currently not indexed | Page with redirect、Not found (404)、Blocked by robots.txt、Excluded by noindex 激增 |
| 原始 HTML | title、H1、正文都在 | 空壳,内容要等 JS 跑完才出现 |
| 范围 | 一部分页面,逐周恢复 | 大面积、单调下降、不见恢复 |
如果大多数行落在左列,修法就是耐心——别再叠加改动。如果落在右列,照下面的原因逐个排查。
常见原因
1. URL 改了但没有 301 到新等价 URL
最致命也最高发。从 /blog/2024/post-name/ 改到 /articles/post-name/ 后:
- 老 URL 原本收录 → 现在返回 404 → Google 移除它,Pages 报告里的
Not found (404)上涨。 - 新 URL 没有历史信号 → 排名从 0 开始。
干净的 301 能同时解决两边:截至 2026 年 6 月,Google 通过 3xx 重定向几乎会传递全部排名信号(PageRank),但前提是单跳且目标相关。重定向链(/old → /temp → /new)或重定向到不相关页面(比如所有页都指向首页)会让信号流失或被丢弃。完整的 canonical 合并通常需要 1-4 周的爬取。
如何判断:
# 抽样老 URL,打印完整重定向链 + 最终状态。
# -L 跟随重定向;-w 打印跳数和最终状态码。
for url in "/blog/2024/post-name/" "/old/url2"; do
echo "=== $url"
curl -sIL "https://yourdomain.com$url" -o /dev/null \
-w '%{num_redirects} hop(s) -> %{http_code} (final: %{url_effective})\n'
done
# 期望:"1 hop(s) -> 200"。404、410、迁移过的 URL 却 0 跳、或 2 跳以上,都是问题。
2. title / H1 / meta 变得更通用或更弱
模板重做时的常见错误——新版把回退值写死了,没用每页各自的值:
旧 H1: "Astro Deploy to Vercel: Complete 17-Minute Setup"
新 H1: "Complete Guide" <- 通用化
旧 <title>: "Astro Deploy to Vercel - 17-minute walkthrough | YourSite"
新 <title>: "Article | YourSite" <- 模板回退值
重新评估时 Google 在这些页上读到的信息密度更低,更容易把它们留在 Crawled - currently not indexed。
3. 内链结构被压扁或削弱
- 原来”相关文章”区列 5 条,新模板只列 2 条。
- 原来面包屑链到分类页,新模板渲染成纯文字。
- 原来 sidebar 列最新 20 篇,新模板没了 sidebar。
每减少一处内链,就是少了一票对目标页的相关性/重要性投票,也少了一条爬虫触达它的路径。
4. 新模板引入薄页面
改版自动生成了一堆低价值页——作者主页、tag 页、按月分页归档页。它们稀释 crawl budget 和内链权重,正经文章被降优先级,滑进 Crawled - currently not indexed。
5. robots.txt 或 noindex 被过度应用
改版时为清理薄页,你一次性加了大量 noindex 或 Disallow 规则,结果连真正想收录的页也被波及。这些会在 Pages 报告里表现为 Excluded by 'noindex' tag 或 Blocked by robots.txt。
如何判断:
# robots.txt 变了什么?(留一份旧副本,或从 Wayback 抓一份)
diff <(curl -s https://web.archive.org/web/2026id_/https://yourdomain.com/robots.txt) \
<(curl -s https://yourdomain.com/robots.txt)
6. SSR/SSG 倒退(首次抓取拿到空 HTML)
旧模板是服务端渲染或静态生成,新模板换成了客户端 React,于是初始 HTML 只是个空壳。Google 分两波收录:Wave 1 立刻读原始 HTML;Wave 2(Web Rendering Service)稍后才跑你的 JS——两波之间的间隔从几小时到几周不等。如果内容只在 JS 执行后才存在,大片页面会处于未渲染状态而被降权。截至 2026 年 6 月,没有 SSR 或预渲染的纯客户端 React/Vue 不适合作为可收录内容的默认方案。
7. CSS/JS 资源被 robots.txt 屏蔽
新模板用了新的 CSS/JS bundle 路径,但 robots.txt 还在 Disallow 那个目录(或屏蔽某个 CDN 路径)。Google 抓不到样式,渲染出一个破损页面,进而降权。用 URL Inspection → Test live URL → View tested page → More info → Page resources 确认,看有没有资源被标成 “blocked”。
最短修复路径
Step 1:导出改版前后的 Pages 报告
Search Console -> Indexing -> Pages -> Export(右上角)-> CSV/Google Sheets
现在导出一份 "Why pages aren't indexed" 表,4 周后再导一份。
diff 两份 URL 列表,找出掉的页。
如果你没存改版前的基线,可以从旧 sitemap、Wayback Machine,或 Ahrefs / Semrush 的历史曲线里重建老 URL 列表。
Step 2:对每个掉的 URL 验证 HTTP 状态
# 把掉的 URL(每行一个)放进 lost-urls.txt
while read -r url; do
status=$(curl -sIL "https://yourdomain.com$url" -o /dev/null -w "%{http_code}")
hops=$(curl -sIL "https://yourdomain.com$url" -o /dev/null -w "%{num_redirects}")
echo "$url -> $status (${hops} hop(s))"
done < lost-urls.txt > status.txt
- 404 / 410: 补回页面,或 301 到等价新 URL。
- 301 但 2 跳以上: 把链压成单跳。
- 301 且 1 跳: 确认目标确实等价且返回 200。
- 200: 技术上没问题——看 Step 3。
Step 3:对比改版前后的 title / H1 / meta
# 从 Wayback Machine 抓改版前快照(id_ = 原始存档 HTML)。
WB="https://web.archive.org/web/2026id_/https://yourdomain.com/article"
curl -sL "$WB" | grep -oiE '<title>[^<]+|<h1[^>]*>[^<]+'
# 对比当前页面
curl -sL "https://yourdomain.com/article" | grep -oiE '<title>[^<]+|<h1[^>]*>[^<]+'
凡是变得更通用、更短的 → 恢复成每页各自的、有描述性的版本。
Step 4:审受影响 URL 的内链数量
# 统计新模板下指向每个掉的 URL 的内链有多少。
while read -r url; do
count=$(rg -o "href=[\"']$url[\"']" src/ | wc -l)
echo "$url $count"
done < lost-urls.txt
如果内链数比旧版少了 → 从真正相关的页面(相关文章区、正文内链、面包屑)补回链接。
Step 5:检查 robots.txt + noindex 是否过度
# 看 robots.txt 现在屏蔽哪些
curl -s https://yourdomain.com/robots.txt
# meta 标签和 X-Robots-Tag HTTP 头都要查(只 grep 正文会漏掉 HTTP 头里的 noindex)。
while read -r url; do
hdr=$(curl -sI "https://yourdomain.com$url" | grep -i 'x-robots-tag')
meta=$(curl -sL "https://yourdomain.com$url" | grep -io 'name=["'\'']robots["'\''][^>]*noindex' | head -1)
echo "$url | header: ${hdr:-none} | meta: ${meta:-none}"
done < <(head -20 lost-urls.txt)
意外的 noindex → 删掉 → 用 URL Inspection → Request indexing 重新排队(操作前先看下面 FAQ 里关于配额的部分,别一口气提交几百个)。
Step 6:检查 SSR/SSG 倒退
# 不执行 JS,抓原始 HTML(大致就是 Wave 1 看到的内容)。
curl -sL "https://yourdomain.com/article" > raw.html
wc -c raw.html # 只有几 KB 且基本是骨架标记 = 多半是空壳
grep -c "<article" raw.html # 0 = 正文不在初始 HTML 里
如果 raw.html 里没有正文,再用 URL Inspection → View crawled page(Google 的渲染快照)确认。修法是给文章路由重做 SSR 或预渲染。
Step 7:跑完 Step 1-6 后,等 4-8 周
把明确的问题修掉后,就别再改了。改版后头 4-8 周的下降是正常的重新评估期,频繁改动会让归因变得不可能——你根本分不清是哪一处改动起了作用。
8 周后还在跌:
- 重新跑上面的诊断。
- 看是否有 Google Core Update 同期上线(叠加效应——对照 Search Status Dashboard 确认)。
- 考虑回滚诊断指向的那一处具体改动,而不是整个改版。
如何确认已经修好
- 老 URL 现在返回单跳 301 到一个相关的 200 页面(重跑 Step 2)。
- Pages 报告里
Not found (404)/Page with redirect/Excluded by 'noindex'的计数停止上涨并开始回落。 - 对已恢复的 URL 做 URL Inspection,显示 URL is on Google,且渲染快照里是改版后的页面。
- Indexed 数先走平,随后几周内逐步回升。
容易误判的情况
- 一慌就再次改版: 叠加改动让诊断不可能。
- “流量降了就回滚”: 先等 4-8 周;回滚要付一次完整的重新评估周期。
- 跟改版无关就乱改 robots / canonical: 除非诊断指向那里,否则别动。
- 指望 Request indexing 能加速恢复: 配额大约是每个资源每天 10-12 个 URL(滚动 24 小时),对 1000 个 URL 的恢复杯水车薪——去修结构性根因。
预防建议
- 改版分阶段:先结构,再视觉,再内容模板,不要一次全改。
- 上线前把每个旧 URL 映射到新 URL,重定向清单进版本控制;优先单跳 301。
- 改版前导出当前的 Pages 报告和线上 sitemap,便于后续对比。
- 对最重要的页面做改版前后的抓取,外加
curl和 Lighthouse 检查。 - 给改版留 8 周观察窗,期间避免大规模再改。
FAQ
Q:掉页就该回滚吗? A:头 4-8 周不该——那段下降是预期之内的。回滚会触发又一次重新评估周期,把计时重置。只回滚诊断明确指向的那一处改动。
Q:需要重新提交 sitemap 吗?
A:如果你的 sitemap 文件还在同一个 URL(通常如此),不必删了再加——Google 会自己重新抓取它、发现新增/变更的 URL。当 URL 或主体内容确实变了时,更新每条目的 lastmod;大规模 URL 迁移后提交一次以促发新一轮爬取。别指望删掉旧 sitemap 能把页面从索引里移除——它做不到;那是 301 和 noindex 的活。(Google 已在 2023 年下线了 sitemap ping 端点,ping 现在是无效操作。)
Q:一个 301 要多久才能把老页的排名传过去? A:Google 在下次爬取时就会跟随重定向,但完整的 canonical/信号合并截至 2026 年 6 月通常要 1-4 周。单跳、目标相关的重定向合并最快;链会拖慢它。
Q:改版期间撞上 Core Update 怎么办? A:时机不巧,但可以拆开归因。先逐 URL 对比状态(301 vs 404 vs noindex)判断改版损害,再在 Performance 报告里对比 Core Update 窗口内的曝光变化来隔离算法影响。两者留下的”指纹”不一样。
Q:Crawled - currently not indexed 激增——是改版导致的吗?
A:常常是。它意味着 Google 抓了页面但判定不值得收录——通常是改版后内容变薄、标题/H1 变弱、内链变少(对应原因 2、3、4)。去强化这些信号,别只顾着刷 Request indexing。
相关阅读
外部参考:Page indexing report(Search Console 帮助)、Redirects and Google Search。