ciao, ci sono un paio di metodi per risorverlo.
Il primo è passare l'ID comunque, magari come segmento dell'url, anziché in querystring.
cioè dovrai aggiornare la tua route in modo che preveda anche un parametro {id} tra la parola "alloggio" e il nome.
Aspitalia, ad esempio, usa questo sistema, lo puoi vedere nell'url di un articolo.
http://www.aspitalia.com/focuson/1296/Speciale-Windows-Azure-Web-Site-Cloud-Incontra-Semplicita.aspxQuesta soluzione, però, non è gradita ad alcuni SEO (per lo meno da quelli con cui lavoro io) perché il '5', a loro dire, è solo un artefatto tecnico che non ha posto nella gerarchia dei contenuti.
Credo che in fondo abbiano ragione, anche se sono convinto che l'esperienza di navigazione dell'utente non possa esser danneggiata dalla presenza di un numero.
Poi portano come esempio il CMS Wordpress, un cui l'ID effettivamente non compare, e quindi mi mettono all'angolo.
Questo ci porta alla seconda soluzione che è quella di generare dal backend, in fase di inserimento dell'alloggio, una stringa che lo identifichi univocamente, che andrai a memorizzare in un nuovo campo della tabella dotato di
vincolo UNIQUE.
Potresti addirittura promuoverla a chiave primaria se questo non sconvolge quanto hai già realizzato.
Nel generare questa stringa dovresti innanzitutto fare l'url enconding del nome dell'alloggio; magari togliendo o sostituendo i caratteri speciali; e troncarlo se è troppo lungo.
Fatto questo devi controllare se la stringa ottenuta è già presente nel db, perché se lo è devi disambiguarla aggiungendo un numero in coda oppure il nome della località in cui si trova l'alloggio.
A proposito di località, hai pensato ad aggiungere un ulteriore livello per le provincie o le regioni? Una cosa tipo:
/alloggi/sardegna/nome-alloggio
Se l'utente dovesse visitare /alloggi/sardegna vedrebbe subito tutti gli alloggi di quella regione.
Tornando in tema: lato server, anziché fare una query che coinvolge l'ID dell'alloggio, dovrai cercare sul nuovo campo univoco che hai creato.
ciao
Modificato da BrightSoul il 26 marzo 2013 00.42 -