###浏览互联网资源 URL 是统一资源定位符(Uniform Resource Location)的英文缩写,是浏览器寻找信息时所需的资源位置描述,通过 URL,才能找到、使用并共享互联网上大量的数据资源。 URI(统一资源标识符)是一类更通用的资源标识符,URL 实际上是它的一个子集。URI 是一个通用的概念,有两个主要的子集 URL 和 URN 构成,URL 是通过描述资源的位置来标识资源的,而 URN 则是通过名字来识别资源的,与它们当前所处的位置无关。 HTTP 规范将更通用的概念 URI 作为其资源标识符,但实际上,HTTP 应用程序处理的只是 URI 的 URL 子集。 以 http://www.yuhelove.com/show?id=50 为例,URL 分为以下三个部分: - URL 的第一个部分是方案(scheme),这里是 https(怎样访问资源)。 - URL 的第二个部分是域名(host),告知资源位于何处(服务器的位置),这里是 www.yuhelove.com。 - URL 的第三个部分是资源路径,说明了请求服务器上哪个特定的本地资源,这里是 /show?id=50 ###URL 语法 URL 的语法因方案不同而略有差异,大多数 URL 方案的 URL 语法都建立在这个由 9 个部分组成的通用格式上: `<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>` 以下是上述每个部分的描述信息:  日常看到的 URL 大多是 <scheme>://<host>/<path>?<query>#<frag> 这种格式,包含其他组件的 URL 很少见,因为 Web 资源大多是免费的,即使需要认证也是通过服务器端技术基于 Cookie + Session 来实现,显示指定不安全,存在诸多问题。 而「端口」一般都是隐藏的,对于 http 而言,默认端口号是 80,对于 https 而言,默认端口号是 443;至于「参数」,通常我们将其放到「查询」字符串中,比如 http://www.yuhelove.com/show?id=50; ###URL 编码 URL 通常使用 ASCII 字符集,对于不安全的字符则使用「%+两个ASCII码的十六进制数」进行编码,以便在任何系统中都可以被解析,从而实现可移植性和完整性。 客户端应用程序在向其他应用程序发送任意 URL 之前最好把所有不安全或受限字符进行编码。在 PHP 中,我们通常使用 urlencode 对 URL 进行编码。 ###URL scheme URL 方案(scheme)除了常见的 http 和 https 之外,还有很多其他方案,比如 ftp、mailto、file 等,这些平时偶尔也会在浏览器地址栏中用到,不同方案的 URL 格式基本一致: - ftp:从 FTP 服务器上传或下载文件,一般格式为 ftp://<user>:<password>@<host>:<port>/<path>;<params>; - rtsp、rtspu:可以通过实时流传输协议解析的音视频媒体资源的标识符,一般格式为 rtsp://<user>:<password>@<host>:<port>/<path>; - mailto:指向的是电子邮箱地址,比如 - mailto:xxx@outlook.com,访问该 URL 会向指定邮箱用户发送邮件; - file:表示一台指定主机上可以直接访问的文件,一般用于本地、网络文件系统或其他文件共享系统(比如网络邻居)文件的访问,一般格式为 file://<host>/<path>; - news:可用于访问特定的文章或新闻组; - telnet:用于访问交互式业务,表示的并不是对象自身,而是可通过 TELNET 访问的交互式应用程序