少し前某所にいたとき、絶対パスを「http:// からはじまる~」と説明していたのを傍で聞いていて、なんか違うような (で、でも、わたし、正確に調べたわけじゃないし##) みたいな感じだったのでちゃんと調べる。
といっても、普通に RFC を確認するだけ。おなじみ RFC3986 を適当に調べる。と、該当部分は
- 3.3. Path
- 4.2. Relative Reference
- 4.3. Absolute URI
なんだけど、こっちの RFC だと少しまわりくどいので、上書き前の RFC2396 を見てみる。もちろん若干違うのだけど、上書きされたのが最近ということを考えれば、もともとの由来はこっちにあったと考えられる。
absoluteURI = scheme ":" ( hier_part | opaque_part ) hier_part = ( net_path | abs_path ) [ "?" query ]
relativeURI = ( net_path | abs_path | rel_path ) [ "?" query ]
abs_path = "/" path_segments rel_path = rel_segment [ abs_path ]
絶対 URI (absoluteURI) はスキームから始まるやつ。相対URIはパスにクエリー付けられるやつ。絶対パスは / からはじまるやつ。
URI 的にはこういうものらしい。
- 絶対 URI
- http://example.com/
- http://example.com/hogehoge.html
- 相対 URI
- /hogehoge.html
- ./hogehoge.html
- foo/bar.html
- /search?q=%42oofy
- 絶対パス
- /hogehoge.html
- 相対パス
- ./hogehoge.html
- foo/bar.html
あと上書き後では次のようなノートが書いてあったり、定義が微妙に変わっていたり (フラグメントがどうとか) する。とりあえず相対 URI は今は正確には URI 相対参照みたいだ。
NOTE: Previous specifications used the terms "partial URI" and "relative URI" to denote a relative reference to a URI. As some readers misunderstood those terms to mean that relative URIs are a subset of URIs rather than a method of referencing URIs, this specification simply refers to them as relative references.