se ho capito bene il tuo sistema e' questo (semplificato):

Codice PHP:
require('header.php');
$pagina 'index.php'//ciò che ho chiamato index, può essere home.php, e' solo la pagina di deafult
if(!empty($_GET['admin'])){ //index.php?admin=xxx
    
$pagina 'admin/'$_GET['admin'] .'.php';
} elseif(!empty(
$_GET['utenti'])){ //index.php?utenti=xxx
    
$pagina 'utenti/'$_GET['utenti'] .'.php';
}
include 
$pagina;
require(
'footer.php'
se e' questo il tuo sistema, il problema e' che sempre cercherà di caricare la pagina (home.php-utenti/profilo.php-admin/form.php), e se non trova nessuna pagina non avrai (se non sbaglio) nessun error 404, perché in realtà la pagina esiste, ciò' che manca e' il contenuto richiamato con il include.

per assicurarti che il contenuto (quindi home.php-utenti/profilo.php-form.php) esista mi viene in mente 3 modi:
avere i nomi dei contenuti salvati in un DB (home.php-utenti/profilo.php),
se non usi un DB "puoi" (meglio se non lo fai ) fare un array con cui confrontare i nomi (invece di avere i dati nel DB si "salvano" nell'array),
un'altro modo che mi viene in mente e' controllare con la funzione php file_exists


se il tuo sistema non e' quello descritto precedentemente, fai prima a postare tutto il codice, perché non ho capito cosa stai facendo e come vuoi farlo, e guardando il codice sarebbe più semplice da capire...