2013-01-16 10 views
5

Oto jedno:Masz dwa? w adresie URL - czy jest prawidłowy?

Powiedzmy mam bazowy URL tak:

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

Ale teraz chcę dodać nowy parametr do mojego URL:

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

Wyobraźmy sobie, że Korzystam z usługi, w której dodają nowe parametry śledzenia do mojego adresu URL. Na przykład:

first_tracking=value1&second_value=value2 

Ponieważ mój adres URL BASE ma już znak "?" parametry są dodawane z „&”, więc moja ostateczna URL będzie wyglądać następująco:

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

Jest to poprawne URL z wieloma parametrami, ale kiedy zrobić przekierowanie do www.myothersite.com, ponieważ parametry rozpocząć z "&", gubią się. Czy byłoby to poprawne, aby dodać parametry śledzenia z początkowym "?" ? W ten sposób:

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

Jeśli nie, jakie byłoby dobre podejście do radzenia sobie z tym? Uważam, że odpowiedzialność za przekierowanie przechodzi przez parametry śledzenia do adresu URL przekierowania.

+0

Nie sądzę, że przejdzie ona przez QueryParams. – Srinivas

+0

Zgadzam się, przekierowanie powinno przejść przez parametry śledzenia. –

Odpowiedz

1

Należy urlencode każdą nazwę param i wartości poprawnie, więc jeśli mapa params chcesz to:

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

następnie należy przekazać to jako ciąg kwerendy:

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

You powinien używać biblioteki, która już to buduje identyfikatory URI do obsługi tego kodowania dla ciebie.

0

Nie, nie można mieć drugiego znaku zapytania w adresie URL.

Ponadto, jeśli masz ampersandy w przekierowaniu, będą one traktowane jako oddzielne parametry głównego adresu URL i nie będą widziane jako połączone z przekierowaniem.

Jeśli chcesz wykonać przekierowanie w ten sposób, musisz URLEncode cały przekierowany adres URL. W większości języków internetowych dostępne są standardowe funkcje.

0

Zakoduj parametr "?" zostanie zastąpione przez% 3F

0

To zależy od ilości kontroli nad usługą, dodając parametry śledzenia. Czy możesz zmienić adres URL po dodaniu parametrów?

Jeśli możesz, to powinieneś użyć narzędzia do tworzenia adresów URL, aby dodać parametry śledzenia do przekierowanego adresu URL, a następnie zakodować go url, łącznie z parametrami śledzenia.

Jeśli nie masz kontroli, a osoba trzecia modyfikuje Twój adres URL, musisz to zrobić po przekierowaniu, odczytaniu parametrów w adresie URL, przekierowaniu adresu URL i parametrach śledzenia, dodaniu parametrów śledzenia do przekierowanie url przed przekierowaniem.