标识与定位不是一回事
RFC 3986把URI作为一般术语,并区分用于定位资源的URL等用法。一个标识符可以描述访问位置,也可以作为名称;不能因为存在一串URI,就断言网络中一定有一份当前可下载的文件。
方案名在冒号之前,例如https或urn。通用语法给不同方案共享的框架,具体方案还会进一步规定允许的写法和解析含义。
参考:[1]
组件与相对引用
常见的分层写法可以含权限部分、路径、查询和片段,但不是每个方案都必须具有所有部分。分隔符有语法意义,作为数据使用时的百分号编码不能随意与分隔用途混淆。
相对引用需要结合基础URI才能解析。把一组互相引用的文档整体迁移时,适当的相对引用可以保留其内部关系,却不能脱离上下文独自决定目标。
比较URI时,规范化不能对整串文字一刀切。RFC 3986的通用规则允许把方案名与主机名按大小写不敏感处理,其他组件则不能未经具体方案规则就全部转小写。百分号编码中十六进制字母的大小写可统一,编码的非保留字符也可按规则解码;但保留字符可能承担分隔用途,例如把路径中的%2F直接变成斜杠,就可能改变路径分段。字符串看起来更简洁,不等于资源含义仍相同。
国际化与名称管理
IRI为国际化名称引入更广的Unicode字符集合,并规定与URI的映射关系。显示给读者的字符、传输编码和比较规则因此需要分别说明,不能只凭屏幕上看起来相似就认作相同标识。
URI结构也有管理边界。RFC 8820讨论标准如何尊重方案及资源管理者对名称的控制,避免无依据地规定固定路径或从某个字符串前缀猜测通用语义。