先看现象。Shopify 店铺在后台改了 robots.txt.liquid,想屏蔽 /collections/*+* 组合筛选,保存后 curl 拿到的仍是默认模板,filter.v.price 这类地址照旧被抓。试过清浏览器缓存和换网络,结果一样。

排查方向其实有限,先把可能性排一排。模板只在主题发布后生效,后台保存不会自动发布。还有一种是Liquid 语法写错会让整段被跳过,回退到 Shopify 默认规则。

还有一种情况,app 代理路径 /apps/ 的规则由应用自己控制,不在模板作用范围。

另外,CDN 对 robots 有一小时缓存,源站改了边缘还是旧副本。

先把线上文件抓下来对照

curl -s https://shop.example.com/robots.txt | head -20

随后确认筛选地址的真实状态码

curl -s -o /dev/null -w "%{http_code}\n" "https://shop.example.com/collections/all?filter.v.price=0-100"

接着用 CLI 发布当前主题

shopify theme publish --theme=123456789

复核规则有没有出现在首屏

curl -s https://shop.example.com/robots.txt | grep -c filter

怎么算真的好了,看的是同一批现象。主题发布后 robots 首行出现自定义注释,筛选组合地址在已抓取列表里一周内归零,搜索页的展现量没有跟着掉。

补一句。模板里别写按 UA 分支的 Liquid 判断,Shopify 只渲染一次,这种分支永远不会生效。报错文案容易误导,真正的原因往往在相邻那一层的日志里。

作者 9823189