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

时间:2013-01-16 10:37:07

标签: http url standards

事情就是这样:

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

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。

4 个答案:

答案 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。