Uniform Resource Locator

Uniform Resource Locatorまたは、統一資源位置指定子とは、インターネット上のリソースを特定するための形式的な記号の並び。WWWをはじめとするインターネットアプリケーションにおいて提供されるリソースを、主にその所在を表記することで特定する。なお、ここでいう、「リソース」とは、データやサービスを指し、例えばウェブページの保存場所や電子メールの宛先といったものがそうである。

ティム・バーナーズ＝リーが1991年に発表した論文date=2012年10月}}でUniversal Resource Locatorと命名し、初期はその名が使われたが、現在の正式名称は、「Uniform Resource Locator」である。

URLを含む一般概念としてURIがある。

URLはリソースの場所を特定する「住所」のようなものだと例えられることがある。また、日本ではURLのことを「アドレス」と呼ぶことがあるが、これは、MACアドレスやIPアドレスなどと紛らわしく、技術用語としては<WtXmlEndTag />、好まれてはいない。

1. URLの形式
---------

1.1. 例
------

「」は典型的なURLの例である。URLはこのような特徴的な形式の文字列であり、WWWが普及した今日にあっては頻繁に目にするものである。

上のURLは「ウィキペディア日本語版の中にあるウィキペディアについて説明している項目」というリソースを特定する。

スキーム名 httpsはこのリソースを入手する為にはHTTPSを使うべきであることを表す。
ja.wikipedia.orgはこのリソースが保管されているホストを表すホスト名である。
残りの/wiki/Wikipediaの部分は最終的にリソースを特定するための詳細である。ホストのファイルシステム内でのファイル名あるいはディレクトリ名に対応する場合が多いが、そうでない場合もある。
大まかに言えば、上のURLは「ja.wikipedia.orgというコンピュータに接続してHTTPSの決まり事に従って/wiki/Wikipediaという名前のデータを要求すれば目的の物が手に入る」と読むことができる。
なお、スキーム名の後のダブルスラッシュ//の2文字は有意義に使われる機会が少ない。2009年10月、URLの提案者であるティム・バーナーズ＝リーは「できることなら取り除きたい」と発言している。

1.2. 一般形式
---------

一般にURLは: という形をしている。スキーム名としてはプロトコル名が用いられていることが多いがそれに限らない。1738}}には次のスキーム名が定義されている。

ftp - FTPのためのスキーム
http - HTTPのためのスキーム
2000年5月、2818}}でhttpsが追加された
gopher - Gopherプロトコルのためのスキーム
mailto - 電子メールの宛先を表すためのスキーム
news - ネットニュースのためのスキーム
nntp - NNTPを使用したネットニュースのためのスキーム
telnet - Telnet接続を表すためのスキーム
wais - Wide Area Information Servers
file - ファイルシステムの中のディレクトリやファイルを参照するためのスキーム
prospero - Prospero Directory ServiceIANAに登録されたスキームが公式に認められたスキームであると見なされており、7595}}で登録手続きなどについて規定されている。この他にもjavascriptスキームのように広く普及している非公式なスキームもある。

URLの、スキーム名以降の部分はスキームごとに定められた規則に従う。例えば、電子メールの宛先を表すmailtoスキームのURLの場合、 のようになっており、先に挙げたhttpsスキームの例とは大きく異なっている。

httpsやftpのような特定のホストにIP接続する類のスキームでは次のような共通の形式が使われている。この表記では、接続するプロトコルは、呼び出している機能のプロトコルと同じものが使用される。 //:@:/?

- ホストに接続するときに使うユーザー名。必要がなければ省略可。
- ユーザー名に対応するパスワード。必要がなければ省略可。
- ホスト名、FQDNまたはIPアドレス ← IPv4の場合 ← IPv6の場合

- 接続先ポート番号。ホストのどのポートに接続するかを表す。スキームがデフォルトのポート番号を規定している場合は省略してもよい。
- ホストに要求するパス。ホストのファイルシステムにおけるパスと対応する場合が多いが、そうでない場合もある。必要がなければ省略可。
- 接続先が利用するパラメータ。?に続いて任意の形式でデータを記述する。省略可。正式名は「[1]」。

2. 標準
-----

WHATWGが[2]を策定している。これは、RFC 3986やその他URLに関係するRFCを置き換える標準仕様である。ただし、廃止などにする手続きが行われたわけではないので、各種RFCも状態としては有効である。

なお、cURL作者のDaniel SteinbergはURL Standardについても不十分という意見を発している。

2.1. RFC
--------

URLに関連するRFCには次のものがある。

1738}} - Uniform Resource Locators
1808}} - Relative Uniform Resource Locators
2396}} - Uniform Resource Identifiers：Generic Syntax
[3] - 統一資源識別子 共通構文 標準仕様書
RFC 3305 - [4]
3986}} - Uniform Resource Identifier：Generic Syntax
7595}}  - Guidelines and Registration Procedures for URI Schemes
8820}} - URI Design and Ownership
1983}} - Internet Users' Glossary
[5] - インターネット利用者のための用語 標準情報による"address"の語釈は次の通り。

先頭の2文の大意は、「インターネットにおけるアドレスには主に4種類ある。電子メールアドレス、IPアドレス、MACアドレス、そしてURLである」となるが、参考までに、TR X 0055:2002による訳を次に引用する。

2.2. W3C Documents
------------------

W3Cが発行しているURLについての文書には次のものがある。

[6] : WHATWG URL Standardのスナップショットとなっている。

3. 恒久リンク
--------

恒久リンクとは恒久的なURLのこと。主にコンテンツ管理システム、とりわけブログツールにおいて、個々の記事へのURLが更新作業を繰り返しても変わらないしくみを意味する。一般的に、URLは永久に変化しないことが好ましい。

特定の記事あるいはウエブページに対する直接リンクが増大するにつれ、一方でリンク切れの大量発生も大きな問題となっている。そのような事態を避けるためコンテンツの更新作業が行われ、なおかつ更新履歴が保存されるシステムにおいて、有効なコンテンツへのURLが変動しないように、データへの参照番号などを固定化するとともに参照方法を簡略化し、URLが冗長にならないことが望ましいとされる。

そのための特殊な手法としてApacheウエブサーバの場合、mod_rewriteを使ってURLを書き換える、PATH_INFOからパラメータを取得してプログラムを動作させるなどがある。特にmod_rewriteの場合は、PHPによる動的コンテンツを静的なhtmlコンテンツに見せかけることが容易にできてしまう。またPATH_INFO方式の場合は動的コンテンツをサブディレクトリに見せかけることができる。このほかいわゆる携帯サイトではURLを短縮化する様々な工夫が施されるようになっている。いずれにしてもURLのみならずオリジナルのファイル拡張子を隠蔽することで、スクリプトを画像や音楽ファイルのように装うなど悪用のおそれもあるので、ホスティングサーバにおいては利用が制限されるケースが多い。

4. 脚注
-----

5. 関連項目
-------

Internationalized Resource Identifier
Uniform Resource Identifier
Uniform Resource Name
短縮URL
名前空間
パーセントエンコーディング
メールアドレス

6. 外部リンク
--------

[7]
[8]