Eu configurei meu aplicativo coldfusion para ter urls dinâmicas na página, como
www.musicExplained/index.cfm/artist/:VariableName
No entanto, meus nomes de variáveis às vezes contêm barras, como
www.musicExplained/index.cfm/artist/GZA/Genius
Isso está causando um problema, porque meu aplicativo presume que a barra no nome da variável representa uma seção diferente do site, os álbuns dos artistas. Portanto, o URL falhará.
Eu estou me perguntando se há alguma maneira de evitar que isso aconteça? Preciso usar uma função que substitua as barras nos nomes das variáveis por outro caractere?
Respostas:
Você precisa escapar das barras como
%2F
.fonte
/
e interrompe a rota. :(encodeURIComponent
edecodeURIComponent
para esta finalidade.Você pode facilmente substituir as barras
/
por algo como um sublinhado_
, como a Wikipedia usa para espaços. Substituir caracteres especiais por sublinhados, etc., é uma prática comum.fonte
UNderscores ARE BAD FOR SEO
comentário. Os sublinhados são interpretados como sublinhados pelo Google, os travessões / hífens são interpretados como espaços. Por quê? Codificadores, muitos programadores usam o Google (incluindo o próprio Google desde os primeiros dias), se tratassem os sublinhados como espaços que você não conseguiria mais encontrarfoo_bar
(provavelmente uma classe de algum tipo) nos resultados da pesquisa. Blah blah ... Concluindo: os sublinhados não são ruins para o SEO se você entender como o mecanismo de busca para o qual está "otimizando" realmente funciona.Você precisa escapar disso, mas não apenas substitua
%2F
manualmente. Você pode usarURLEncoder
para isso.Por exemplo
URLEncoder.encode(url, "UTF-8")
Então você pode dizer
fonte
encodeURIComponent
, w3schools.com/jsref/jsref_encodeuricomponent.aspVerifique esta página w3schools sobre "Referência de codificação de URL HTML": https://www.w3schools.com/tags/ref_urlencode.asp
porque / você escaparia com% 2F
fonte