电商筛选器URL要不要写Disallow:3类判别法

电商筛选器一不小心就把Googlebot爬行预算吃光,乱写robots.txt Disallow又会把高搜索价值的色彩品牌价格筛选页一起屏蔽。保哥用2个真实案例(Magento 2跨境站爬行预算从92%浪费修到71%命中商品页,国内ECShop站因过度Disallow长尾流量损失70%)演示3类判别法和5档阶梯式处理策略,并附WooCommerce、Shopify、百度SEO的具体写法。

张文保 更新 31 分钟阅读 4,654 阅读



电商分类页几乎都带筛选器:颜色、尺码、价格、品牌、材质。用户每点一个筛选条件就生成一个新的 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=LWooCommerce、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:

  1. 多维度组合产生重复内容:颜色、尺码、库存状态三个参数选不同组合,但展示的商品集合几乎完全相同——比如"红色 S 码"和"红色 S 码且有库存"通常返回同样的几款衣服。这种 URL 没有独立 SEO 价值。
  2. 排序参数:sort=price_asc、sort=newest 这种排序变体,内容相同只是顺序不同。Google 完全不需要索引多个排序版本。
  3. 展示模式参数:view=grid、view=list、per_page=24 这种"显示样式"参数。
  4. session 类参数:sid、PHPSESSID、tracking_id 这类应用层的参数。这种通常不只是 SEO 问题,还可能泄漏用户会话信息。
  5. 多选筛选的全部组合:多选筛选器(如"颜色:红色 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:

  1. 单个有搜索价值的筛选维度:用户搜"红色连衣裙"是高搜索量查询,对应的 /clothing/dresses?color=red 这个 URL 应该被索引。
  2. 品牌筛选:/clothing?brand=nike 通常有独立搜索价值(用户搜"耐克衣服")。
  3. 价格区间筛选:/clothing?price=under-100 对应"100 元以下衣服"这类查询。
  4. 类目细分:/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% 落在商品详情页和主分类页。

诊断步骤:

  1. 用 Screaming Frog 抓取站点 5 万个 URL 样本。统计参数分布:72% 是排序参数变体、18% 是多维度筛选组合、6% 是分页变体、4% 是单维度筛选。
  2. 分析 GSC 的"已发现未编入索引"URL 类型分布。排序变体占 68%、多维度筛选占 21%、其他 11%。
  3. 看 Server Log 一周。Googlebot 实际访问的 URL 里,68% 是排序参数变体——和 GSC 数据一致。

处理策略:

  1. robots.txt 增加 Disallow:所有排序参数、展示模式参数、库存筛选参数。
  2. 服务端代码改造:检测 URL 是否含两个以上筛选参数(多维度组合),是的话输出 noindex+follow。
  3. 单维度筛选 URL 静态化重写:/clothing?color=red 重写成 /clothing/color/red/,进 sitemap.xml。
  4. 分页变体(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 自由度"从高到低排列:

  1. 什么都不做:让 Google 自己决定。适用于小站点(少于 1000 个 SKU)、筛选参数少(2-3 个)、爬行预算充足的场景。
  2. canonical 标签:在筛选 URL 的 head 里输出 canonical 指向无参数主页面。Google 会优先索引主页面,筛选页面作为附属。
  3. noindex+follow:爬取但不索引。前面详细讲过。
  4. nofollow 链接:在主分类页面的筛选器链接上加 rel="nofollow",让 Google 不沿着筛选器链接爬下去。这能降低爬行压力但不彻底。
  5. 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 筛选器的实践经验:

  1. 有 SEO 价值的筛选维度(颜色、品牌)必须用真实路径 URL(路径式或 query 式),并在服务端预渲染主要内容,不能纯前端筛选。
  2. 无 SEO 价值的筛选维度(多选组合、排序)可以用纯前端 SPA 模式,不暴露独立 URL。
  3. 用 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 段之间不要有空行——空行会被解释为段落分隔。

分享到
标签
版权声明

本文标题:《电商筛选器URL要不要写Disallow:3类判别法》

本文链接:https://zhangwenbao.com/filter-generated-pages-robots-txt-disallow.html

版权声明:本文原创,转载请注明出处和链接。许可协议: CC BY-NC-SA 4.0

继续阅读
发表评论
分享到微信 或在下方手动填写
支持 Ctrl + Enter 提交