barras en las variables de URL

106

He configurado mi aplicación coldfusion para tener URL dinámicas en la página, como

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

Sin embargo, los nombres de mis variables a veces contienen barras, como

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

Esto está causando un problema, porque mi aplicación supone que la barra inclinada en el nombre de la variable representa una sección diferente del sitio web, los álbumes de 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 carácter?

namtax
fuente
4
Esas son barras normales o directas. No barras invertidas.
Caleb Hearth

Respuestas:

175

Necesitas escapar de las barras como %2F.

SLaks
fuente
Ok, esto parece una buena idea, ¿hay alguna razón específica para usar% 2F?
Namtax
1
Esta es la codificación de URL estándar.
SLaks
44
IIS todavía intercepta esto como un /y rompe la ruta. :(
Piotr Kula
21
Apache interpreta esto como un / y rompe la ruta a menos que la directiva AllowEncodedSlashes esté activada (por defecto está desactivada)
chim
5
Puede utilizar encodeURIComponenty decodeURIComponentpara este propósito.
Keavon
17

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

Caleb Hearth
fuente
4
Es una práctica común pero NO es la mejor práctica. El uso de caracteres de escape es la mejor práctica, ya que todos los navegadores comprenden esto, todos los servidores comprenden esto y todos los desarrolladores deben aprender a hacerlo de esta manera. ¡Los puntajes bajos SON MALOS PARA SEO también! Solo digo esto, ya que solía hacer esto también y aprendí de la manera difícil que vuelve y te pica mucho.
Piotr Kula
1
@ppumkin - ¿por qué crees eso? el uso de caracteres de escape no es realmente una buena práctica, ya que produce URL que no son fáciles de usar y pueden parecer muy extrañas para los usuarios sin conocimientos técnicos. Creo que es mejor intentar mantener las URL lo más sensatas posible
vsync
En lo que respecta al UNderscores ARE BAD FOR SEOcomentario. Los guiones bajos se interpretan como guiones bajos por Google, los guiones / guiones se interpretan como espacios. ¿Por qué? Codificadores, muchos codificadores usan Google (incluido el propio Google desde los primeros días), si trataran los guiones bajos como espacios, ya no podría encontrar foo_bar(probablemente una clase de algún tipo) dentro de los resultados de búsqueda. Bla, bla ... En conclusión: los guiones bajos no son malos para el SEO si comprendes cómo funciona realmente el motor de búsqueda para el que estás "optimizando".
William Isted
8

Debe escapar de ellos, pero no solo los reemplace %2Fmanualmente. Puede utilizar URLEncoderpara esto.

P.ej URLEncoder.encode(url, "UTF-8")

Entonces puedes decir

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")
Aniket Thakur
fuente
9
La función URLEncoder no está definida en algunos navegadores, por ejemplo, Chrome. Entonces sugiero usar encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp