报错是这么冒出来的。上传图片时会自动生成附件页,地址是 /图片名/ 这种形式,页面上只有一张图,却被搜索引擎收录了几百条。这些页面标题都是文件名,正文几乎是空的,抓取预算被大量消耗。
原因不止一个,得分开看。媒体设置里附件页默认沿用父文章模板,输出结构和文章页一样。另一种情况是主题没有对附件页做跳转,访问时直接返回 200 并渲染模板。
另外,sitemap 里把 attachment 这个文章类型也一起包含进去了。
上来先在搜索结果里统计附件页数量
site:www.example.com inurl:/attachment/
随后把附件页 301 到所属文章
add_filter('template_redirect', 'redirect_attachment');
从 sitemap 中排除附件类型
add_filter('wp_sitemaps_post_types', 'no_attachment');
恢复的判定其实很直接。附件页逐步退出索引,站点收录总数回落到正常水平,图片本身仍然能被图片搜索抓到。
直接返回 404 会连带让图片地址失效,跳转到父文章最稳妥,图片搜索的流量也不会一起丢掉;改完记得清一次对象缓存。报错文案容易误导,真正的原因往往在相邻那一层的日志里。