【问题标题】:Include url inside url在 url 中包含 url
【发布时间】:2010-09-10 10:57:51
【问题描述】:

我想使用以下格式的网址:

http://localhost/{url}/{options}/{hash}

但是由于 url 在 url 中使用 url 会很奇怪,我将如何对其进行编码?

我正在考虑将其编码为十六进制,因为 .net 中的 url 编码给了我一些在 url 中不起作用的奇怪结果。但我真的不知道这里最好的方法是什么。

我想保留 url 的结构,不包括任何查询字符串。

【问题讨论】:

    标签: c# asp.net url encode


    【解决方案1】:

    您可以使用System.Web.HttpUtility.UrlEncode 方法对部分url(甚至是另一个url)进行编码。

    如果它是路径的一部分而不是查询字符串,UrlPathEncode 应该可以完成这项工作。

    【讨论】:

    • 这似乎只在与查询字符串一起使用时才有效。不带 url 部分。
    • 马上试试,谢谢。如果可行,会将您的答案标记为已解决:)
    • 当我尝试它只将我的 url 插入到另一个 url 中时,就像没有任何改变一样。 (试过但单独和完整的网址)你能举个例子来说明如何使用它吗?
    【解决方案2】:

    如果您不想要查询字符串部分,那为什么要对 url 部分进行编码?

    以下网址完全有效:

    http://localhost/www.stackoverflow.com/1234/abc
    

    正如RFC 中所述,字符、“-”和“.”允许在 URI 中使用。

    【讨论】:

    • 如果 url(在 url 内)包含查询字符串,那将不起作用。
    • 您提到您不想包含查询字符串。如果您想在路径中包含查询字符串数据,那么您可以自己开发一种编码方案,例如将“&”替换为“-.-”或将“=”替换为“..-”。虽然这不是一个理想的解决方案,但它可能会奏效。再次阅读我的回答中提到的 RFC 将使您了解如何为您的情况制定方案。
    猜你喜欢
    • 1970-01-01
    • 2012-08-10
    • 2012-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-03-13
    • 2012-06-12
    • 2010-09-29
    • 2018-07-05
    相关资源
    最近更新 更多