use URL with query as URL destination
Sort of, but you'll need to URL encode the second ? otherwise the URL will be invalid.

The best thing to do is use l() or url() which will do this for you:

$query_string = array('destination' =&gt; 'xxx/yyy?token=zzz');
$url = url('&lt;front&gt;', array('query' =&gt; $query_string));


That will produce the string:

/?destination=xxx/yyy%3Ftoken%3Dzzz


Which is the correctly encoded version of the URL in your question.

Drupal will also respect this method when auto-redirecting based on a form submission etc. So the page you get directed to will actually look like this:

/xxx/yyy?token=zzz