ukośniki w zmiennych URL

106

Skonfigurowałem moją aplikację coldfusion tak, aby miała dynamiczne adresy URL na stronie, takie jak

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

Jednak moje nazwy zmiennych będą czasami zawierać ukośniki, takie jak

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

Powoduje to problem, ponieważ moja aplikacja zakłada, że ​​ukośnik w nazwie zmiennej reprezentuje inną sekcję witryny, albumy artystów. Więc adres URL nie powiedzie się.

Zastanawiam się, czy w ogóle jest, aby temu zapobiec? Czy muszę używać funkcji zastępującej ukośniki w nazwach zmiennych innym znakiem?

namtax
źródło
4
To są normalne ukośniki. Nie odwrotne ukośniki.
Caleb Hearth

Odpowiedzi:

175

Musisz uciec przed ukośnikami jako %2F.

SLaks
źródło
Ok, to wydaje się być dobrym pomysłem, czy jest jakiś konkretny powód, aby używać% 2F?
namtax
1
To jest standardowe kodowanie adresu URL.
SLaks
44
Usługi IIS nadal przechwytują to jako /i przerywają trasę. :(
Piotr Kula
21
Apache interpretuje to jako a / i przerywa trasę, chyba że dyrektywa AllowEncodedSlashes jest włączona (domyślnie jest wyłączona)
chim
5
Można użyć encodeURIComponenti decodeURIComponentdo tego celu.
Keavon
17

Możesz łatwo zamienić ukośniki na /coś w rodzaju podkreślenia, _takiego jak Wikipedia używa spacji. Zastępowanie znaków specjalnych podkreśleniami itp. Jest powszechną praktyką.

Caleb Hearth
źródło
4
Jest to powszechna praktyka, ale NIE jest to najlepsza praktyka. Używanie znaków ucieczki jest najlepszą praktyką, ponieważ każda przeglądarka to rozumie, każdy serwer to rozumie i każdy programista powinien nauczyć się robić to w ten sposób. Wyniki nie są również złe dla SEO! Mówię to tak, jak kiedyś to robiłem i nauczyłem się na własnej skórze, że wraca i mocno cię kłuje.
Piotr Kula
1
@ppumkin - dlaczego tak myślisz? używanie znaków ucieczki nie jest tak naprawdę najlepszą praktyką, ponieważ tworzy adresy URL, które nie są przyjazne dla użytkownika i mogą wyglądać bardzo dziwnie dla użytkowników bez wiedzy technicznej. Myślę, że najlepiej jest starać się, aby adresy URL były jak najbardziej rozsądne
vsync
W odniesieniu do UNderscores ARE BAD FOR SEOkomentarza. Podkreślenia są interpretowane przez Google jako podkreślenia, myślniki / łączniki są interpretowane jako spacje. Czemu? Koderów, wielu programistów używa Google (w tym samych Google od samego początku), jeśli traktowaliby podkreślenia jako spacje, których nie można już znaleźć foo_bar(prawdopodobnie jakiejś klasy) w wynikach wyszukiwania. Bla bla… Podsumowując: podkreślenia nie są złe dla SEO, jeśli rozumiesz, jak faktycznie działa wyszukiwarka, do której „optymalizujesz”.
William Isted
8

Musisz z nich uciec, ale nie zastępuj go %2Fręcznie. Możesz użyć URLEncoderdo tego.

Na przykład URLEncoder.encode(url, "UTF-8")

Wtedy możesz powiedzieć

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")
Aniket Thakur
źródło
9
Funkcja URLEncoder nie jest zdefiniowana w niektórych przeglądarkach, np. Chrome. Więc proponuję użyć encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp