Вы должны сделать тест на $_GET['id']
напрямую:
if(!isset($_GET['id']) { ... }
Даже если $_GET['id']
не установлено, так как вы пытались присвоить его $id
, $id
начинает существовать, поэтому тест возвращает true и, таким образом, у вас нет ошибки 404.