有两个?在URL中 - 它有效吗?

Nob*_*ita 5 url standards http

这是事情:

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

www.mysite.com?my_first_param=1&my_second_param=2
Run Code Online (Sandbox Code Playgroud)

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

www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com
Run Code Online (Sandbox Code Playgroud)

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

first_tracking=value1&second_value=value2
Run Code Online (Sandbox Code Playgroud)

由于我的BASE网址已经有了"?" 参数添加"&",所以我的最终URL看起来像这样:

www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com&first_tracking=value1&second_value=value2
Run Code Online (Sandbox Code Playgroud)

这是一个包含多个参数的正确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
Run Code Online (Sandbox Code Playgroud)

如果没有,那么处理这个问题的好方法是什么?我认为重定向的责任是将跟踪参数传递给重定向URL.

Yul*_*liy 2

您应该正确对每个参数名称和值进行 URL 编码,因此如果您想要的参数映射是这样的:

my_first_param => 1
my_second_param => 2
my_redirect_site => www.myothersite.com?first_tracking=value1&second_value=value2
Run Code Online (Sandbox Code Playgroud)

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

?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com%3Ffirst_tracking%3Dvalue1%26second_value%3Dvalue2
Run Code Online (Sandbox Code Playgroud)

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