一句话回答
URL 参数(查询参数)是加在网址末尾、问号之后的键值对,用 & 分隔,比如 ?color=red&utm_source=newsletter。它在不改变路径的情况下,把信息传给页面或统计工具。
公式: https://域名/路径?键1=值1&键2=值2#片段
什么是 URL 参数?
URL 参数(也叫查询参数)是加在网址末尾、用来向页面或统计工具传递额外信息的键值对。它从问号之后开始,每一对写成 键=值,多对之间用 & 分隔。
https://shop.example.com/shoes?color=red&sort=price&utm_source=newsletter#reviews
└─ 协议 ─┘└──── 域名 ────┘└路径┘└────────────── 查询字符串 ──────────────┘└片段┘
这里页面是 /shoes;color=red 和 sort=price 改变页面显示的内容;utm_source=newsletter 告诉统计工具访客从哪来;#reviews(片段)用来跳到页面某个位置,不会发送给服务器。
主动参数和被动参数
- 主动参数(内容参数)会改变页面显示的内容:筛选、排序、分页、搜索词、语言。
- 被动参数(跟踪参数)不改变内容,只是给这次访问打标签,供统计和广告使用:UTM、广告点击 ID、推荐码、会话 ID。
区分它们很重要:主动参数有时值得拥有可被收录的独立网址;被动参数则永远不需要。
常见的 URL 参数
| 参数 | 类型 | 用途 |
|---|---|---|
utm_source、utm_medium、utm_campaign、utm_term、utm_content | 跟踪 | 活动归因(UTM) |
gclid、gbraid、wbraid | 跟踪 | Google 广告点击 ID |
msclkid | 跟踪 | 微软广告点击 ID |
bd_vid | 跟踪 | 百度推广点击标识 |
fbclid | 跟踪 | Facebook 给外链自动加的标识 |
ref、aff | 跟踪 | 推荐码、联盟推广码 |
q、s、search | 主动 | 站内搜索词 |
page、p | 主动 | 分页 |
sort、order | 主动 | 排序 |
color、size、category | 主动 | 筛选(分面导航) |
lang、hl | 主动 | 语言 |
编码规则
网址里只能出现有限的字符(RFC 3986),其他字符都要做百分号编码:空格变成 %20(表单风格的查询字符串里也可以是 +),值里的 & 变成 %26,= 变成 %3D。中文同样要编码,比如「上海」变成 %E4%B8%8A%E6%B5%B7。在 JavaScript 里,安全的读法是:
const params = new URLSearchParams(location.search);
params.get('utm_source'); // "newsletter"
URLSearchParams 会自动解码;用字符串拼接来生成查询字符串,是链接出错的常见原因。
URL 参数对 SEO 的影响
- 重复内容:
/shoes、/shoes?sort=price、/shoes?utm_source=x显示的是同一批商品。搜索引擎得从中选一个,排名信号也被分散了。 - 抓取浪费:分面导航能组合出成千上万个筛选网址,爬虫把抓取预算花在大量近似重复的页面上。
- 处理方法:给参数网址加指向干净网址的
rel="canonical";站内链接只指向干净的或规范的网址;参数顺序保持一致;对于无穷无尽的筛选组合,参照 Google 的分面导航指南处理,不要一刀切地在 robots.txt 里全部屏蔽。Google 已在 2022 年下线 Search Console 的「网址参数」工具,这些问题现在只能在网站本身处理。
URL 参数对统计报表的影响
- 页面被拆成多行:如果报表按完整网址统计页面,同一个页面会出现很多行。
- 来源被覆盖:站内链接带 UTM(比如首页横幅加了
utm_source=homepage),会在访问中途重新开始一次活动归因,把真实来源冲掉。UTM 只用在站外链接上。 - 个人信息:用 GET 提交的表单会把邮箱、姓名放进查询字符串,所有统计工具都会把它记下来。参见 PII。
示例
示例数据:一个按完整网址统计的报表里,同一个商品页一个月出现了这些行。
| 行 | 会话数 |
|---|---|
| /shoes/runner-x | 1,240 |
| /shoes/runner-x?utm_source=newsletter&utm_medium=email | 310 |
| /shoes/runner-x?color=blue | 95 |
| /shoes/runner-x?gclid=EAIaIQ… | 42 |
| /shoes/runner-x?fbclid=IwAR… | 18 |
| /shoes/runner-x?ref=partner12 | 11 |
| 同一页面合计 | 1,716 |
只看头一行,这个页面被少算了 28%(1,716 次会话中有 476 次在其他行里)。按路径汇总就能修正页面报表;只要统计工具先把 UTM 和点击 ID 读进来源字段,活动信息也不会丢。
检查清单
- UTM 只用在站外链接上,统一小写,遵循命名规范。
- 查询字符串里绝不放个人信息,表单用 POST 提交。
- 参数变体用 canonical 指向干净网址。
- 页面按路径统计;活动参数和点击 ID 读进来源字段。
- 告诉统计工具哪个参数是站内搜索。
TapCub 怎样处理 URL 参数
- 页面报表按路径统计:采集端统计页面时会去掉查询字符串和末尾的
/,所以/shoes/runner-x?utm_source=newsletter记为/shoes/runner-x。#片段也会去掉,除非是哈希路由的单页应用在脚本上设置了data-hash="true"。 - 活动参数变成来源:网站统计 › 来源 读取 UTM 的来源、媒介、活动、关键词和内容。带
gclid、msclkid、wbraid、gbraid、yclid或bd_vid的访问默认算作付费搜索。参见跟踪广告点击 ID和点击 ID。 - 站内搜索参数默认是
s,q,search,可以在项目设置里修改。 - 用免费的 UTM 生成器生成格式一致的链接。
资料来源
- Berners-Lee, T. 等,RFC 3986:统一资源标识符(URI)通用语法(2005)。
- WHATWG,URL 标准。
- Google 搜索中心,合并重复网址、管理分面导航网址的抓取。
- Google 搜索中心博客,网址参数工具下线说明(2022)。
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
