Looks like it should work, other than the fact that I think you wanted the second variable assignment to be for $o (instead of $t again).
However, I would suggest filtering/validating those input values in order to avoid undesired effects from invalid $GET values. At the very least they probably should be [man]urlencode/man'ed, or if they are integers they could be cast to such.
// let's assume the first is a string and the second an integer:
$site = sprintf("http://abc.com?sub=t-%s&o=%d", urlencode($_GET['t']), (int)$_GET['o']);
header("Location: $site");