【问题标题】:Absolute urls, relative urls, and...?绝对网址、相对网址和...?
【发布时间】:2010-10-28 14:10:42
【问题描述】:

我正在写一些文档,但我有一点词汇问题:

  1. http://www.example.com/en/public/img/logo.gif 被称为“绝对”网址,对吧?
  2. ../../public/img/logo.gif 被称为“相对”网址,对吧?
  3. 那么你怎么称呼它:/en/public/img/logo.gif?

它是否也被视为“绝对 url”,尽管没有协议和域部分?

或者它是否被认为是一个相对 url,但相对于域的根?

我用谷歌搜索了一下,有些人将其归类为绝对的,而其他人则归类为相对的。

我应该怎么称呼它? “半绝对网址”?还是“半亲戚”?还有一句话吗?

【问题讨论】:

    标签: url terminology relative-url


    【解决方案1】:

    以下是 URL 组件:

    http://www.example.com/en/public/img/logo.gif
    \__/   \_____________/\_____________________/
     #1     #2             #3
    
    1. 方案/协议
    2. 主持人
    3. 路径

    如果 URL 以方案和方案特定部分开头(这里是 // 在http: 之后),则称为绝对 URL。其他任何东西都是相对 URL。

    URL 路径如果以/ 开头,则称为绝对 URL 路径。任何其他 URL 路径 称为 相对 URL 路径。

    因此:

    • http://www.example.com/en/public/img/logo.gif 是一个绝对 URL,
    • ../../public/img/logo.gif 是一个 relative URL 与 relative URL path 和
    • /en/public/img/logo.gif 是一个相对 URL,带有一个绝对 URL 路径。

    注意:URI (RFC 3986) 的当前定义与旧的 URL 定义(RFC 1738 和 RFC 1808)不同。

    三个带有 URI 术语的例子:

    • http://www.example.com/en/public/img/logo.gif 是一个URI,
    • ../../public/img/logo.gif 是一个相对引用,只有一个相对路径和
    • /en/public/img/logo.gif 是一个相对引用,只有一个绝对路径。

    【讨论】:

    • 我不确定我是否理解正确。这是否意味着//yolo.com 被视为绝对网址?
    • @srph 否。仅当它以协议/方案开头时才被认为是绝对的。
    • 但是浏览器似乎可以正确解析它。例如,//yolo.com 将添加页面的当前方案。是否有任何特定术语、rfc 或为什么浏览器中的 url 在以 // 开头时被解析为绝对的原因?
    • @srph 相对 URL 始终根据使用的上下文解析为绝对 URL。请查看 section 5 of RFC 3986: Reference Resolution 了解更多信息。
    • 不错的答案,但是在日常对话(或用户友好的文档)中,谁会始终将其称为“具有绝对路径的相对引用”? MDN 通常是一个可靠的来源,但they call it 是一个带有“隐式域名”的“绝对 URL”,这就更糟糕了。从我记事起,这些被称为 root-relative 链接。意思很清楚(相对于词根而言),而且说起来容易得多。
    【解决方案2】:

    我见过它叫做 root 相对 URL。

    【讨论】:

    • 惊讶于这个答案在 11 年多的时间里只获得了一票!如果我正在编写用户友好的文档,那正是我会这样称呼它。
    【解决方案3】:

    来自微软关于Absolute and Relative URLs的文档

    URL 指定存储在本地或联网计算机上的目标的位置。目标可以是文件、目录、HTML 页面、图像、程序等。

    绝对 URL 包含定位资源所需的所有信息。

    相对 URL 使用绝对 URL 作为起点定位资源。实际上,目标的“完整 URL”是通过连接绝对 URL 和相对 URL 来指定的。

    绝对 URL 使用以下格式:scheme://server/path/resource

    相对 URL 通常只包含 路径,也可以选择包含 resource,但不包含 scheme 或 server时间>。下表定义了完整 URL 格式的各个部分。

    • scheme - 指定如何访问资源。

    • 服务器 - 指定资源所在计算机的名称。

    • path - 指定通向目标的目录顺序。如果省略resource,则目标是path中的最后一个目录。

    • resource - 如果包含,resource 是目标,通常是文件的名称。它可能是一个简单文件,包含单个二进制字节流,也可能是一个结构化文档,包含一个或多个存储和二进制字节流。

    【讨论】:

      【解决方案4】:

      它有时被称为虚拟 url,例如在 SSI 中:

      <!--#include virtual = "/lib/functions.js" -->
      

      【讨论】:

        【解决方案5】:

        请记住,可以省略多少个 URL 段,使它们相对(注意:它们都差不多)。这些都是有效的 URL:

        • http://example.com/bar?baz
        • ?qoo=qalue
        • /bar2
        • dat/sly
        • //auth.example.com(大部分人都对这个感到惊讶!会使用http还是https,取决于当前资源)
        • #anchor

        【讨论】:

          猜你喜欢
          • 2012-01-03
          • 1970-01-01
          • 2019-06-25
          • 1970-01-01
          • 1970-01-01
          • 2012-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多