2010-06-07 10 views
60

ho impostato la mia applicazione ColdFusion di avere URL dinamici sulla pagina, come ad esempioslash in variabili URL

www.musicExplained/index.cfm/artist/:VariableName 

Tuttavia i miei nomi di variabile a volte contiene barre, come

www.musicExplained/index.cfm/artist/GZA/Genius 

Questo sta causando un problema, perché la mia applicazione presume che la barra nel nome della variabile rappresenti una sezione diversa del sito web, gli album degli artisti. Quindi l'URL fallirà.

Mi chiedo se ci sia comunque da impedire che ciò accada? Devo usare una funzione che sostituisca le barre nei nomi delle variabili con un altro carattere?

+3

Quelli sono normali, o in avanti, barre. Non i backslash. –

risposta

99

È necessario sfuggire alle barre come %2F.

+0

Ok, questa sembra una buona idea, c'è qualche ragione specifica per usare% 2F? – namtax

+0

Questa è la codifica URL standard. – SLaks

+1

@namtax, vedere urlencodedformat(): http://www.cfquickdocs.com/cf9/#urlencodedformat – Henry

11

Si potrebbe facilmente sostituire le barre in avanti / con qualcosa come un trattino basso _ come Wikipedia usa per gli spazi. Sostituire caratteri speciali con caratteri di sottolineatura, ecc. È una pratica comune.

+0

Grazie per la risposta, sì ho fatto pensare che sostituire i caratteri speciali sarebbe l'idea migliore – namtax

+3

È una pratica comune ma NON è una buona pratica, l'utilizzo di caratteri di escape è la migliore pratica poiché tutti i browser lo capiscono, ogni server capisce questo e ogni sviluppatore dovrebbe imparare a farlo in questo modo Anche gli UNDERCARE SONO MALE PER SEO! Sto solo dicendo questo come lo facevo anche io e ho imparato il modo difficile in cui ritorna e ti punge duramente – ppumkin

+0

@ pumkin - perché pensi di farlo? best practice in quanto produce URL che non sono user-friendly e potrebbero sembrare molto strani a quelli non-tech sers. Penso che sia meglio cercare di mantenere gli URL il più sensati possibile – vsync

2

È necessario sfuggire a quelli, ma non sostituirlo semplicemente tramite %2F manualmente. È possibile utilizzare URLEncoder per questo.

Eg URLEncoder.encode(url, "UTF-8")

allora si può dire

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8") 
+4

La funzione URLEncoder non è definita in alcuni browser, ad es. Cromo. Quindi suggerisco di usare 'encodeURIComponent', https://www.w3schools.com/jsref/jsref_encodeuricomponent.asp –