barre nelle variabili URL


106

Ho impostato la mia applicazione coldfusion per avere URL dinamici sulla pagina, come

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

Tuttavia, i nomi delle mie variabili a volte contengono barre, come

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

Ciò 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 per evitare che ciò accada? Devo usare una funzione che sostituisce le barre nei nomi delle variabili con un altro carattere?


4
Quelle sono normali, o in avanti, barre. Non backslash.
Caleb Hearth

Risposte:


175

Devi sfuggire alle barre come %2F.


Ok, sembra una buona idea, c'è qualche motivo specifico per usare% 2F?
Namtax

1
Questa è la codifica URL standard.
SLaks

44
IIS ancora lo intercetta come un /e interrompe il percorso. :(
Piotr Kula

21
Apache lo interpreta come / e interrompe il percorso a meno che la direttiva AllowEncodedSlashes non sia attivata (per impostazione predefinita è disattivata)
chim

5
Puoi usare encodeURIComponente decodeURIComponentper questo scopo.
Keavon

17

Potresti facilmente sostituire le barre in avanti /con qualcosa come un trattino basso _come quello usato da Wikipedia per gli spazi. La sostituzione di caratteri speciali con trattini bassi, ecc. È una pratica comune.


4
È una pratica comune ma NON è la migliore pratica. L'uso di caratteri di escape è la migliore pratica poiché tutti i browser lo capiscono, ogni server lo capisce e ogni sviluppatore dovrebbe imparare a farlo in questo modo. Anche le sottolineature SONO MALI PER IL SEO! Lo sto solo dicendo come lo facevo anch'io e ho imparato a mie spese che torna indietro e ti punge forte.
Piotr Kula

1
@ppumkin - perché la pensi così? l'uso di caratteri di escape non è davvero una best practice poiché produce URL che non sono facili da usare e potrebbero sembrare molto strani agli utenti non tecnologici. Penso che sia meglio provare a mantenere gli URL il più ragionevoli possibile
vsync

Per quanto riguarda il UNderscores ARE BAD FOR SEOcommento. I trattini bassi vengono interpretati come trattini bassi da Google, i trattini / trattini vengono interpretati come spazi. Perché? Programmatori, molti programmatori usano Google (incluso Google stesso sin dai primi giorni), se trattassero i trattini bassi come spazi che non saresti più in grado di trovare foo_bar(probabilmente una classe di qualche tipo) nei risultati di ricerca. Blah blah ... In conclusione: i trattini bassi non fanno male al SEO se capisci come funziona effettivamente il motore di ricerca per cui stai "ottimizzando".
William Isted

8

È necessario sfuggire a quelli ma non sostituirlo semplicemente %2Fmanualmente. Puoi usare URLEncoderper questo.

Per esempio URLEncoder.encode(url, "UTF-8")

Allora puoi dire

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

9
La funzione URLEncoder non è definita in alcuni browser, ad esempio Chrome. Quindi suggerisco di usare encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.