Schrägstriche in URL-Variablen

105

Ich habe meine Coldfusion-Anwendung so eingerichtet, dass dynamische URLs auf der Seite angezeigt werden, z

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

Meine Variablennamen enthalten jedoch manchmal Schrägstriche, wie z

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

Dies verursacht ein Problem, da meine Anwendung davon ausgeht, dass der Schrägstrich im Variablennamen einen anderen Abschnitt der Website darstellt, nämlich die Künstleralben. Die URL schlägt also fehl.

Ich frage mich, ob es überhaupt etwas gibt, das dies verhindert? Muss ich eine Funktion verwenden, die Schrägstriche in den Variablennamen durch ein anderes Zeichen ersetzt?

namtax
quelle
4
Das sind normale oder vorwärts gerichtete Schrägstriche. Keine Backslashes.
Caleb Hearth

Antworten:

174

Sie müssen den Schrägstrichen als entkommen %2F.

SLaks
quelle
Ok, das scheint eine gute Idee zu sein. Gibt es einen bestimmten Grund,% 2F zu verwenden?
namtax
1
Dies ist die Standard-URL-Codierung.
SLaks
44
IIS fängt dies immer noch als ab /und bricht die Route. :(
Piotr Kula
21
Apache interpretiert dies als / und unterbricht die Route, es sei denn, die AllowEncodedSlashes-Direktive ist eingeschaltet (standardmäßig ausgeschaltet)
Chim
5
Sie können encodeURIComponentund decodeURIComponentfür diesen Zweck verwenden.
Keavon
17

Sie können die Schrägstriche leicht durch /einen Unterstrich ersetzen, den _Wikipedia für Leerzeichen verwendet. Das Ersetzen von Sonderzeichen durch Unterstriche usw. ist gängige Praxis.

Caleb Herd
quelle
4
Es ist gängige Praxis, aber es ist NICHT die beste Praxis. Die Verwendung von Escapezeichen ist eine bewährte Methode, da jeder Browser dies versteht, jeder Server dies versteht und jeder Entwickler lernen sollte, dies auf diese Weise zu tun. Unterstriche sind auch für SEO schlecht! Ich sage das nur so, wie ich es früher auch getan habe und gelernt habe, wie hart es zurückkommt und dich hart sticht.
Piotr Kula
1
@ppumkin - warum denkst du so? Die Verwendung von Escapezeichen ist keine bewährte Methode, da URLs erstellt werden, die nicht benutzerfreundlich sind und für Nicht-Tech-Benutzer möglicherweise sehr seltsam aussehen. Ich denke, es ist am besten, URLs so sinnvoll wie möglich zu halten
vsync
In Bezug auf den UNderscores ARE BAD FOR SEOKommentar. Unterstriche werden von Google als Unterstriche interpretiert, Bindestriche / Bindestriche werden als Leerzeichen interpretiert. Warum? Codierer, viele Codierer verwenden Google (einschließlich Google selbst seit den Anfängen), wenn sie Unterstriche als Leerzeichen behandeln, die Sie foo_barin den Suchergebnissen nicht mehr finden können (wahrscheinlich eine Klasse). Blah blah ... Fazit: Unterstriche sind nicht schlecht für SEO, wenn Sie verstehen, wie die Suchmaschine, für die Sie "optimieren", tatsächlich funktioniert.
William Isted
8

Sie müssen diesen entkommen, aber nicht einfach %2Fmanuell ersetzen . Sie können URLEncoderdies verwenden.

Z.B URLEncoder.encode(url, "UTF-8")

Dann kannst du sagen

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")
Aniket Thakur
quelle
9
Die Funktion URLEncoder ist in einigen Browsern, z. B. Chrome, nicht definiert. Daher schlage ich vor encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp