先接受一个前提:同一URL在不同设备或登录状态下返回不同内容时,robots.txt本身通常不是原因,它只约束抓取器是否允许访问某条路径,不会按设备或Cookie切换规则。要对照的其实是三份东西:各状态下实际返回的HTML、对应抓取器看到的robots.txt响应,以及该URL最终是否被索引。做法是固定一个样本URL,分别用桌面、移动、未登录、已登录四种状态抓取,把差异列成可复查的对照表。
拿你手上一个真实页面,记录它的完整URL、当前robots.txt中与该路径相关的Disallow和Allow行、以及该页面在各状态下的标题和首屏正文。不要只截一张图,要把每份响应的状态码、正文长度、是否含跳转、是否含noindex都记下来。
区分两类情况:
如果robots.txt中该路径被Disallow,抓取器根本不会取到正文,此时你看到的“不同内容”只是浏览器视角,不能用来推断索引状态。这一步的结论直接决定下一步:先解决能否抓取,再谈内容对照。
假设样本URL为/product/a,你分别用桌面未登录、桌面已登录、移动未登录、移动已登录请求同一地址。把结果填入类似结构:
noindex,且是否只在某一状态出现。rel=canonical指向是否随状态改变。对照时优先看元robots和规范化链接,因为它们直接影响索引判断。若未登录状态返回noindex、登录状态返回index,那么以抓取器通常的未登录身份为准,页面可能长期不被索引;此时要改的是服务端对抓取器的响应策略,而不是去改robots.txt。
很多人只对照页面,却忘了robots.txt也可能因设备或登录状态返回不同内容。用同样的四种状态请求/robots.txt,记录状态码、正文行数、是否含目标路径规则。若未登录返回正常规则、登录后返回403或跳转登录页,那说明你的对照样本被污染了。
一个可执行的判断顺序:
注意:robots.txt的抓取限制不等于可靠的索引移除,也不保证页面一定不被展示;站点地图不保证收录。对照时不要把这些当成因果结论。
个别样本成立、规模化后出现例外,通常来自三类边界:
/search,但实际参数化URL是/search?q=,规则未命中。遇到例外时,不要扩大robots.txt的Disallow范围来“压住”差异,那会连带屏蔽本应被抓取的路径。更稳的动作是:先记录例外URL清单,按上述三类归因,再针对归因层修正。修正后重新用同一份对照表验证,确认差异收敛到可接受范围,再决定是否调整索引策略。
最后提醒:不同搜索引擎对robots.txt和元robots的支持情况须分别核查,对照结论只能对已验证的抓取器成立。