2010-06-07 9 views
60

he levantado mi aplicación ColdFusion tener URLs dinámicas en la página, comobarras en las variables de URL

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

Sin embargo mis nombres de variables a veces contener barras, como

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

Este está causando un problema, porque mi aplicación supone que la barra en el nombre de la variable representa una sección diferente del sitio web, los álbumes de los artistas. Entonces la URL fallará

Me pregunto si hay alguna forma de evitar que esto suceda? ¿Necesito usar una función que reemplace las barras en los nombres de las variables con otro personaje?

+3

Esos son normales, o hacia adelante, barras inclinadas. No barras invertidas. –

Respuesta

99

Necesita escapar de las barras como %2F.

+0

Ok, parece una buena idea, ¿hay alguna razón específica para usar% 2F? – namtax

+0

Esta es la codificación URL estándar. – SLaks

+1

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

11

Puede reemplazar fácilmente las barras diagonales / con algo como un guión bajo _, como la Wikipedia usa para espacios. Reemplazar caracteres especiales con guiones bajos, etc., es una práctica común.

+0

Gracias por su respuesta, sí lo hice Creo que reemplazar los personajes especiales sería la mejor idea. – namtax

+3

Es una práctica común pero NO es una buena práctica. Usar caracteres escapados es una buena práctica ya que cada navegador entiende esto, cada servidor entiende esto y cada desarrollador debe aprender a hacerlo de esta manera. ¡Los guiones bajos SON MALOS PARA SEO también! Sólo digo esto como solía hacer esto también y aprendí de la manera más dura que regresa y te pica. – ppumkin

+0

@ppumkin - ¿por qué crees que eso? Usar personajes escapados no es realmente una mejor práctica ya que produce URLS que no son amigables para el usuario y pueden parecer muy extraños para personas que no sers. Creo que es mejor intentar mantener las URL lo más sensatas posible – vsync

2

Debe escaparse pero no lo reemplace por %2F manualmente. Puede usar URLEncoder para esto.

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

entonces se puede decir

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

La función URLEncoder no está definida en algunos navegadores, p. Cromo. Así que sugiero usar 'encodeURIComponent', https://www.w3schools.com/jsref/jsref_encodeuricomponent.asp –

Cuestiones relacionadas