URL 변수의 슬래시


106

페이지에 다음과 같은 동적 URL을 갖도록 Coldfusion 애플리케이션을 설정했습니다.

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

그러나 내 변수 이름에는 때때로 다음과 같은 슬래시가 포함됩니다.

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

내 응용 프로그램에서 변수 이름의 슬래시가 웹 사이트의 다른 섹션 인 아티스트 앨범을 나타내는 것으로 가정하기 때문에 문제가 발생합니다. 따라서 URL이 실패합니다.

이런 일이 일어나지 않도록 막을 방법이 있는지 궁금합니다. 변수 이름의 슬래시를 다른 문자로 바꾸는 함수를 사용해야합니까?


4
이는 일반 또는 슬래시입니다. 백 슬래시가 아닙니다.
Caleb Hearth

답변:


175

슬래시를 %2F.


좋습니다, 이것은 좋은 생각 인 것 같습니다. % 2F를 사용하는 특별한 이유가 있습니까?
namtax 2010 년

1
이것은 표준 URL 인코딩입니다.
SLaks 2010-06-07

44
IIS는 여전히 이것을 a로 가로 채고 /경로를 중단합니다. :(
Piotr Kula 2014 년

21
Apache는 이것을 /로 해석하고 AllowEncodedSlashes 지시문이 켜져 있지 않으면 경로를 중단합니다 (기본적으로 꺼져 있음)
chim

5
이 목적으로 encodeURIComponent및 사용할 수 있습니다 decodeURIComponent.
Keavon

17

슬래시 를 Wikipedia에서 공백으로 사용 /하는 것과 같은 밑줄 _과 같은 것으로 쉽게 바꿀 수 있습니다 . 특수 문자를 밑줄 등으로 바꾸는 것이 일반적입니다.


4
이것은 일반적인 관행이지만 최선의 관행은 아닙니다. 이스케이프 된 문자를 사용하는 것은 모든 브라우저가 이것을 이해하고 모든 서버가 이것을 이해하고 모든 개발자가이 방법을 배워야하기 때문에 모범 사례입니다. UNderscores는 SEO에도 좋지 않습니다! 나는이 일도 예전처럼 말하고 그것이 돌아와서 당신을 힘들게 찌르는 방법을 배웠습니다.
Piotr Kula 2014 년

1
@ppumkin-왜 그렇게 생각하니? 이스케이프 된 문자를 사용하는 것은 사용자에게 친숙하지 않고 기술이 아닌 사용자에게는 매우 이상하게 보일 수있는 URL을 생성하기 때문에 실제로 모범 사례가 아닙니다. URL을 가능한 한 현명하게 유지하는 것이 최선이라고 생각합니다
vsync

UNderscores ARE BAD FOR SEO댓글에 관해서 . 밑줄은 Google에서 밑줄로 해석되고 대시 / 하이픈은 공백으로 해석됩니다. 왜? 많은 코더들은 구글 (초창기부터 구글을 포함)을 사용하는데, 밑줄을 foo_bar검색 결과 내에서 더 이상 찾을 수없는 공백 (일종의 클래스)으로 취급한다면 구글을 사용합니다. Blah blah ... 결론 : "최적화"하는 검색 엔진이 실제로 어떻게 작동하는지 이해한다면 밑줄은 SEO에 나쁘지 않습니다.
William Isted 2013-08-23

8

그것들을 이스케이프해야하지만 %2F수동으로 교체하지 마십시오 . URLEncoder이것을 위해 사용할 수 있습니다 .

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

그런 다음 말할 수 있습니다

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")

9
URLEncoder 함수는 Chrome과 같은 일부 브라우저에서 정의되지 않았습니다. 내가 사용 제안 그래서 encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.