直接回答
目标 URL 变量是占位符,例如 {host}、{host.domain}、{host.sub}、{path} 和 {qs}。你在重定向的目标中输入这些占位符。当访客到达时,RedirHub 会将每个变量替换为传入请求中对应的部分,因此一条重定向规则就可以把许多主机名、子域名和路径发送到正确的位置。
普通的重定向总是把访客发送到同一个固定 URL。变量让目标变为动态:目标由每个请求的主机名、路径和查询字符串构建。当你迁移域名并希望保留其路径、使用一条通配符规则重定向多个子域名,或将多个旧域名整合到同一个网站时,这非常有用。
只保留路径或查询字符串?
不需要为此使用变量。编辑重定向时,在“转发选项”下开启“路径转发”或“查询转发”。
当你需要交换机无法实现的功能时,请使用变量,例如插入主机名或子域名,或在目标已经有自己的查询字符串时保留路径。
可用变量#
| Variable | 它插入的内容 | 示例值 |
|---|---|---|
| {host} | 所请求的完整主机名 | shop.example.co.uk |
| {host.domain} | 已注册的域名(不包含任何子域名) | example.co.uk |
| {host.sub} | 仅子域名部分(当没有子域名时为 @) | shop |
| {path} | 所请求的路径(带前导斜杠) | /sale/shoes |
| {uri} | 所请求的路径(不带前导斜杠) | sale/shoes |
| {qs} | 查询字符串(包含 ? 或 &;如果没有则为空) | ?color=red |
| {random_string} | 一个随机的 6 位值(a–z、0–9),每次请求都会变化 | k3x9a1 |
需要注意的几个细节:
- 精确拼写:变量必须是小写,并用花括号包起来。任何 RedirHub 无法识别的内容(例如 {HOST} )都会原样保留在 URL 中。
- 多段域名后缀:{host.domain} 能正确处理诸如 .co.uk 或 .com.au 之类的后缀。对于 a.b.example.com,{host.domain} 是 example.com,而 {host.sub} 是 a.b。
- 裸域名:当请求的是根域名(example.com)时,{host.sub} 为 @。
- 尾部斜杠:{path} 和 {uri} 会移除尾部斜杠,因此 /blog/ 会变成 /blog。进入主页时,{path} 为 /,而 {uri} 为空。
- 查询字符串连接符:如果目标还没有查询字符串,{qs} 会添加 ?;如果已经有了,则添加 &。如果请求本身没有查询字符串,则不添加任何内容。
转发开关或变量?#
| 你想要 | 最简单的方法 | Example |
|---|---|---|
| 保留路径 | 路径转发 开关 | a.com/one/two → b.com/one/two |
| 保留查询字符串 | 查询转发 开关 | a.com/?ref=chatgpt → b.com/?ref=chatgpt |
| 两者都保留 | 同时打开两个开关 | a.com/one?ref=x → b.com/one?ref=x |
| 当目标地址有自己的查询字符串时,保留路径 | {path} | b.com{path}?lang=en |
| 使用主机名、域名或子域名 | {host},{host.domain},{host.sub} | b.com/team/{host.sub} |
| 为每次访问添加唯一值 | {random_string} | b.com/offer?ref={random_string} |
变量和开关可以组合使用。例如,目标包含 {host.sub},并启用路径转发(Path forwarding),这样既保留子域名也保留路径(见下方示例)。
如何在重定向中添加变量#
- 在 RedirHub 仪表板中打开你的重定向,或创建一个新的。
- 在目标 URL 中输入变量,放在需要插入值的位置,例如 https://www.example.com/team/{host.sub} 。
- 如果你自己在目标中放置了 {path}、{uri} 或 {qs},请关闭该重定向的路径转发或查询转发(Query forwarding)(见下方)。
- 保存后,测试几个真实 URL,包括首页。如果看起来不对,请查看“故障排查新建重定向”。
示例#
当目标有自己的查询字符串时,保留路径#
text目标: https://www.new-domain.com{path}?lang=en
old-domain.com/blog/hello → https://www.new-domain.com/blog/hello?lang=en
old-domain.com/ → https://www.new-domain.com/?lang=en路径转发(Path forwarding)总是把路径追加到目标的最末尾;在这里会得到 https://www.new-domain.com/?lang=en/blog/hello。使用 {path} 你可以决定路径放到哪里。如果你的目标没有查询字符串,只需改为启用路径转发即可。
将每个子域发送到各自的页面#
text来源: *.example.com
目标: https://www.example.com/team/{host.sub}
alice.example.com → https://www.example.com/team/alice
bob.example.com → https://www.example.com/team/bob一个通配符源可覆盖所有子域,变量会决定每个子域要去哪里。了解更多关于通配符子域的信息,包括套餐可用性和 SSL。
保留子域,更换域名#
text来源: *.old-brand.com
目标: https://{host.sub}.new-brand.com + 开启路径转发
shop.old-brand.com/cart → https://shop.new-brand.com/cart
docs.old-brand.com/api → https://docs.new-brand.com/api注意
在裸域名上,{host.sub} 为 @,因此 old-brand.com/cart 会变为 https://@.new-brand.com/cart。
为根域(old-brand.com)创建单独的重定向,目标为 https://new-brand.com,并开启路径转发。
整合多个域名,并查看访客来自哪里#
text目标: https://www.new-brand.com/?from={host.domain}
old-brand.co.uk/ → https://www.new-brand.com/?from=old-brand.co.uk
shop.old-brand.de/sale → https://www.new-brand.com/?from=old-brand.de每个旧域名都可以使用相同的目标地址,而你的分析仍然可以告诉你每位访客输入的是哪个域名。
保留查询字符串#
text目标地址:https://www.new-domain.com/landing?src=old + 开启查询转发
old-domain.com/?utm_source=mail → https://www.new-domain.com/landing?src=old&utm_source=mail
old-domain.com/ → https://www.new-domain.com/landing?src=old不需要为此设置变量。查询转发开关会自动添加访客的查询字符串,并为你选择使用 ? 还是 &,因此活动追踪仍然保持完整。另请参阅:如何在重定向过程中保留 UTM 参数。
添加一个随机值#
text目标地址:https://www.example.com/offer?ref={random_string}
example.com/promo → https://www.example.com/offer?ref=4k9zq1 (每次请求都不同)变量和转发开关#
路径转发和查询转发开关在幕后使用相同的变量。路径转发会在目标地址末尾添加 /{uri} ,查询转发会添加 {qs} 。如果你已经在目标地址中自行放置了 {path}、{uri} 或 {qs},请保持对应的开关关闭。否则该值会被添加两次:
text目标地址:https://www.new-domain.com{path} + 开启路径转发
old-domain.com/about → https://www.new-domain.com/about/about只有变量会改变访客被发送到哪里。由 RedirHub 的匹配规则决定处理请求的是哪个重定向。
故障排除#
- 该变量在 URL 中被字面量显示:请检查拼写、小写字母以及花括号。
- 出现了双斜杠(new-domain.com//about):{path} 已经以斜杠开头。请写 https://new-domain.com{path} 或 https://new-domain.com/{uri}。
- 路径或查询字符串被重复了:请为该重定向关闭“路径转发”或“查询转发”。
- 主机名中出现了 @:请求的是裸域名。请为根域名添加单独的重定向。
常见问题
不需要。在编辑重定向时,在转发选项下启用路径转发或查询转发。仅在需要开关无法完成的操作时使用变量,例如插入主机名或子域名,或者在目标已经有自己的查询字符串时保留路径。
是的。变量必须用小写字母在大括号内书写,完全按照列出的方式,例如 {host.domain}。RedirHub 不识别的变量,例如 {HOST} 或 {domain},在目标中保持不变。
是的。您可以根据需要组合多个变量,每个变量可以出现多次。例如,https://{host.sub}.new-brand.com{path}{qs} 保留子域名、路径和查询字符串。
两者都插入请求的路径而不带尾部斜杠。{path} 以斜杠开头 (/blog/hello),因此将其直接放在域名后面。{uri} 没有前导斜杠 (blog/hello),因此您需要自己添加斜杠: https://new-domain.com/{uri}。
{host.domain} 理解多部分域名结尾。对 shop.example.co.uk 的请求返回 example.co.uk,而 {host.sub} 返回 shop。
是的。变量是为每个由通配符源(例如 *.example.com)覆盖的子域名提供其自身目标的最简单方法,例如 https://www.example.com/team/{host.sub}。
