先说结论
在 Odoo 里,robots.txt 不是一个可有可无的 SEO 附件。
它和第三方域名治理一起,构成了网站对外公开边界的一部分:
- 搜索引擎能抓什么;
- 不该抓的内容能不能被及时挡住;
- 页面编辑时能不能随手塞进不受欢迎的第三方资源;
- 一旦站点进入异常或封站状态,能不能快速把抓取信号收紧。
所以真正要理解的不是“怎么写一份 robots”,而是:
Odoo 如何把公开内容治理、资源来源治理和风险兜底放在同一个网站运营体系里。
一、为什么 Odoo 把 robots.txt 做成网站字段,而不是丢给运维手改文件
在 website.models.website 里,robots_txt 直接是网站模型上的字段;
而 website.robots 这个 wizard 只是读取当前网站的 robots_txt,编辑后再写回去。
这个设计非常有代表性:
- robots 归站点配置管理;
- 不要求每次改规则都登录服务器;
- 多网站场景下,每个网站可以有自己的 robots 策略;
- 配置变更更接近运营和网站管理员,而不是纯技术人员。
这说明 Odoo 的思路不是“robots 属于服务器”,而是“robots 属于网站”。
这对多网站团队尤其重要。
如果你有品牌站、招聘站、活动站、电商站,它们的抓取边界通常不一样。 把 robots 绑在 website 记录上,比绑在单一 nginx 文件里灵活得多。
二、为什么 robots.txt 真正控制的是“抓取预算”,不是“页面安全”
很多新手会误把 robots 当权限系统。
其实 robots 只能表达“希望爬虫不要抓”,并不能取代:
- 权限控制;
- 鉴权;
- 发布状态控制;
- 记录规则;
- URL 本身的访问限制。
Odoo 源码之所以把 robots 作为站点字段,而不是安全机制,就是因为它默认把这件事定位在 索引治理,不是 访问控制。
所以正确理解应该是:
- 页面不想被搜索引擎抓:robots 可以帮忙;
- 页面不想被任何人访问:必须靠真正的权限机制;
- 页面还没准备好公开:先别发布,比写 robots 更靠谱。
这也是企业站最容易踩的坑之一:
把 robots 当锁,结果它其实更像告示牌。
三、为什么 Odoo 还提供“第三方域名黑名单”这种看似不相关的能力
blocked_third_party_domains.py 乍一看和 SEO 没关系,但实际上非常有关。
这个 wizard 做了几件很实用的事:
- 读取当前网站的自定义第三方域名黑名单;
- 允许按行维护域名;
- 支持
#注释,方便团队保留治理说明; - 会把用户输入规范化成 host;
- 如果域名格式不合法,会直接报错。
为什么这很重要?
因为现代网站上,很多风险并不是来自你自己页面正文,而是来自页面引用的外部资源:
- 第三方脚本;
- 追踪像素;
- 外链图片;
- 嵌入式组件;
- 外部表单、聊天、统计、广告代码。
如果这些域名不受治理,网站就算 robots 写得很干净,公开边界也依然可能失控。
四、为什么“外部资源治理”本质上也是网站边界治理
很多团队把 robots、SEO、第三方脚本、隐私合规分给不同人管,最后的问题是:
- 抓取策略一套;
- 页面真实加载行为又是一套;
- 合规声明第三套;
- 技术实现第四套。
而 Odoo 这类设计给出的启发很清楚:
凡是会影响网站对外暴露面的东西,都应该在同一层治理。
因为搜索引擎抓取边界和页面外部依赖边界,本来就互相影响:
- 外部脚本可能拖慢抓取;
- 可疑域名可能影响页面质量信号;
- 未审查的第三方资源可能带来隐私和品牌风险;
- 某些嵌入内容甚至会把页面导向你不希望搜索引擎强化理解的方向。
所以第三方域名黑名单看似是“小工具”,其实是在补网站治理的另一块短板。
五、为什么 Odoo 甚至准备了“全部禁止抓取”的中和逻辑
源码里的 neutralize.sql 很直白:
它会把 robots_txt 更新成:
User-agent: *Disallow: /
这是一种非常强的信号:
Odoo 认为,在某些场景下,快速收紧整站抓取边界 是必要的运维动作。
这通常适用于:
- 预发/演示环境不应被搜索引擎收录;
- 数据导入中,站点内容暂时混乱;
- 刚复制生产库到测试环境,不希望外部继续抓;
- 某次事故后,需要先止血再细分页面策略。
很多公司只有“开放”策略,没有“快速封站”策略。Odoo 给的这个兜底思路,其实很实战。
六、实战里最容易犯的 4 个误区
1. 把 robots 当安全措施
它不是。 它只能影响合规爬虫的行为,不能代替访问控制。
2. 只盯页面 URL,不盯第三方资源来源
网站暴露面不只在路径里,也在页面加载链路里。
3. 改 robots 不留注释和版本上下文
第三方域名黑名单支持注释这一点很值得学。 很多“为什么屏蔽这个域名”的历史,没有注释过几周就没人记得了。
4. 多网站共用一套策略
品牌站、电商站、招聘站、活动站的抓取目标完全不同,robots 规则不该一刀切。
七、给网站运营团队的建议
如果你用 Odoo 管理官网,建议把 robots 和第三方域名治理一起纳入例行运营清单:
- 每次上线专题或新模块时,确认是否应被索引;
- 每次引入外部脚本或嵌入组件时,确认是否在允许域名范围;
- 多网站场景下分开维护 robots;
- 测试站、预发站准备好一键收紧抓取的兜底方案;
- 重要封禁和放行规则保留注释,避免团队失忆。
最后的结论
Odoo 的 robots.txt 编辑能力,加上第三方域名黑名单治理,本质上都在做同一件事:
- 定义网站愿意对外暴露什么;
- 限制不该公开放大的抓取与依赖;
- 给运营团队保留快速收紧边界的能力。
所以 robots 从来不是“写两行 Disallow”就结束。
它真正代表的是:
网站公开边界是不是有人负责、有没有工具、出了问题能不能立刻收口。
DISCUSSION
评论区