andrea, il tuo codice prevede che il sito sia stato strutturato "fisicamente", il che potrebbe non essere sempre vero (ultimamente mi sono proprio trovato di fronte a un caso di alberatura "logica", le pagine erano tutte nello stesso folder)

comunque la tua soluzione è buona