Nei Framework non puoi chiamare i link come vuoi, devi rispettarne la struttura.
Zend non l'ho mai usato, ma ad intuito index.php è il controller principale e se non passi da lui non funziona nessun link.

Usando solo "localhost" passi da index.php perché è una delle pagine predefinite nella configurazione di Apache e viene aggiunta automaticamente alla chiamata, anche se nell'indirizzo non la vedi.

Usando "localhost/index.php" stai esplicitamente chiamando il controller principale e quindi ok

Usando "localhost/index2.php" stai chiamando una pagina senza passare dal controller principale e quindi Zend non gestisce la richiesta.