我正在编写一个Web应用程序,它根据某些输入动态创建URL,并在另一时间由客户端使用.为了便于讨论,这些URL可以包含某些字符,例如正斜杠(即'/'),它不应该被解释为实际URL的一部分,而只是作为参数.例如:
http://mycompany.com/PartOfUrl1/PartOfUrl2/ArgumentTo/Url/GoesHere
如您所见,ArgumentTo/Url/GoesHere确实具有正斜杠但应忽略或转义.
这可能是一个不好的例子,但手头的问题更为通用,适用于其他特殊字符.
鉴于一些答案,我意识到我没有指出一些希望有助于澄清的内容.
我想保持这种语言不可知,因为如果客户端可以提出请求会很好.例如,如果客户端知道它想要传递ArgumentTo/Url/GoesHere,那么如果可以将其编码为一个唯一的字符串,服务器可以在其中转换并对其进行解码以供使用,那将会很棒.
我们可以假设.NET Framework中的HttpUtility.HtmlEncode/HtmlDecode等类似函数可以在其他系统/平台上使用吗?URL不一定非常漂亮,因此在路径中使用真正的单词并不重要.
似乎base64编码/解码在任何平台/语言上都相当容易.
你没有说你正在使用哪种语言,但PHP具有有用的urlencode
功能和C#HttpUtility.URLEncode
,Server.UrlEncode
并且应该很好地编码你网址的一部分.
如果您需要其他方式,此页面包含编码值列表.例如:/ == %2f
.
根据您的更新,我会说使用Voyagerfan的URLRewriting的想法来做类似的事情:
http://www.example.com/([A-Za-z0-9/]+) http://www.example.com/?page=$1
然后使用应用程序GET解析器将其过滤掉.