Search Console 里站点被收录 2860 条,其中 2040 条是附件页,URL 形如 /2026/11/hero/。这些页面只有一张图,标题是文件名,和正文抢同一批长尾词。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
add_action('template_redirect', function () {
if (!is_attachment()) return;
$id = get_queried_object_id();
wp_redirect(get_permalink(wp_get_post_parent_id($id)) ?: home_url('/'), 301);
});
WordPress 默认为附件生成独立页面,主题里没有 attachment.php 时会回退到 index.php 输出。没有 canonical 指向父文章,爬虫就当成独立内容收下。这一点先确认清楚,后面就不用反复试。
碰到「附件页被收录」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
改完隔一天再看一次,当场正常不代表能稳住。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
具体做法是,在主题里把附件页 301 到父文章 没有父级就跳首页;给附件页加 noindex 作为兜底;已收录的地址提交移除 同时让 sitemap 排除 attachment。
改完照着核一遍,访问附件地址跳到所属文章,Search Console 的附件页数量两周内开始下降。
