【问题标题】:What characters can one use in a URL?可以在 URL 中使用哪些字符?
【发布时间】:2011-08-04 17:13:51
【问题描述】:

我有一个应用程序,它采用 URL 中的所有参数,如下所示:/category/subcategory/sub-subcategory。我希望能够在 URL 的末尾提供额外的参数,例如 page-2/order-desc。这将使整个 URL 变为 cat/subcat/sub-subcat{delimiting-character}page-2/order-desc

我的问题是:我可以使用哪些字符作为{delimiting-character}。我更喜欢“:”,因为我确信它永远不会出现在其他任何地方,但我不知道它是否符合标准,或者至少将来不会给我带来问题。

我记得 vimeo 使用过这样的东西:vimeo.com/video:{code} 但他们似乎已经改变了这一点。

【问题讨论】:

    标签: url rfc


    【解决方案1】:

    您可以使用字母数字加上特殊字符“$-_.+!*'()” 更多信息在这里:http://www.ietf.org/rfc/rfc1738.txt

    另外,请注意不要在 url 中超过 2000 个字符

    【讨论】:

    • + 符号有点棘手 - 这应该始终正确编码,即使这样......
    • @andrew 非常感谢...多年来,我一直在我的 URL 中使用波浪号 (~) 作为数据的分隔符。我刚刚从您的 RFC URL 了解到这样做是有风险的。感谢并为此发现 +1。
    • 以下是 URL 中的文本: 其他字符是不安全的,因为已知网关和其他传输代理有时会修改此类字符。这些字符是“{”、“}”、“|”、“\”、“^”、“~”、“[”、“]”和“`”
    • @GrantThomas 你能否为你的陈述提供证据证明+ 符号是一个例外?
    【解决方案2】:

    最新的 URI 规范是 RFC 3986;请参阅 the ABNF 了解有关 URI 的哪些部分中允许使用哪些字符的详细信息。

    绝对路径部分的格式为:

      path-absolute = "/" [ segment-nz *( "/" segment ) ]
      segment       = *pchar
      segment-nz    = 1*pchar
      pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
      pct-encoded   = "%" HEXDIG HEXDIG
      unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
      sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
                          / "*" / "+" / "," / ";" / "="
    

    【讨论】:

      【解决方案3】:

      http://www.ietf.org/rfc/rfc1738.txt

      基本上,您可以使用所有字母数字以及$ - _ . + ! * ' ( ) ,

      【讨论】:

      • 谢谢!我会用“。”因为另一个在 URL 中看起来有点不合适(并且 _ 和 - 可能出现在我的 URL 的其他位置)。 :)
      【解决方案4】:

      您可以使用破折号或下划线(这些经常使用)。你可以使用任何你想要的字符,但是例如,空格在 url 中变成 %20,所以它们看起来不太好。

      【讨论】:

        【解决方案5】:

        如果您使用破折号或下划线,请记住,破折号被 Google 读取为连字符,因此不会改变您的网址的分类方式。下划线算作一个字符,可能会影响您的 SEO。

        例如:破折号使用 = 破折号使用(2 个字); underscore_use = underscore_use(1 个字)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-07-23
          • 2021-09-09
          • 1970-01-01
          • 1970-01-01
          • 2014-04-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多