网站收录

收录被拦住了:robots.txt、meta robots 与 X-Robots-Tag 的检查顺序

排查收录问题时,常常发现页面被某条指令挡住了。robots.txt、meta robots 和 X-Robots-Tag 的作用范围不同,优先级也不一样,混用容易出现以为放开了其实还拦着的情况。本文按从外到内的顺序梳理检查步骤,并说明解除拦截后需要注意的事项。

网站收录

收录被拦住了:robots.txt、meta robots 与 X-Robots-Tag 的检查顺序

做收录排查时,有一类问题很容易被忽略:页面本身没有明显问题,抓取和内容也正常,但它从一开始就被某条指令挡住了。这时候再怎么提交 URL、加内链,效果都有限。先把拦截类指令查清楚,再谈收录,顺序会更顺。

三个地方都能写拦截指令

和收录相关的拦截指令,常见的有三处,作用范围从整站到单个资源各不相同。

robots.txt:管的是抓取

放在域名根目录下的 robots.txt,通过 User-agent 和 Disallow 控制爬虫能不能抓某个目录或文件。它影响的是抓取这一环。需要注意的是,被 Disallow 的 URL 通常不会被抓取,但搜索引擎仍可能因为外部链接而收录一个只显示标题和摘要的版本。所以“robots 拦了就一定不会收录”并不准确。

meta robots:管的是当前页面

写在 HTML 的 head 里,常见写法是 noindex、nofollow、noarchive 等。noindex 影响的是是否进入索引。如果页面同时被 robots.txt 拦住,爬虫可能看不到这个标签,反而造成判断偏差。

X-Robots-Tag:写在 HTTP 响应头里

通过响应头下发指令,对非 HTML 资源也能生效,比如 PDF、图片。它和 meta robots 的作用类似,但不需要改动页面正文,适合批量处理。

优先级与常见冲突

三条指令同时存在时,可以按下面的思路理解:

  • robots.txt 决定爬虫是否能抓到页面;抓不到,页面里的 meta 标签就无从读取。
  • meta robots 和 X-Robots-Tag 都表达索引层面的意愿,出现冲突时,通常以更严格的那条为准。
  • 同一个页面在多个 URL 下返回不同指令,容易出现同一份内容一个放行一个拦截的情况。
很多怎么也收不进去的页面,问题不在页面质量,而是在某次改版或批量配置时被顺手加上了 noindex,之后没有清理。

按从外到内的顺序自查

  1. 先看 robots.txt 是否有针对当前爬虫的 Disallow,注意路径的匹配方式和大小写。
  2. 抓取时看响应头里有没有 X-Robots-Tag,尤其是 PDF、图片、接口返回的页面。
  3. 再查看 HTML 源码里的 meta robots,确认值是 noindex 还是 index。
  4. 如果页面属于多语言或多地区站点,检查各版本是否被单独设置了拦截指令。
  5. 确认所有指令都放行后,再看服务器日志里爬虫是否真的来过、返回的状态码是什么。

解除拦截之后要注意什么

把 noindex 移除或修正 robots.txt 之后,抓取和收录不会立刻同步。原来的拦截记录需要时间刷新,页面也需要重新被抓一次。可以做的有:更新 sitemap 里的最后修改时间,从有抓取频率的页面加内链指向它,并在需要时手动提交 URL。

这里要有个预期:解除拦截只是把通道打开,页面能不能进入索引,还要看内容质量、重复程度和站点整体情况。把拦截排查当作第一步,而不是收录的保证。