wordpress-indexation-issues-large-sites.html
< BACK 昏黄琥珀光线下堆满文件的陈旧档案柜

大型WordPress网站的索引问题:诊断指南

一个客户在上个春天的一个周二上午给我打电话——他的声音里充满了恐慌。他运营一个房产列表网站,大约42,000个页面,而谷歌搜索控制台刚刚告诉他,其中只有5,800个被收录。他失去了大约86%的可收录页面,似乎是一夜之间发生的。没有算法更新。没有手动操作。没有他能记起的最近部署。就这样……消失了。

关键要点:当一个40,000页面的WordPress网站只有6,000个页面被收录时,原因几乎总是架构问题:分面网址、薄模板和爬虫浪费,而不是谷歌惩罚。When a 40,000-page WordPress site has 6,000 pages indexed, the cause is almost always architecture: faceted URLs, thin templates, and crawl waste, not a Google penalty.

在Seahawk的12,000+个WordPress项目中,我看过这种情况无数次。最让人抓狂的是,大型网站的索引丢失很少只有一个原因。通常是三四个小故障悄悄叠加,直到某个环节崩溃。WordPress builds. And the maddening thing is that indexation loss on large sites rarely has one cause. It's usually three or four small failures that compound quietly until something collapses.

以下是我实际的诊断方法。

---

从Google搜索控制台开始——但不要停在那里

我总是做的第一件事是打开Google搜索控制台中的页面报告。不是旧的覆盖报告——谷歌在2023年更新了这个,新的页面视图用适当的原因代码分解了收录与未收录的情况。在第一天截图。你需要一个基准。Pages report in Google Search Console. Not the old Coverage report -- Google updated this in 2023, and the new Pages view breaks down indexed vs. non-indexed with proper reason codes. Take a screenshot on day one. You need a baseline.

原因代码的重要性不言而喻。"已抓取——当前未收录"与"被'noindex'标签排除"是完全不同的问题。一个是质量信号问题;另一个是配置灾难。我见过开发人员以相同的方式处理两者,并浪费数周追踪错误的问题。

我在大型网站上最常看到的原因

  • 已抓取——当前未收录:谷歌访问了该页面,但认为它不值得收录。通常是内容薄弱、接近重复或没有获得反向链接或内部链接的页面。: Google visited the page but decided it wasn't worth indexing. Usually thin content, near-duplicates, or pages that don't earn backlinks or internal links.
  • 已发现——当前未收录:谷歌找到了网址(可能在你的sitemap中),但还没有费力去抓取它。这是爬虫预算问题,不是内容问题。: Google found the URL (likely in your sitemap) but hasn't bothered to crawl it yet. This is a crawl budget problem, not a content problem.
  • 被'noindex'标签排除:某人——可能是你,也可能是一个插件——添加了noindex指令。下面会详细说明。: Someone -- possibly you, possibly a plugin -- added a noindex directive. More on this below.
  • 重复内容,Google 选择了其他规范标签:你的规范标签指向意外的位置,或 Google 正在覆盖它们。: Your canonical tags are pointing somewhere unexpected, or Google is overriding them.
  • 页面有重定向:一个应该可被索引的页面正在重定向到某个地方,可能正确也可能不正确。: A page that should be indexable is redirecting somewhere, either correctly or incorrectly.

不要只看总数。为每个原因代码下载完整的 CSV 列表。在有 40,000 个页面的网站上,你需要能够排序和筛选。

---

爬虫预算是真实存在的,它会摧毁大型网站

2019年,Seahawk正在为一个大型电商客户优化网站——约28,000个产品页面——我们无法理解为什么Google每天只爬取约3,000个页面。网站速度很快。网站地图很干净。表面上一切看起来都没问题。

结果发现网站生成了数千个分面导航URL——?colour=red&size=large&sort=price——这些URL可以被爬取,但没有正确设置规范标签,消耗了Googlebot的爬取配额,导致它根本无法到达真正的产品页面。?colour=red&size=large&sort=price -- that were crawlable, not canonicalised properly, and eating through Googlebot's crawl allowance before it ever reached the real product pages.

爬取预算本质上是指在一定时间内Googlebot愿意在你网站上爬取的URL数量。Google官方关于爬取预算的文档确实值得一读——他们对工作原理很坦诚。简而言之:如果你把预算浪费在垃圾URL上,重要页面就不会被爬取。Google's own documentation on crawl budget is genuinely worth reading -- they're honest about how it works. The short version: if you're wasting it on garbage URLs, the important pages don't get crawled.

如何真正审计爬虫预算

  1. 查看服务器日志。不是Google的爬取统计——查看实际的服务器日志。Screaming Frog Log File Analyser这样的工具可以让你筛选出只有Googlebot的访问记录。Screaming Frog Log File Analyser let you filter purely for Googlebot hits.
  2. 查看Googlebot访问中有多少百分比落在你真正关心的URL上。如果低于60%,你就有预算问题。
  3. 找出消耗最多抓取的URL模式。按频率排序。最常见的问题几乎总是:分面导航、分页存档上的分页、会话ID参数,以及空的分类/标签存档页面。
  4. 解决根源,而不仅仅是症状。在robots.txt中对永远不应该被抓取的参数进行Disallow。对其他一切使用rel="canonical"标签。robots.txt for parameters that should never be crawled. Canonical tags for everything else.

在那个电商项目上,我们通过robots.txt阻止了分面URL,并为所有过滤视图添加了rel="canonical"。在六周内,索引页面从8,000增加到24,000。内容相同。只是Googlebot最终到达了。robots.txt and added rel="canonical" to all filtered views. Within six weeks, indexed pages went from 8,000 to 24,000. Same content. Just Googlebot finally reaching it.

---

noindex 灾难(发生的频率比你想象的要高)

我需要谈论这个问题,因为我自己也经历过。不是我最闪耀的时刻。在 2021 年为一个新闻网站进行从测试环境到生产环境的迁移时,我们没有取消 WordPress 设置 → 阅读中的"阻止搜索引擎为该网站编制索引"选项。网站上线时带着全站 noindex。过了十一天,客户才注意到自然流量急剧下降。

WordPress把这个复选框放在没人想到的地方。而且某些SEO插件——Yoast、Rank Math,甚至AIOSEO——都有自己的noindex开关,分别位于文章类型、分类和单个页面级别。其中任何一个都可能静默地对你网站的大量页面设置noindex。

如何大规模检查 noindex

在整个网站上运行Screaming Frog,筛选返回noindex指令的页面。导出列表。然后交叉对比你的重要URL组——产品页面、服务页面、博客文章,无论对业务有什么重要意义。noindex directive. Export the list. Then cross-reference against your important URL groups -- product pages, service pages, blog posts, whatever matters to the business.

也要检查你的robots.txt文件(yourdomain.com/robots.txt)。查找过于宽泛的Disallow规则。我见过Disallow: /wp-content/这样的规则,它们会阻止Google爬取CSS和JS,而Google需要这些文件来正确渲染页面——这可能会导致渲染失败,看起来像是索引问题,但实际上是Googlebot看到了一个损坏的页面。robots.txt at yourdomain.com/robots.txt. Look for overly broad Disallow: rules. I've seen rules like Disallow: /wp-content/ blocking CSS and JS that Google needs to render pages properly -- which can cause rendering failures that look like indexation problems but are actually Googlebot seeing a broken page.

---

暗地里失效的规范标签

规范标签是大型 WordPress 网站上最隐蔽的索引杀手。因为它们单独看起来没问题,只有在大规模情况下才会暴露它们的危害。

这是我经常看到的一个模式:一个使用WooCommerce的网站有多个URL路径可以访问产品——/product/red-shoes/、/product-category/footwear/red-shoes/,有时还有/shop/red-shoes/。每个URL都有规范标签,但如果这些规范标签指向略有不同的URL(HTTP vs HTTPS、有尾部斜杠vs没有尾部斜杠、www vs非www),Google会将它们视为指向不同页面的信号,拒绝合并。/product/red-shoes/, /product-category/footwear/red-shoes/, and sometimes /shop/red-shoes/. Each one has a canonical tag, but if those canonicals point to slightly different URLs (HTTP vs HTTPS, trailing slash vs no trailing slash, www vs non-www), Google treats them as signals pointing to different pages and refuses to consolidate.

修复方法很平凡但很必要:

  1. 审计 WordPress 安装生成的每个 URL 结构。使用 Screaming Frog 的网站爬行功能→按"规范标签"筛选→导出。
  2. 检查是否存在协议不匹配、尾部斜杠差异和子域变体。
  3. 确保你的规范标签始终与你的首选 URL 完全匹配,逐个字符对应。

Rank Math 和 Yoast 都会自动生成规范标签,但这两个插件都不了解你的 .htaccess 重定向或 CDN 的 URL 规范化。你必须验证渲染后的规范标签,而不仅仅是插件认为它输出的内容。使用 httpstatus.io 这样的工具获取页面,并检查实际的响应头和 HTML。.htaccess redirects or your CDN's URL normalisation. You have to verify the rendered canonical, not just what the plugin thinks it's outputting. Fetch the page with a tool like httpstatus.io and inspect the actual response headers and HTML.

---

大型网站上的 XML 网站地图通常是错的

大多数WordPress SEO插件会自动生成网站地图。但大多数也会包含你不想要的URL——分页页面(/page/2/、/page/3/)、作者存档、只有两篇文章的标签页面、附件页面。/page/2/, /page/3/), author archives, tag pages with two posts on them, attachment pages.

网站地图应该是你最好的、最规范页面的精选列表。而不是 WordPress 曾经生成过的每个 URL 的转储。

我实际遵循的网站地图卫生规则

  • 排除分页归档页面。总是这样做。
  • 排除作者归档页面,除非这是一个多作者网站,且作者页面具有真实的内容价值。
  • 排除标签归档,除非标签是由编辑管理的,且具有有意义的内容。
  • 设定一个文章数量阈值——我通常排除任何少于5篇文章的存档页面。
  • 将大型网站地图拆分为网站地图索引。保持单个网站地图文件在 10MB 以下且 URL 数量在 50,000 以下。Google 在这里记录了具体限制。documented limits here.

在这篇文章开头的房产列表网站上,网站地图包含了41,000个URL,包括每个标签存档、每个分页页面,以及——我现在还是很遗憾地说——WordPress登录页面。先把它清理干净。总是要这样做。

---

内部链接是一个索引问题

人们不认为内部链接是一个索引工具。他们应该这样认为。

如果一个页面没有内部链接指向它,Googlebot可能永远找不到它——即使它在你的网站地图中。网站地图告诉Google某个URL存在。内部链接告诉Google某个URL很重要。这些是不同的信号。matters. Those are different signals.

在大型内容网站上,孤立页面随处可见。一篇三年前发布的博客文章,从文章存档中链接但从未从任何其他文章链接过,其爬取频率会随着时间推移降至几乎为零。

我使用Screaming Frog的"Orphan Pages"报告(在Site Structure下)来识别网站地图中零个内部链接指向的页面。然后我会逐个审查内容,找到逻辑上合适的地方添加链接。不是强行添加链接——而是真正相关的链接。这需要花时间,但对索引的影响是真实的。

---

系统诊断检查清单

如果我要把这个交给 Seahawk 的初级开发者,这是我让他们按顺序进行的步骤:

  1. 拉取 Google Search Console → 页面报告 → 下载所有未索引的 URL 及其原因代码。
  2. 检查 robots.txt 中是否有意外的广泛禁止。robots.txt for accidental broad disallows.
  3. 验证 WordPress"阻止搜索引擎索引"复选框已关闭。
  4. 运行 Screaming Frog 并筛选页面级的 noindex 指令。
  5. 检查规范标签——检查渲染后的输出,而不是插件设置。
  6. 拉取服务器日志,检查 Googlebot 在不同 URL 类型中的爬取分布情况。
  7. 审核 XML 网站地图,查找垃圾 URL(分页、空存档、非规范变体)。
  8. 运行孤立页面报告,识别内部未链接的页面。
  9. 检查分面导航或基于参数的 URL 是否生成了重复的可爬取路径。
  10. 验证页面速度——持续超时的页面会被Googlebot降低优先级。

不要一次性尝试修复所有问题。修复一个类别的问题,等待三至四周让 Google 重新爬取,测量效果,然后处理下一个。如果你同时改变所有内容,你永远不会知道什么真正起作用了。

---

常见问题

页面为什么会在一周内被索引,然后在下一周被移除?

Google的索引不是静态的。它根据质量信号、新鲜度和抓取效率不断重新评估页面。一个六个月前被索引的页面,如果没有获得任何链接、没有被内部链接指向,或者Google对你的域名的质量评估发生了变化,就可能被删除。这在网站迁移或大规模内容改版后特别常见——Google会重新抓取、重新评估,有时会决定之前索引的页面不再符合标准。

网站速度会影响索引吗?

是的,比大多数人意识到的要直接得多。如果页面响应缓慢——初始服务器响应持续超过2-3秒——Googlebot会降低对它们的抓取优先级。大规模来看,这意味着慢速页面根本得不到足够频繁的抓取来保持索引。在担心其他任何速度问题之前,先修复你的首字节到达时间(TTFB)。像WP Rocket这样的廉价缓存插件会产生可衡量的差异。Core Web Vitals对排名很重要,但TTFB对抓取更重要。Core Web Vitals matter for rankings, but TTFB matters for crawling.

网站地图中的页面过多会影响索引吗?

不直接——但一个臃肿的网站地图,其中包含低质量的URL,会削弱你向Google发送的关于什么很重要的信号。如果你的网站地图包含40,000个URL,其中30,000个是低质量的存档页面,Google会学会把你的网站地图当作噪音对待。保持网站地图紧凑和高质量。把它看作编辑策展,而不是URL库存。

我应该使用Google的URL检查工具来手动请求索引吗?

对于单个重要页面——是的,绝对可以。但不要试图手动请求数千个URL的索引。这无法大规模进行,而且Google已经表示手动请求的URL在长期内不会获得特殊对待。修复潜在的抓取和质量问题,让Google的自然抓取去做这项工作。使用手动检查来验证特定页面可以被索引,而不是强行索引所有内容。can be indexed, not to force index everything.

---

老实说,索引诊断不是光鲜的工作。它涉及电子表格、日志文件和大量的等待。但在一个大型网站上,即使恢复20%的丢失索引页面,也可能意味着有机流量的显著增长——在一个40,000页的房产列表网站上,这是真金白银。在追求任何复杂的东西之前,先把基础做好。几乎永远都不会是复杂的东西。

< BACK