一、先来个简单点的url
https://https:⁄⁄[email protected]://www.netmeister.org/https:⁄⁄www.netmeister.org⁄?https://www.netmeister.org=https://www.netmeister.org;https://www.netmeister.org#https://www.netmeister.org
这个url是合法的,我们来curl验证一下
为了更好的分解这种复杂的URL,上面的例子还是太简单了,让我们来拆解一个更为复杂的URL,如下:
https://https:⁄⁄[email protected]://www.netmeister.org/https:⁄⁄www.netmeister.org⁄?https://www.netmeister.org=https://www.netmeister.org;https://www.netmeister.org#https://www.netmeister.org
这也是一个合法的URL,只不过更加复杂,不过一点一点拆解开来就能更加感受到URL格式的魅力。
三、URL组成
解读之前我们先来看一下URL的各部分组成,及各部分允许出现的字符(正则表示)。
这也是网上最著名的URL说明图了,下面我们进入正题。
四、复杂的URL拆解说明
为了方便查看和拆解,我把每一块都用不同的颜色标记出来
P.S. 此颜色和上图中的颜色没有任何关系
https://https:⁄⁄www.netmeister.org@https://www.netmeister.org/https:⁄⁄www.netmeister.org⁄?https://www.netmeister.org=https://www.netmeister.org;https://www.netmeister.org#https://www.netmeister.org
https:// -- 普通的https协议头
https -- url基础认证的用户名
: -- 冒号是分隔基础认证中用户名和密码的符号
⁄⁄www.netmeister.org -- url基础认证的密码,注意这里的斜线其实是unicode 字符(Fraction Slash),url编码后其实长这个样子,
%E2%81%84%E2%81%84www%2Enetmeister%2Eorg
@ -- 分隔认证信息和hostname的符号
https -- 其实是hostname,需要在 /etc/hosts中为https指定一个可以访问的ip
: -- 分隔hostname和端口号
// -- 两个空的目录
www.netmeister.org -- 目录名字
/ -- 正常的路径分隔符
https:⁄⁄www.netmeister.org⁄ -- 文件名,这里也用到了Fraction Slash
? -- 分隔后面的url参数
https://www.netmeister.org -- 参数键
= -- 参数键值分隔符
https://www.netmeister.org -- 参数值
; -- 参数各键值对分隔符,一般用&,也可以用;
https://www.netmeister.org -- 参数,可以没有值
# -- 分段符号
https://www.netmeister.org -- 最后是一个锚点分段
怎么样是不是拆解完就很清晰了,通过这一个例子,就能完全理解URL了。