直接回答

目标 URL 变量是占位符,例如 {host}、{host.domain}、{host.sub}、{path} 和 {qs}。你在重定向的目标中输入这些占位符。当访客到达时,RedirHub 会将每个变量替换为传入请求中对应的部分,因此一条重定向规则就可以把许多主机名、子域名和路径发送到正确的位置。

普通的重定向总是把访客发送到同一个固定 URL。变量让目标变为动态:目标由每个请求的主机名、路径和查询字符串构建。当你迁移域名并希望保留其路径、使用一条通配符规则重定向多个子域名,或将多个旧域名整合到同一个网站时,这非常有用。

只保留路径或查询字符串?

不需要为此使用变量。编辑重定向时,在“转发选项”下开启“路径转发”或“查询转发”。

当你需要交换机无法实现的功能时,请使用变量,例如插入主机名或子域名,或在目标已经有自己的查询字符串时保留路径。

可用变量#

针对请求 https://shop.example.co.uk/sale/shoes/?color=red 的示例值
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),这样既保留子域名也保留路径(见下方示例)。

如何在重定向中添加变量#

  1. 在 RedirHub 仪表板中打开你的重定向,或创建一个新的。
  2. 在目标 URL 中输入变量,放在需要插入值的位置,例如 https://www.example.com/team/{host.sub} 。
  3. 如果你自己在目标中放置了 {path}、{uri} 或 {qs},请关闭该重定向的路径转发或查询转发(Query forwarding)(见下方)。
  4. 保存后,测试几个真实 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}。

相关帮助

查看全部文章