2010-06-07 77 views
60

我已經建立了我的ColdFusion應用程序以在頁面上動態網址,如斜槓的URL變量

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

但是我的變量名稱有時會包含斜線,如

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

這導致了一個問題,因爲我的應用程序假定變量名稱中的斜線表示網站的不同部分,藝術家專輯。所以URL會失敗。

我想知道是否有防止這種情況發生?我是否需要使用用另一個字符替換變量名稱中的斜槓的函數?

+3

這些都是正常的,或轉發,斜線。不反斜槓。 – 2010-06-07 18:55:41

回答

99

您需要跳過斜槓%2F

+0

好吧,這似乎是一個好主意,是否有任何特殊原因使用%2F? – namtax 2010-06-07 19:00:31

+0

這是標準的URL編碼。 – SLaks 2010-06-07 19:03:15

+1

@namtax,請參閱urlencodedformat():http://www.cfquickdocs.com/cf9/#urlencodedformat – Henry 2010-06-07 19:25:07

11

您可以很容易地將正斜槓/替換爲類似於下劃線_的內容,例如維基百科使用的空格。用下劃線等代替特殊字符是常見的做法。

+0

感謝您的回覆,是的,我確實 – namtax 2010-06-07 19:01:17

+3

這是很常見的做法,但這不是最好的做法,使用轉義字符是最佳實踐,因爲每個瀏覽器都瞭解這一點,所以每個服務器都明白這一點,每個開發人員都應該學會這樣做。UNderscores也是不好的SEO!我只是說這個,因爲我也是這樣做的,並且學會了它回來的難方式,並且迫使你狠狠地摔了一跤。 – ppumkin 2014-01-10 10:57:22

+0

@ppumkin - 你爲什麼這麼認爲?使用轉義字符並不是真的最好的做法,因爲它會產生不友好的用戶友好的URLS,並且對於非技術用戶來說看起來很怪異SERS。我認爲最好儘量保持網址儘可能合理 – vsync 2016-05-23 11:59:22

2

你需要逃避那些,但不要只是用%2F手動替換它。您可以使用URLEncoder

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

那麼你可以說

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

函數URLEncoder未在某些瀏覽器中定義,例如鉻。所以我建議使用'encodeURIComponent',https://www.w3schools.com/jsref/jsref_encodeuricomponent.asp – 2017-03-05 10:24:03