Саморедирект с добавлением параметров в PHP

Пусть на странице index.php передается GET параметр с именем arg. Выведем его содержимое на экран:

index.php<?php
  echo $_GET['arg'];
?>

Пусть наша страница без GET параметра не может работать корректно. В нашем случае это действительно так, так как, если параметр не передан, то обращение к $_GET['arg'] приведет к ошибке.

Может возникнуть вопрос, почему вообще человек попадет на нашу страницу без параметра? Ведь мы можем везде на нашем сайте ставить ссылки с этим параметром. Однако, это не гарантия: юзер нашего сайта может, к примеру, копировать откуда-нибудь ссылку и потерять при этом параметр. Либо просто случайно его удалить, редактируя адресную строку.

В общем, в любом случае наш код должен предполагать такую ситуацию и что-то с ней сделать. Что же можно сделать?

Можно проверять наш GET параметр на существование и выводить его, только если он существует:

index.php<?php
  if (isset($_GET['arg'])) {
    echo $_GET['arg'];
  } else {
    // как-то реагируем, например, сообщением
  }
?>

Можно поступить хитрее:

index.php<?php
  if (!isset($_GET['arg'])) {
    $_GET['arg'] = 'default'; // значение по умолчанию
  }
  
  echo $_GET['arg']; // гарантировано что-то выведет без ошибки
?>

А можно сделать так, чтобы при заходе на страницу без параметра происходил редирект на эту же страницу с параметром:

index.php<?php
  if (!isset($_GET['arg'])) {
    header('Location: ?arg=default');
  }
  
  echo $_GET['arg']; // параметр гарантированно есть
?>
Задание 1

Расскажите, в чем отличие второго варианта от третьего.

Задание 2

Пусть на странице page.php можно передать число с помощью GET параметра с именем num. Сделайте так, чтобы при заходе без данного параметра, автоматически выполнялся редирект на эту же страницу, но с параметром num в значении 1.