robots.txt 里的 Disallow、星号和美元符号分别是什么约定

📅 2026-10-13 👁️ 0

robots.txt 里 Disallow、通配星号和行尾美元符号分别代表什么含义?这套规则由标准化文档 RFC 9309 定义:基础指令是 Allow 与 Disallow 两类字段,分别表示允许和禁止抓取某类路径;星号是通配符,匹配任意一段字符;美元符号写在行尾,表示地址匹配到该位置精确结束。理解这三个约定,能覆盖日常绝大部分抓取规则的读写需求。

两个基础指令的作用范围

Allow 与 Disallow 都以「用户组 + 路径前缀」为对象:文件按用户组(最常见的通配全体抓取器)分段,段内逐条声明哪些路径允许、哪些禁止。默认情况下没有声明的路径不受限制;Disallow 指向某个目录,即以该前缀开头的一整片地址都被排除。

两条容易混淆的边界:空值的 Disallow 表示「什么都不禁止」,即整个用户组可抓取全站的约定写法;而同一路径同时被 Allow 和 Disallow 覆盖时,按更精确(更长前缀)的一条生效,这是标准里明确的匹配思路,与「写在前面的优先」无关。

通配与行尾符号的标准化

星号解决「中间不定长」的匹配:比如想排除所有带排序参数的列表页,可以在路径中用星号代替参数段。美元符号解决「到此为止」的精确匹配:行尾加美元符号后,规则只命中在该位置结束的地址,带任何后缀的更长地址都不受影响。两者组合,能表达「排除无结尾的裸目录、保留其下带后缀页面」这类精细意图。

写法片段 含义 典型用途
Disallow 路径 禁止该前缀下全部地址 排除后台、内部工具目录
Allow 路径 显式允许某前缀 在被禁目录下放行个别公开页
星号 匹配任意字符序列 覆盖带参数的地址段
行尾美元符号 地址在此精确结束 只匹配无查询参数的裸地址

注意美元符号只影响结尾判断,不是正则引擎——想靠它写复杂正则逻辑会失望,标准的匹配语法就只有这两类通配加前缀。

为什么它只约束抓取、不约束收录

robots 文件管的是「来不来取」,不管「取到后收不收录」。已被禁止抓取的页面依然可能因为外链出现在索引里(引擎只收录地址而不取正文),这是最常见的误解。想把页面彻底挡出搜索结果,要靠页面级的控制或访问权限,而不是往 robots 里写一行。同样地,robots 是君子协定,对无视协议的批量采集器没有强制力——防内容被整页拿走,要另配防采集手段。

还有一条安全红线:不要把敏感后台地址「藏」在 Disallow 里。公开文件等于向所有人公告了这个路径的存在,暴露入口反而更容易被定向试探。后台的防护应该落在鉴权与访问控制层。

站内的 robots 配置入口与复查时机

AnQiCMS 支持 robots 配置,后台修改后生成到站点根目录。需要主动复查 robots 规则的两个时机:一是改动伪静态规则之后——地址的表现形式变了,原来按路径前缀写的排除规则可能不再命中,或误伤了新格式的公开页;二是栏目结构调整之后——被排除的旧前缀可能已经换成新前缀,规则与实际路由脱节。复查方法很直接:拿规则清单对当前站点地图里的代表性地址逐条比对,确认每条 Disallow 仍然只挡想挡的那片地址。

常见问题

改了 robots 多久生效? 取决于各引擎下次抓取该文件的时间,没有即时推送;急切的收录动作配合链接推送,比干等文件重抓有效。

多个用户组段可以分别写不同规则吗? 可以,按引擎用户组分别限定,但要对主流抓取器都验证一遍匹配结果,避免只测了通配段。

Sitemap 声明应该写在哪里? 可以写在 robots 文件中指向站点地图地址,这是给它「指路」,与允许或禁止抓取互不冲突。

相关文章

在 robots.txt 里写 nofollow 其实不生效,标准到底认哪些字段

按 robots 排除协议的标准文本,字段只有 User-agent 与 Disallow 两组,nofollow 并不在 robots.txt 的定义里,写进去不会被按标准解析。本文区分拦抓取与拦收录两条路:抓取用 robots 配置控制,收录方向靠页面级控制与服务端跳转收敛,站内 robots 设置与 301 重定向各司其职。

2026-10-13

向百度推送接口提交链接后,返回的 remain 和 not_valid 字段怎么读

按百度搜索资源平台文档,API 推送成功时返回 success、remain、not_same_site、not_valid 四个字段:remain 是当日剩余配额,not_valid 是不合法链接清单;失败时返回以 4 开头的客户端错误码或 500 服务端错误码。本文按字段讲排查顺序,并说明链接推送与站点地图各覆盖收录链路的哪一段。

2026-10-13

刚发的页面引擎迟迟不抓,站点地图和 IndexNow 各管哪一段

新页面迟迟不被抓取,要先分清站点地图和 IndexNow 各管收录链路的哪一段:站点地图提供全量清单、告诉引擎站点有什么;IndexNow 这类即时通知机制负责把内容变更第一时间告知参与的引擎。两者互补,站内配齐全量与增量两条链路才能稳住收录时效。

2026-10-13

站点地图单文件上限是多少,URL 过万时怎么拆成索引文件

站点地图单个文件的条数与体积上限由协议约定,接近或超过时要拆成多份子文件并用索引文件分组,按栏目、更新时间维度组织。本文说明上限来自站点地图协议、超限怎么拆分、以及拆分后仍要靠主动推送补收录时效的做法。

2026-10-13

企业官网用 Docker 部署,端口和数据备份要提前准备什么

企业官网用 Docker 部署上线前,要先把端口映射和数据备份两件事规划好。系统提供官方镜像、默认监听 8001 端口,上线前需明确内外端口映射与访问入口;同时备份能力覆盖数据与静态文件,可在恢复时还原,避免容器重建后内容丢失。

2026-10-13

页面改了用户却看到旧版本,从缓存清发到验证按什么顺序排查

内容改了前台却还是旧页面,多数不是程序没生效,而是中间缓存层仍命中旧副本。排查按三步走:先在源站证伪,确认改动真的落库;再按合适粒度清缓存,边缘节点支持按地址、域名、标签、前缀与全站多种范围;最后看响应里的缓存状态头是否已从命中转为回源,并确认用户侧无痕验证通过。批量改动前先做备份,留好回退。

2026-10-13

全站替换改了栏目名称之后,锚文本和伪静态规则要不要跟着动

全站替换能把正文里的关键词和链接一次性批量改掉,但它只覆盖内容文本层:栏目名称、地址形式属于结构与路由层,改完后锚文本库里的关键词指向、伪静态规则的匹配路径都可能和新地址对不上。收尾要做三件事——核对锚文本投放范围、复查伪静态规则、抽查新旧地址跳转,防止批量改动留下断链。改前先备份,留好回退。

2026-10-13

内容没改页面还是慢,缓存头的 max-age 和 s-maxage 先查哪个

内容没有改动但页面加载慢时,缓存控制头的检查顺序是先看指令作用于哪一层:max-age 管浏览器私有缓存的保鲜秒数,s-maxage 管 CDN 等共享缓存并会覆盖 max-age,no-store 则让任何缓存都不存。本文给出传输层与渲染层的二分法,以及浏览器、共享缓存、源站三层各自的检查动作。

2026-10-13