Boloop 阅读示意图(AI 生成):为合格公开图片提供窄入口,保留其他附件的权限边界。
Boloop 的一篇指南已经有了相关配图:浏览器能打开,图片尺寸正常,页面没有破图。单看阅读体验,似乎可以结束检查。
2026 年 10 月 22 日下午复查结构化数据时,我们顺着实际图片 URL 看了下去,发现它仍走通用附件接口。响应是 200,但路径受到 /api/ 的 robots 规则限制,图片响应又带有 X-Robots-Tag: noindex, follow。页面能显示,与搜索引擎可以发现并采用图片,原来是两个问题。
先检查图片本身,再检查引用它的地方
这次核对从指南里的真实 img 开始。我们随后比较了文章的 BlogPosting.image 和 og:image,三处都引用同一个附件地址。
这很有帮助:如果只改其中一处,读者、结构化数据和分享抓取器会看到不同的入口,故障很容易被暂时掩盖。图片改地址时,应先找清它的所有公开调用方,而不是看到哪个测试提示就只改哪个字段。
接着检查四件事:完整 GET 返回的确实是图片字节;MIME 与实际文件类型一致;匿名访问不依赖管理员会话;爬取规则和响应头允许目标用途。HEAD 可以快速看状态和头,但不能替代完整图片内容的核对。
只看图片能否显示,还没有回答匿名访问与爬取规则这两个问题。
robots 与 noindex 是不同的限制
robots.txt 决定爬虫是否允许抓取某个路径;响应中的 noindex 则对已经取得响应的抓取系统表达不要索引。如果路径本身被禁止抓取,爬虫也未必有机会读到该响应头。
因此,不能把其中一个地方改成允许,就假定另一个限制同时消失。更不能因为浏览器没有遵循爬虫规则、成功显示了图片,就认定搜索引擎也会得到同样结果。
Google 的图片说明提醒,图片除了遵守搜索的技术条件,还需要能够被发现。落在受限制的接口后面,是我们这次要处理的具体机制;图片是否最终被索引,则是另一个后续结果。
公开范围应该由内容发布状态决定
最容易想到的办法,是给整个附件目录加一条抓取例外。但 Boloop 的附件系统还服务草稿、私有内容和非公开预览。公开文章需要一张图,不代表同一目录下所有文件都应获得同样资格。
我们先前给作品截图建立过专用公开路径。它不是一个静态复制目录,而是在请求时检查:图片是否仍被有效、已发布、公开、非演示的作品引用,资源和图片是否处于允许状态,类型是否是支持的图片格式。
这次对原创指南主图沿用同一个思路,提供专用的 /article-images/ 入口。正文、文章结构化数据与分享图引用同步指向它。该入口只服务符合规则的公开原创文章主图,不把所有文章附件一并放开。原来的通用附件访问规则继续服务自己的用途,不因为这次 SEO 修正而变成任意文件的公开出口。
这也说明公开发现应复用 CMS 的发布事实。用户在编辑器里上传一张图、或者管理员能预览它,都不构成对匿名访问者的公开发布。
地址公开了,安全头和撤下规则仍要保留
图片是公开可抓取资源,并不意味着需要去掉所有保护。我们保留了图片沙箱、nosniff、既有访问预算,并对公开资格不使用可长期复用的共享快照。
private, no-store 在这里用来避免共享缓存保存过期的可见性结论。它和允许搜索索引表达的是不同事情:前者控制 HTTP 缓存,后者描述搜索用途,不能仅凭出现 private 这个词就认定公开图失效。
当文章撤下或图片不再被合格内容引用时,新的访问应重新检查资格。已经被外部下载的副本无法借此召回;权限判断也不能靠改一个不可猜的文件名来代替。
生产环境不适合为了演示撤下规则,随意把真实文章反复下架。相关状态变化在隔离数据中验证,线上再检查已经公开的资源和拒绝入口,证据边界要分别保留。
这次修正之后,能确认到哪一步
2026 年 10 月 22 日北京时间 15:13 的只读检查中,指南 HTML 已经引用新的文章图片路径;同一图片匿名 GET 返回 200、正确的 PNG MIME,以及允许索引的响应头。这证明新入口已经在线上提供图片,不再只是一个本地改动。
该发布的 Google 富媒体测试记录覆盖了英文、简体与繁体指南:三页都识别到有效文章与面包屑,新的图片地址也进入结果。它们的抓取时间分别是当天北京时间 15:12:43、15:12:56 和 15:13:02。
这比浏览器能显示图片多了一层实际抓取证据,仍没有证明图片搜索已经收录或展示了它。原先的绿色测试不能忽略旧限制,修复后的绿色测试也不能替代后续索引观察。
如果你的图片也遇到“能看但搜不到”,可以沿这条路径检查:从线上页面取真实地址,核对完整响应与抓取规则,找齐正文、Schema 和分享信息中的引用,最后再验证公开资格与撤下行为。先弄清哪一层挡住了图片,比反复上传新文件更容易找到原因。