Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
url变量中的斜杠_Url_Escaping - Fatal编程技术网

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

我已将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
这导致了一个问题,因为我的应用程序假定变量名中的斜杠代表网站的另一部分,即艺术家专辑。因此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