strano che non ti funzioni, non è che mandi prima dell'header al browser qualcosa? altrimenti è perfettamente normale

cmq pesandoci è concettualmente errato, perché cosi si mangia il resto della query string

qualcosa del genere, togliendo la pagina, è meglio

codice:
if (isset($_GET['pag']) === true && $_GET['pag'] == 1)
{
  $queryStringVariables = array();
  parse_str($_SERVER['QUERY_STRING'], $queryStringVariables);
  unset($queryStringVariables['pag']);
  header('Location: ?' . http_build_query($queryStringVariables));
}