电商筛选器URL要不要写Disallow:3类判别法
电商分类页几乎都带筛选器:颜色、尺码、价格、品牌、材质。用户每点一个筛选条件就生成一个新的 URL(带 query 参数),看似无害的功能在 SEO 视角下能在几周内把一个站点的爬行预算耗光。常见的提问是"要不要在 robots.txt 里写 Disallow 把所有筛选 URL 屏蔽?"——这个问题没有非黑即白的答案,乱写 Disallow 反而会丢失本来能带流量的页面。保哥 2024-2026 年帮 9 个跨境电商和 4 个国内 B2C 客户处理过这件事,本文给出按 3 类判别的实操方法,每一类都附真实案例数据。
本文示例 URL 以 example.com/category/clothing 为基础页面,筛选参数采用 ?color=red&size=L&brand=nike 这种 query string 形态。其他形态(路径式 /clothing/red/L/、HashBang #color=red 等)逻辑相通但具体语法不同。
筛选器 URL 长什么样:4 种常见形态
不同电商平台的筛选器 URL 设计差异很大。先把常见的 4 种摆清楚:
| 形态 | 示例 | 常见平台 | SEO 友好度 |
|---|---|---|---|
| Query 参数式 | /clothing?color=red&size=L | WooCommerce、Magento 默认、ECShop | 中等(参数顺序影响重复内容) |
| 路径式(静态化) | /clothing/red/L/ | Shopify 部分主题、Magento 重写后 | 高(看起来像独立栏目) |
| HashBang 式 | /clothing#color=red&size=L | 早年 jQuery 版前端 | 极低(Google 不索引) |
| POST 表单式 | /clothing(参数靠 POST 提交) | 少数定制系统 | 不会被索引 |
Hash 和 POST 形态本身就不会被 Google 索引,不需要 Disallow。需要决策的主要是 Query 参数式和路径式。
不处理的后果:爬行预算被参数排列组合吃光
一个有 5 个筛选维度(每个维度平均 10 个选项)的分类页面,理论上能产生的 URL 组合数是 11^5 = 161051 个(每个维度选或不选各算一种)。实际场景里因为筛选维度更多、参数顺序差异(color=red&size=L 和 size=L&color=red 是两个 URL)、分页参数叠加,单个分类的可能 URL 数会冲到几十万甚至上百万。
Google 的爬行预算是有限的。一个中等权重的电商站每天的 Googlebot 爬取次数通常在 5 万到 20 万次。如果筛选器 URL 不处理,Googlebot 会优先去爬那些"看起来唯一"的参数组合 URL,把真正重要的商品详情页和主分类页晾在一边。结果就是商品页迟迟不被索引,分类页排名上不去。
保哥跟踪过的一个客户案例:Magento 2 跨境电商站,运营 2 年,2024 年 12 月发现 GSC 报告里"已发现但未编入索引"的 URL 数量飙到 87 万,其中 92% 都是筛选器参数组合。这种情况下不处理就是慢性自杀。
判别法第一类:必须 Disallow 的筛选器
下面这些场景的筛选器 URL 应该直接在 robots.txt 里 Disallow:
- 多维度组合产生重复内容:颜色、尺码、库存状态三个参数选不同组合,但展示的商品集合几乎完全相同——比如"红色 S 码"和"红色 S 码且有库存"通常返回同样的几款衣服。这种 URL 没有独立 SEO 价值。
- 排序参数:sort=price_asc、sort=newest 这种排序变体,内容相同只是顺序不同。Google 完全不需要索引多个排序版本。
- 展示模式参数:view=grid、view=list、per_page=24 这种"显示样式"参数。
- session 类参数:sid、PHPSESSID、tracking_id 这类应用层的参数。这种通常不只是 SEO 问题,还可能泄漏用户会话信息。
- 多选筛选的全部组合:多选筛选器(如"颜色:红色 OR 蓝色 OR 绿色")能组合出 2^n 个变体,绝大多数都没有搜索价值。
典型的 robots.txt 写法:
User-agent: *
# 排序参数
Disallow: /*?*sort=
Disallow: /*&*sort=
# 展示模式参数
Disallow: /*?*view=
Disallow: /*&*view=
Disallow: /*?*per_page=
# 会话和追踪参数
Disallow: /*?*sid=
Disallow: /*?*sessionid=
Disallow: /*?*PHPSESSID=
Disallow: /*?*utm_=
Disallow: /*?*fbclid=
Disallow: /*?*gclid=
# 库存筛选
Disallow: /*?*in_stock=
Disallow: /*&*in_stock=
这套写法覆盖了大多数没有 SEO 价值的参数。注意每个参数要同时写 ?* 和 &* 两种位置,因为参数可能在 URL 中作为第一个或后续参数出现。
判别法第二类:保留索引的筛选器
下面这些场景的筛选器 URL 应该保留索引,不要 Disallow:
- 单个有搜索价值的筛选维度:用户搜"红色连衣裙"是高搜索量查询,对应的 /clothing/dresses?color=red 这个 URL 应该被索引。
- 品牌筛选:/clothing?brand=nike 通常有独立搜索价值(用户搜"耐克衣服")。
- 价格区间筛选:/clothing?price=under-100 对应"100 元以下衣服"这类查询。
- 类目细分:/clothing?category=jeans 等同于子分类页面,应保留。
这些 URL 不应该 Disallow,反而要主动优化让 Google 索引。具体做法:
- 在分类页面上做静态化 URL 重写,把 ?color=red 重写成 /color/red/,让 URL 更像独立栏目。
- 给每个有 SEO 价值的筛选 URL 配独立的 title、description、H1。
- 主动在 sitemap.xml 里列出这些 URL,让 Google 优先爬。
- 从主分类页面用 follow 链接指向这些 URL。
关键认知:单维度筛选 URL 有 SEO 价值,多维度组合 URL 通常没有。区分这两类是策略的核心。
判别法第三类:临界场景用 noindex+follow
有些 URL 既不是明显的垃圾(不应该 Disallow),也不是高价值页面(不需要主动优化)。这种临界场景的最佳处理是:保留 Googlebot 爬取(不写 Disallow),但通过 noindex meta 标签告诉 Google 不要把它放进索引。
典型场景:
- 两个维度组合的筛选页面(color=red&size=L)——可能少量长尾搜索能用上,但单页流量极小。
- 分页变体(page=2、page=3)——内容是主页面的延续,需要爬取但不需要独立索引。
- 带筛选的子分类页面排序变体(如 /dresses?color=red&sort=newest)。
实现方式是在筛选页面的服务端代码里检测当前 URL 是否符合"应该 noindex"的条件,匹配上就在响应的 head 里输出:
<meta name="robots" content="noindex, follow">
"noindex" 告诉 Google 不要索引这个页面;"follow" 让 Google 继续爬取页面上的链接(重要!否则商品详情页可能因为这种链接的"无 follow"而失去内链权重)。
noindex 比 Disallow 有一个关键优势:Google 依然会爬这个页面,能看到页面上的内链,把权重传递给商品详情页。Disallow 是"我不让你爬",noindex 是"你可以爬,但别索引"。对内链权重传递来说 noindex 更友好。
真实案例:Magento 2 跨境电商爬行预算治理
2024 年 12 月接的客户:Magento 2 跨境电商,主营户外用品,3.2 万个 SKU,GSC 显示"已发现但未编入索引"URL 数量 87 万。原始 robots.txt 几乎没有限制,Googlebot 每天 8 万次爬取里只有约 12% 落在商品详情页和主分类页。
诊断步骤:
- 用 Screaming Frog 抓取站点 5 万个 URL 样本。统计参数分布:72% 是排序参数变体、18% 是多维度筛选组合、6% 是分页变体、4% 是单维度筛选。
- 分析 GSC 的"已发现未编入索引"URL 类型分布。排序变体占 68%、多维度筛选占 21%、其他 11%。
- 看 Server Log 一周。Googlebot 实际访问的 URL 里,68% 是排序参数变体——和 GSC 数据一致。
处理策略:
- robots.txt 增加 Disallow:所有排序参数、展示模式参数、库存筛选参数。
- 服务端代码改造:检测 URL 是否含两个以上筛选参数(多维度组合),是的话输出 noindex+follow。
- 单维度筛选 URL 静态化重写:/clothing?color=red 重写成 /clothing/color/red/,进 sitemap.xml。
- 分页变体(page=2 及以后)输出 noindex+follow。
4 周后的数据变化:
| 指标 | 处理前 | 处理 4 周后 |
|---|---|---|
| Googlebot 日均爬取 | 8.2 万次 | 5.8 万次 |
| 商品详情页 + 主分类页占比 | 12% | 71% |
| "已发现未编入索引" | 87 万 | 3.2 万 |
| "已索引"商品详情页 | 1.1 万 | 2.8 万 |
| 自然流量 | 基线 | +34% |
4 个月后自然流量比基线 +58%。爬行预算治理是回报率最高的 SEO 工作之一,特别对大站。
真实案例:国内 B2C 反向操作的教训
2025 年 3 月接的另一个客户:国内 ECShop 衍生的 B2C 服装站。客户上一任 SEO 顾问 1 年前给写过一个 robots.txt,把所有带 query 参数的 URL 都 Disallow 了。结果:
- "色彩+品类"这类高搜索价值组合(如 /clothing?color=red&category=dresses)也被屏蔽,长尾流量几乎归零。
- 价格区间筛选 URL(/clothing?price=100-200)被屏蔽,用户搜"100-200 元连衣裙"这类查询完全打不到他们站。
客户的实际损失:和同类竞争对手对比,他们的长尾流量大概只有竞争对手的 30%,问题持续了一整年都没被发现,因为主关键词排名一直稳定(主分类页没被屏蔽)。
修复后 6 个月,长尾流量恢复到竞争对手的 80% 水平。这个案例的教训是:Disallow 是双刃剑,盲目屏蔽会丢失本来能拿到的流量。Disallow 之前必须明确"这些 URL 真的没有搜索价值"。
阶梯式策略:从轻到重的 5 种处理方法
处理筛选器 URL 不只有 Disallow 一个选项。按"对 Google 自由度"从高到低排列:
- 什么都不做:让 Google 自己决定。适用于小站点(少于 1000 个 SKU)、筛选参数少(2-3 个)、爬行预算充足的场景。
- 用 canonical 标签:在筛选 URL 的 head 里输出 canonical 指向无参数主页面。Google 会优先索引主页面,筛选页面作为附属。
- noindex+follow:爬取但不索引。前面详细讲过。
- nofollow 链接:在主分类页面的筛选器链接上加 rel="nofollow",让 Google 不沿着筛选器链接爬下去。这能降低爬行压力但不彻底。
- robots.txt Disallow:彻底禁止 Googlebot 访问。最严格但损失最大。
实际策略通常是组合使用:
- 无 SEO 价值的明显垃圾参数(排序、展示模式、session)—— Disallow。
- 多维度组合筛选 —— noindex+follow。
- 单维度有搜索价值的筛选 —— 静态化 URL + 主动 sitemap。
- 分页变体 —— noindex+follow。
- 临时活动页 —— canonical 指向主页。
GSC 数据怎么用来验证策略
处理后怎么知道策略有效?看 GSC 的几个关键报告:
- 覆盖率报告:看"已发现未编入索引"和"已抓取但当前未编入索引"数量变化。处理 4 周后应该明显下降。
- 抓取统计信息:看 Googlebot 每日抓取次数和按响应类型的分布。处理后总抓取数应该下降(爬虫去爬更少 URL),但抓取效率(落在重要页面的占比)上升。
- 性能报告:看"展示次数"和"点击次数"按页面分组的变化。长尾页面(筛选页)的展示数和点击数应该有明显变化。
处理后第 4 周是数据稳定的关键节点,之前都是过渡期不要做决策。如果第 4 周还看不到改善,要回头审视策略是不是过严或过宽。
Google 官方表态历年回顾
Google 的 John Mueller、Gary Illyes、Martin Splitt 这几年公开发言里关于筛选器 URL 的核心立场(保哥从 Twitter / Reddit / Office Hours / Search Central 视频整理):
- 2019 年 Office Hours:Mueller 建议中大型电商对筛选器使用 Disallow 而不是 noindex,理由是节省爬行预算。
- 2021 年 Twitter:Mueller 部分修正了 2019 年的立场,强调"Disallow 阻断了链接权重传递",对内链流的网站不友好。
- 2023 年 Search Central Live:Gary Illyes 提到大多数电商应该走"noindex+follow + sitemap 主动声明"组合,Disallow 仅用于明显垃圾参数(排序、追踪)。
- 2025 年 Office Hours:Mueller 反复强调"参数处理"功能(GSC 老版本里有的 URL Parameters Tool)已经退役,电商必须自己用 robots.txt + 模板 noindex + canonical 三件套处理筛选器。
趋势是:Google 越来越倾向于让站长用 noindex+canonical 这种"软处理"而不是 Disallow 这种"硬处理"。但实操中 Disallow 对超大型电商依然不可替代。
常见的几个误区
- "用了 canonical 就能不用 Disallow":canonical 是建议性的,Google 不一定遵守。对参数极多的电商,单纯 canonical 依然挡不住爬行预算被吃光。
- "noindex 比 Disallow 更环保所以全部用 noindex":noindex 需要 Googlebot 先爬到才能看到 meta 标签,对超大型站点依然有爬行压力。Disallow 在节省爬行预算上更彻底。
- "Disallow 后页面立刻从索引消失":错。Disallow 阻止新爬取,但已经在索引里的 URL 不会立刻被移除。要移除已索引 URL 需要先返回 410 或 404,让 Googlebot 看到再清除。
- "robots.txt 写错没事":写错可能屏蔽整个站点。保哥见过有人写 Disallow: / 屏蔽全站结果第二天流量归零。robots.txt 改动后必须用 GSC 的"robots.txt 测试工具"验证。
- "Bingbot / 百度爬虫遵守 Google 规则":不一定。robots.txt 标准 90% 一致,但实现细节有差异。中文站要同时考虑百度 Spider 的特殊行为。
常见问题解答
新站要不要 Disallow 筛选器 URL
取决于规模。SKU 少于 500 的小站点不需要急着做——Google 的爬行预算对小站点是充足的,把精力先放在内容和外链上。SKU 在 500 到 5000 之间的中型站点可以等到 GSC 显示"已发现未编入索引"数量超过 1 万时再处理。SKU 超过 5000 的中大型站点上线第一天就应该写好 robots.txt,避免后期数据已经污染了再清理。
Disallow 后 GSC 报告"已被 robots.txt 屏蔽"的 URL 数量很大正常吗
正常,而且是处理生效的信号。这个数字说明 Googlebot 曾经发现过这些 URL(通过站点内链或外部链接)但被 robots.txt 拦截没有爬。这是正确的策略效果。不要因为这个数字大就把 robots.txt 改回去——重要的是看"已发现未编入索引"数量是否下降、商品详情页索引数是否上升。
用 GSC 的 URL Parameters Tool 处理筛选器还有效吗
Google 在 2022 年 4 月正式下线了 URL Parameters Tool。现在所有筛选器处理都必须通过 robots.txt、meta robots、canonical 三种方式。如果你曾经依赖 URL Parameters Tool,需要在站点代码里重新实现等效逻辑。
WooCommerce 默认筛选器 URL 怎么处理
WooCommerce 的筛选器 URL 形如 /shop?filter_color=red&filter_size=L。推荐的 robots.txt 写法:Disallow: /*?*filter_; Disallow: /*&*filter_; Disallow: /*?*orderby=; Disallow: /*?*per_page=。同时安装 Yoast SEO 或 Rank Math 在 SEO 设置里开启"对参数页面自动 noindex"。WooCommerce 本身不输出 canonical,需要 SEO 插件补上。
Shopify 的筛选器要不要处理
Shopify 默认会给筛选页面输出 canonical 指向无参数版本,已经做了一半工作。但 Shopify 的 robots.txt 在很多套餐里不允许自定义。要处理筛选器爬行预算需要在 Shopify Liquid 模板里加 noindex meta 标签。对中大型 Shopify 店建议升级到 Shopify Plus 才能完全控制 robots.txt。
多语言电商的筛选器要分语言版本各自处理吗
是的。多语言电商通常每个语言版本是独立的子目录或子域(/en/ /fr/ /de/ 或 en.example.com)。每个语言版本的 robots.txt 规则可以相同(在同一个文件里写多语言通用),但 noindex 和 canonical 必须按语言版本各自处理。注意 hreflang 标签的目标必须是有索引价值的 URL,不能指向 noindex 页面。
处理筛选器后多久能看到流量变化
看变化规模。爬行预算治理(Disallow)的效果通常 4 到 8 周开始反映在 Googlebot 抓取统计;商品详情页索引数上升通常需要 6 到 12 周;自然流量的可见增长通常需要 10 到 16 周。这是 Google 重新评估站点结构的自然时长。期间不要反复改 robots.txt 否则会让数据持续震荡难以判断。
百度对筛选器 URL 的处理和 Google 有什么不同
百度的爬虫预算更紧、对参数 URL 的容忍度更低。同样规模的电商站点百度 Spider 每日爬取通常只有 Googlebot 的 30%-50%。但百度对 robots.txt Disallow 的尊重程度高,按规则写就行。百度没有等价 GSC 的"覆盖率报告",处理效果只能从百度搜索资源平台的"抓取诊断"和"索引量"间接看。中文站建议同时优化 Google 和百度两套规则。
JavaScript 渲染筛选器的特殊情况
越来越多前端用 React、Vue 做筛选器,URL 不再是传统的 query 参数而是用 HTML5 History API 操作(pushState、replaceState)。这种情况下浏览器地址栏看起来变了(/clothing/color/red),但实际 HTTP 请求依然指向无参数的主分类页,只是前端 JS 在客户端筛选商品列表。
这种 SPA 风格的筛选器对 SEO 是个挑战:
- Googlebot 现在已经能渲染 JavaScript,但渲染过程慢(爬取后排队几小时到几天才会真正渲染)。
- 每个 pushState 后的"虚拟 URL"是否被 Google 当成独立 URL,取决于站点是否同时配了 canonical、是否在 sitemap 里声明、链接是否在 HTML 里直接可见。
- 纯 hash URL(#color=red)依然不会被 Google 索引。
处理 SPA 筛选器的实践经验:
- 有 SEO 价值的筛选维度(颜色、品牌)必须用真实路径 URL(路径式或 query 式),并在服务端预渲染主要内容,不能纯前端筛选。
- 无 SEO 价值的筛选维度(多选组合、排序)可以用纯前端 SPA 模式,不暴露独立 URL。
- 用 prerender.io 或 Rendertron 这种服务给筛选页面做预渲染,让 Googlebot 第一次访问就拿到完整 HTML。
SPA 电商的筛选器 SEO 比传统服务端渲染更复杂。如果你的电商架构师还在用纯 SPA,需要考虑迁移到 Next.js / Nuxt 这种 SSR 框架。
robots.txt 的高级语法和坑
除了简单的 Disallow,robots.txt 还有几个高级语法值得了解:
- Allow 优先于 Disallow:Allow: /clothing/color/red/ 可以解除 Disallow: /clothing/* 的限制。用于精细化控制。
- 通配符 * 和锚定符 $:Disallow: /*.pdf$ 屏蔽以 .pdf 结尾的 URL;Disallow: /*?sort= 屏蔽含 sort 参数的 URL。
- User-agent 分别声明:可以给 Googlebot、Bingbot、百度 Spider 写不同的规则。Crawl-delay 参数对 Google 无效但百度和 Bing 有效。
- Sitemap 声明:robots.txt 文件末尾加 Sitemap: https://example.com/sitemap.xml 告诉爬虫 sitemap 位置。
常见坑:
- robots.txt 必须放在域名根目录,不能放在子目录。
- 区分大小写。Disallow: /Admin/ 不会屏蔽 /admin/。
- Disallow: /* 等价于 Disallow: /(屏蔽整站)。
- 多个 User-agent 段之间不要有空行——空行会被解释为段落分隔。
因本文不是用Markdown格式的编辑器书写的,转换的页面可能不符合AMP标准。