As long as it’s a valid URL is should be working, I’ve used dynamic values in redirects often. Are you sure that the field is returning a valid URL? I think you said it was, but I just want to check. Before the redirect have you tried.
echo $url,'?',$_SERVER['QUERY_STRING']; exit;
because the code really does look correct so the only problem would have to be the url being used.