url变量中的斜杠
我已将coldfusion应用程序设置为在页面上具有动态URL,例如url变量中的斜杠,url,escaping,Url,Escaping,我已将coldfusion应用程序设置为在页面上具有动态URL,例如 www.musicExplained/index.cfm/artist/:VariableName www.musicExplained/index.cfm/artist/GZA/Genius 但是,我的变量名有时会包含斜杠,例如 www.musicExplained/index.cfm/artist/:VariableName www.musicExplained/index.cfm/artist/GZA/Genius
www.musicExplained/index.cfm/artist/:VariableName
www.musicExplained/index.cfm/artist/GZA/Genius
但是,我的变量名有时会包含斜杠,例如
www.musicExplained/index.cfm/artist/:VariableName
www.musicExplained/index.cfm/artist/GZA/Genius
这导致了一个问题,因为我的应用程序假定变量名中的斜杠代表网站的另一部分,即艺术家专辑。因此URL将失败
我想知道是否有任何方法可以防止这种情况发生?我是否需要使用一个函数将变量名中的斜杠替换为另一个字符?您需要将斜杠转义为
%2F
您可以轻松地将前斜杠/
替换为下划线
,例如Wikipedia用于空格。将特殊字符替换为下划线等是常见的做法。您需要转义这些字符,但不要仅手动将其替换为%2F
。您可以为此使用urlcoder
例如URLEncoder.encode(url,“UTF-8”)
那么你可以说
yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")
查看有关“HTML URL编码参考”的此页面:
对于/您将使用%2F进行转义,这些是正常的或向前的斜杠。不是反斜杠。好的,这似乎是个好主意,使用%2F有什么具体的原因吗?这是标准的URL编码。IIS仍然将其作为
/
截取并中断路由:(Apache将其解释为a/并中断路由,除非AllowEncodedSlash指令已打开(默认情况下已关闭)为此,你可以使用encodeURIComponent
和decodeURIComponent
。这是常见的做法,但不是最佳做法。使用转义字符是最佳做法,因为每个浏览器都了解这一点,每个服务器都了解这一点,每个开发人员都应该学会这样做。下划线也不利于SEO!我是正如我以前所做的那样,我也这么说了,并且学到了它回来的艰难方式,让你很难受。@ppumkin-你为什么这么认为?使用转义字符并不是最好的做法,因为它生成的URL对用户不友好,对非技术用户来说可能看起来很奇怪。我认为最好尽量保持URL尽可能合理关于下划线不利于SEO
评论。下划线被谷歌解读为下划线,破折号/连字符被解读为空格。为什么?编码者,很多编码者使用谷歌(从早期起就包括谷歌自己),如果他们将下划线视为空格,您将无法再在搜索结果中找到foo_bar
(可能是某种类型的类)。诸如此类……总之:如果您了解您正在“优化”的搜索引擎,下划线对搜索引擎优化并不是坏事在某些浏览器中,例如Chrome,没有定义URLEncoder函数。因此我建议使用encodeURIComponent
,