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?


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.


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.


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")

9
Die Funktion URLEncoder ist in einigen Browsern, z. B. Chrome, nicht definiert. Daher schlage ich vor encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.