抓取方挑规则组时不看大小写,路径规则却看,配置时会踩哪一处

📅 2026-10-12 👁️ 0

抓取方挑规则组时不看大小写,路径规则却看,配置时会踩哪一处?踩在路径上。RFC 9309 里,产品标识的匹配是强制不区分大小写(Crawlers MUST use case-insensitive matching to find the group that matches the product token),而路径匹配写明 The matching SHOULD be case sensitive。结果是:写 User-agent 时大小写随意,写路径时 /Upload/ 和 /upload/ 是两条不同规则,挡下一个不代表挡下另一个。

协议只认两条指令

语法定义只有一条:rule = *WS (“allow” / “disallow”) *WS “:” *WS (path-pattern / empty-pattern) EOL。也就是说协议层面上的指令只有 allow 与 disallow,取值是路径模式或空模式。除此之外的任何行,都不在这份语法的约束里。

挑组看标识,命中看路径

规则是按产品标识分组的:抓取方先用自己的标识去匹配各个 User-agent 组,这一步不区分大小写,Googlebot 与 googlebot 属于同一组。选定组之后才开始比路径,路径匹配 SHOULD 区分大小写,因为服务器上的文件名本身往往区分。这两步用不同的大小写策略,是协议设计而非实现随意,配置时按各自的规则走。

冲突时谁赢:按字节数取最具体

同一组里 allow 与 disallow 都能匹配上同一个路径时,判定标准是 The most specific match is the match that has the most octets,即匹配到的字节数最多者胜出。注意单位是 octet(字节)而不是字符:非 ASCII 目录在常见编码下每个字符占多个字节,中文路径看起来短、字节数却更长,容易和”写得越长越具体”的直觉错位。判断冲突结果时按编码后的字节长度想,而不是按屏幕上数了几个字。

协议之外还写着什么

协议对额外记录留了口子:Crawlers MAY interpret other records that are not part of the robots.txt protocol – for example, “Sitemaps”。这句话有两层含义。一是站点地图记录确实常被写在同一份文件里,但它的解释依各家实现,不是协议规定的义务。二是像 noindex、抓取间隔这类扩展指令同样落在”可解释可不解释”的范围内,跨引擎效果不一致属正常,需要屏蔽时应以路径规则为准,别把关键控制押在扩展行上。

站内怎么对齐这套规则

Robots.txt 配置在后台集中管理时,要按协议的两套大小写策略写:屏蔽路径逐条区分大小写列全,实际目录叫什么就写什么。更常见的冲突来源是 URL 形态本身——AnQiCMS 支持自定义伪静态规则的伪静态 URL,规则改过一次就要回头核对抓取文件里的路径是否还指向同一形态,否则会出现”规则写的是旧路径、线上已换成新路径”的空挡。站点地图里的地址与抓取规则里的路径要同源:Sitemap 自动生成的地址若大小写与线上实际访问路径不同,地图可访问但内容被规则挡住,这类问题在日志里表现为抓取记录正常、收录却掉。

常见问题

问:只写一条 disallow 大小写不同的目录行吗? 答:分开写。路径匹配区分大小写,两条写法命中的是不同资源,写一条等于漏一条。

问:冲突时是不是 disallow 优先? 答:不是。协议按最具体匹配判定,比较的是匹配到的字节数,与指令是 allow 还是 disallow 无关。

问:站点地图一定要写在抓取文件里吗? 答:不是强制项。它属于协议之外的常见扩展解释,稳妥做法是同时在地图提交入口登记,不只依赖这一行。

相关文章

新版本上线当天旧分支就停止安全支持,补丁窗口该排几天

期限按发布日历排,不按公告语气排。Drupal 官方日程写明新版发布那一周同时终止旧分支的安全支持,因此站内窗口要卡在下一个安全发布日之前完成升级,而不是等旧分支失效后再补。排期前先确认在用分支在不在支持窗口内,升级前做一次完整备份并保留回退路径。

2026-10-12

新地址只被某几家搜索引擎接收时,其余引擎靠什么发现更新

即时收录通知只在参与方之间生效,其余引擎仍靠站点地图与常规抓取发现更新,官方也写明没有这类通知时,搜索引擎发现内容变化可能需要数天到数周。接收方范围要按协议官网核对,站内动作顺序是站点地图保证覆盖、301 重定向保证旧地址转移、参与方通知优先发。

2026-10-12

官方把补丁回移到多年前的分支,同时说只有最新版受支持,跟进时按哪句办

按"只有最新版本处于活跃支持"这句办。回移是官方安全团队给的礼遇,不是支持承诺:WordPress 7.1.2 的修复被回移到最早 4.7 的分支,同一份公告明确只有最新版本持续获得安全修复。判断维护边界要看是否列入支持范围,而不是某次有没有被照顾到。

2026-10-12

PbootCMS 把 AI 写作做成独立模块并兼容开放协议,接第三方服务时解决什么

PbootCMS 在 V3.2.15 更新说明中新增 AI 写作助手模块,支持一键生成文章、改写、TDK 与图片 Alt,并声明兼容 OpenAI 协议第三方服务,解决的是模型供应商的替换成本:接口协议统一后,换服务不必改写后台。AnQiCMS 走的是拆分路线,AI 写作、自动标签、AI 绘画与 TDK 各自成环节。

2026-10-12

同为建站程序,许可证对二开主题和插件的约束有什么不同

建站程序之间的许可证差异,主要体现在二次开发的分发义务上:采用 GPL 的程序把主题与插件视为衍生作品,衍生作品要延续同一许可;采用 Apache 2.0 这类宽松许可的程序不要求延续,但保留了专利授权与商标使用等条款。选型时要读的是分发义务、专利条款和品牌使用三处,而不是只看功能列表。

2026-10-12

同一款程序的两条分支同日出安全版,站点跟哪一条要看什么

同一条发布日里给两条分支各出一个安全版时,站点要跟哪一条不看版本号新旧,而看自己所在分支的两条截止线:错误修复截止与安全修复截止。分支过了第一条线只是不再收功能类修补,过了第二条线意味着新出现的漏洞不会再有官方补丁。跟版时要读更新记录里的修复项,判断是否触及自己的用法,并留出备份与登录凭证处理的时间。

2026-10-12

给模型准备的站点摘要里放了链接,就等于让引擎读到正文吗

不等于。按 llms.txt 提案的原文定位,这个文件是给 AI 智能体导航用的 Markdown 指南,智能体查看或检索它之后再跟随其中的链接去找信息;摘要文件本身不承载正文。链接指向的地址能否被真正抓取、页面内容是否可读,才决定引擎能不能读到内容,光有一份摘要文件不构成读到正文。

2026-10-12

让外部助手直接改站点内容时,写操作怎么在一轮里合并确认

内置 MCP Server 的做法是:工具面按意图目录统一收敛,接入侧用 Bearer 令牌鉴权,同一个回合内产生的多个写操作合并成一次确认再执行,而不是每改一处就打断一次。哪些能力对外可见由意图域的暴露范围决定,备份、升级、多站点等全站级高危域默认关闭,需要显式开启。这样外部客户端(如 Claude、Cursor)能参与运营,但改动范围与确认次数都可控。

2026-10-12