barres obliques dans les variables d'URL

106

J'ai configuré mon application Coldfusion pour avoir des URL dynamiques sur la page, telles que

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

Cependant, mes noms de variables contiendront parfois des barres obliques, telles que

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

Cela pose un problème, car mon application suppose que la barre oblique dans le nom de la variable représente une section différente du site Web, les albums des artistes. Donc, l'URL échouera.

Je me demande s'il y a de toute façon pour empêcher que cela se produise? Dois-je utiliser une fonction qui remplace les barres obliques dans les noms de variables par un autre caractère?

namtax
la source
4
Ce sont des barres obliques normales ou en avant. Pas de contre-obliques.
Caleb Hearth

Réponses:

175

Vous devez échapper aux barres obliques comme %2F.

SLaks
la source
Ok, cela semble être une bonne idée, y a-t-il une raison spécifique d'utiliser% 2F?
namtax
1
Il s'agit du codage d'URL standard.
SLaks
44
IIS intercepte toujours ceci comme un /et rompt l'itinéraire. :(
Piotr Kula
21
Apache interprète cela comme un / et interrompt la route à moins que la directive AllowEncodedSlashes ne soit activée (par défaut, elle est désactivée)
chim
5
Vous pouvez utiliser encodeURIComponentet decodeURIComponentà cette fin.
Keavon
17

Vous pouvez facilement remplacer les barres obliques /par quelque chose comme un trait de soulignement _tel que Wikipédia utilise pour les espaces. Le remplacement des caractères spéciaux par des traits de soulignement, etc., est une pratique courante.

Caleb Hearth
la source
4
C'est une pratique courante, mais ce n'est PAS la meilleure pratique. L'utilisation de caractères d'échappement est la meilleure pratique car tous les navigateurs le comprennent, chaque serveur le comprend et chaque développeur doit apprendre à le faire de cette façon. UNderscores SONT MAUVAIS POUR LE SEO aussi! Je dis juste cela comme je le faisais aussi et j'ai appris à la dure que cela revient et vous pique fort.
Piotr Kula
1
@ppumkin - pourquoi pensez-vous cela? l'utilisation de caractères échappés n'est pas vraiment une bonne pratique car elle produit des URL qui ne sont pas conviviales et peuvent sembler très étranges aux utilisateurs non techniques. Je pense qu'il est préférable d'essayer de garder les URL aussi sensibles que possible
vsync
En ce qui concerne le UNderscores ARE BAD FOR SEOcommentaire. Les traits de soulignement sont interprétés comme des traits de soulignement par Google, les tirets / traits d'union sont interprétés comme des espaces. Pourquoi? Codeurs, beaucoup de codeurs utilisent Google (y compris Google eux-mêmes depuis les premiers jours), s'ils traitaient les traits de soulignement comme des espaces que vous ne pourriez plus trouver foo_bar(probablement une classe quelconque) dans les résultats de recherche. Bla bla ... En conclusion: les soulignements ne sont pas mauvais pour le référencement si vous comprenez comment fonctionne réellement le moteur de recherche pour lequel vous «optimisez».
William Isted
8

Vous devez les échapper, mais ne vous contentez pas de les remplacer %2Fmanuellement. Vous pouvez utiliser URLEncoderpour cela.

Par exemple URLEncoder.encode(url, "UTF-8")

Alors tu peux dire

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")
Aniket Thakur
la source
9
La fonction URLEncoder n'est pas définie dans certains navigateurs, par exemple Chrome. Je suggère donc d'utiliser encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp