5

事情是这样的:

假设我有一个这样的基本 URL:

www.mysite.com?my_first_param=1&my_second_param=2

但现在我想在我的 URL 中添加一个新参数:

www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com

想象一下,我正在使用一项服务,他们将新的跟踪参数添加到我的 URL。例如:

first_tracking=value1&second_value=value2

因为我的 BASE url 已经有一个“?” 参数添加了“&”,所以我的最终 URL 如下所示:

www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com&first_tracking=value1&second_value=value2

这是一个带有多个参数的正确 URL,但是当我重定向到 时www.myothersite.com,由于参数以“&”开头,它们会丢失。添加带有“开始”的跟踪参数是否正确?? 像这样:

www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com?first_tracking=value1&second_value=value2

如果不是,那么处理这个问题的好方法是什么?我相信重定向的责任是将跟踪参数传递给重定向 URL。

4

4 回答 4

2

您应该正确地对每个参数名称和值进行 URLencode,所以如果您想要的参数映射是这样的:

my_first_param => 1
my_second_param => 2
my_redirect_site => www.myothersite.com?first_tracking=value1&second_value=value2

那么您应该将其作为查询字符串传递:

?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com%3Ffirst_tracking%3Dvalue1%26second_value%3Dvalue2

您应该使用已经执行此操作的库来构建 URI 来为您处理此编码。

于 2013-01-16T11:02:34.243 回答
0

不,您不能在 URL 中添加第二个问号。

此外,如果您在重定向 URL 中有与号,它们将被视为主 URL 的单独参数,而不被视为连接到重定向 URL。

如果你想做这样的重定向,你需要对整个重定向的 URL 进行 URLEncode。大多数面向 Web 的语言都有标准函数可以做到这一点。

于 2013-01-16T11:00:21.883 回答
0

这取决于您对添加跟踪参数的服务的控制程度。添加参数后可以更改url吗?

如果可以,那么您应该使用 url 构建器将跟踪参数添加到重定向 url,然后对该 url 进行 url 编码,包括跟踪参数。

如果您无法控制并且第三方修改了您的 url,那么您必须在重定向时执行此操作,读取 url 中的参数,获取您的重定向 url 和跟踪参数,将跟踪参数添加到重定向 url 之前重定向。

于 2013-01-16T11:24:03.717 回答
0

编码参数“?” 将被 %3F 替换

于 2013-01-16T11:04:39.970 回答