Guarda, ad occhio mi sembra ci sia un problema su htaccess:
codice:
RewriteEngine On
RewriteBase /
RewriteRule ^guarda-guide/([a-z0-9\-]+)/guida-([0-9]+).html$ citta.php?id=$2&titolo=$2 [L]
poi se inserisci delle cartelle (../([a-z0-9\-]+)/guida-([0-9]+)..) il browser entrerà dentro quelle cartelle e, non trovandole: 404.
Devi trovare un codice che ti permette, nonostante le cartelle, di farle vedere come variabili e non come cartelle.
Non è così semplice settare htaccess. Ci ho messo una vita per un problema analogo al tuo, ovvero la lingua settata come cartella prima del file (es. miosito.it/en/index.php) perché me lo leggeva come cartella e non come variabile.
Me la sono cavata così:
codice:
RewriteRule ^([a-z]{2}(-[A-Z]{2})?)/(.*) $3?lang=$1&%{QUERY_STRING} [L,QSA]
Dove la prima cartella è sempre la lingua, indifferentemente dal nome della pagina. Vedi se magari puoi personalizzartela ma per quanto mi riguarda le mie conoscenze terminano qui.
Ti servirebbe un codice che appunto ti leggesse le cartelle come variabili anche se il file si trova nella root. Sarei curioso anch'io per il futuro, per evitare di impazzire come mi è già successo