事情就是这样:
假设我有一个这样的基本网址:
www.mysite.com?my_first_param=1&my_second_param=2
但现在我想在我的网址中添加一个新参数:
www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com
想象一下,我正在使用一项服务,他们会在我的网址中添加新的跟踪参数。例如:
first_tracking=value1&second_value=value2
由于我的BASE网址已经有了“?”参数添加了“&”,所以我的最终网址如下所示:
www.mysite.com?my_first_param=1&my_second_param=2&my_redirect_site=www.myothersite.com&first_tracking=value1&second_value=value2
这是一个包含多个参数的正确网址,但是当我重定向到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。
答案 0 :(得分:2)
你应该正确地对每个参数名称和值进行URL编码,所以如果你想要的params地图是这样的:
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以便为您处理此编码。
答案 1 :(得分:0)
不,您在网址中不能有第二个问号。
此外,如果您在重定向网址中有&符号,则会将其视为主网址的单独参数,并且不会被视为连接到重定向网址。
如果要进行这样的重定向,则需要URLEncode整个重定向的URL。大多数面向网络的语言都有标准功能来执行此操作。
答案 2 :(得分:0)
对参数进行编码,“?”将被%3F取代
答案 3 :(得分:0)
这取决于您添加跟踪参数的服务的控制量。 添加参数后可以更改网址吗?
如果可以,那么您应该使用网址构建器将跟踪参数添加到重定向网址,然后网址对该网址进行编码,包括跟踪参数。
如果您无法控制并且第三方修改了您的网址,则您必须在重定向时执行此操作,读取网址中的参数,获取重定向网址和跟踪参数,将跟踪参数添加到重定向前重定向url。