这类问题我又碰上了一次。日志按路径聚合后,蜘蛛的请求有 40% 打在 /search 结果页,正文页只占 11%,新文章平均要等五天才被抓。

第一反应是「搜索参数组合接近无限,每个查询串都能生成新地址」,验证下来不成立。

排查方向其实有限,先把可能性排一排。搜索结果页有站内链接入口,蜘蛛顺着爬出去停不下来;结果页返回 200 且没有 noindex,被当成正常内容页;站内搜索页之间互相推荐,形成大量循环链接。

上来先按路径统计抓取占比

awk '{print $7}' access.log | cut -d'?' -f1 | sort | uniq -c | sort -rn | head -10

给搜索页加 noindex 并收紧参数

add_header X-Robots-Tag 'noindex' always;

等前面都确认过,再在 robots 里挡住带 q 参数的地址

User-agent: *
Disallow: /search?*q=

恢复的判定其实很直接。清理后搜索页的抓取占比从 40% 降到 2%,正文页分到的抓取量翻了一倍,新文章的抓取间隔缩短到两天。

站内搜索页是最常见的预算黑洞,入口在导航里又自带参数,不主动收口它会一直被当成内容抓下去。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189