先把当时的情况摆出来。为了提升站内搜索体验,给搜索加了同义词表,输入「笔记本」会同时匹配「笔记本电脑」和 laptop。上线两周后日志里 ?s= 的请求翻了三倍,GSC 里搜索页收录从 8000 涨到 4.2 万。

把日志和配置对完,能解释这个现象的基本就这几处。同义词展开后每个组合生成独立 URL 没有做归一。另一种情况是搜索结果页允许被抓取 只屏蔽了部分参数。

还有一种情况,分页参数与搜索词叠加 组合数量指数级增长。另外,sitemap 生成逻辑把搜索页也一起包含进去。

动手时先统计搜索页的请求数量

grep -c 'GET /?s=' access.log

给所有搜索页加 noindex

add_header X-Robots-Tag 'noindex, nofollow' always;

接着在 robots 里屏蔽搜索参数

Disallow: /*?s=

等前面都确认过,再把搜索页从 sitemap 里排除

add_filter('wp_sitemaps_posts_query_args', 'exclude_search_pages');

恢复的判定其实很直接。两周后搜索页索引量回落到一万以内,日志里 ?s= 的抓取占比降到 5% 以下。

补一句。同义词是查询层能力,不该影响 URL 数量,展开逻辑放在服务端内存里做。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189