先把当时的情况摆出来。站点用 WordPress 5.9,GSC 抓取统计按主机名看正常,按路径看 76% 集中在 /?p=123 这种文章 ID 预览地址。真正的前台正文页三天才被抓一次,新文平均十二小时才进第一轮抓取。

原因不止一个,得分开看。编辑在后台预览文章时把带预览参数的地址复制进了外链和内链。也可能是主题模板里的「相关阅读」直接输出 the_permalink 之前的老 ID 地址。

另外,没有任何 noindex 与 canonical 标记指向正式 slug 页面。少数情况下是站点的 RSS 输出里也带了预览地址 被采集站二次传播。

先统计预算被哪类路径吃掉

awk '{print $7}' access.log | grep -c '?p='

给预览地址补规范与 robots 指令

add_action('wp_head', function(){ if (isset($_GET['p'])) echo '<meta name="robots" content="noindex,follow">'; });

接着把内链模板统一改成正式地址

grep -rn "?p=" wp-content/themes/ | head -20

等前面都确认过,再观察一周后各路径的抓取占比

zcat access.log.1.gz | awk '{print $7}' | sed 's/?.*//' | sort | uniq -c | sort -rn | head

恢复的判定其实很直接。一周后抓取统计里 /?p= 占比降到 9% 以内,正式正文页的日均抓取次数翻了两倍,新文进入索引的中位时间缩短到三小时。

补一句。预览地址只要有一条被外部引用就会反复被抓,改模板之后记得用网址移除工具清理已经进索引的那批。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189