# Uniform Resource Locator

ウェブブラウザのアドレスバーに表示された、Wikipedia 英語版 メインページのURL
**Uniform Resource Locator**（ユニフォーム リソース ロケータ、**URL**）とは、インターネット上のリソース（資源）を特定するための形式的な記号の並び。**統一資源位置指定子**（とういつしげんいちしていし）とも。

WWWをはじめとするインターネットアプリケーションにおいて提供されるリソースを、主にその所在を表記することで特定する。なお、ここでいう、「**リソース**」とは、（主にインターネット上の）データやサービスを指し、例えばウェブページの保存場所や電子メールの宛先といったものが該当する

## 概要

1994年、WWWの開発者ティム・バーナーズ＝リーおよびIETFによって定義され、その仕様はRFC 1738によって公開された。

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

URLはリソースの場所を特定する「住所」のようなものだと例えられることがある。

日本ではURLのことを俗に「ホームページアドレス」と呼ぶことがある。「ホームページアドレス」はMACアドレスやIPアドレス、メールアドレス等とは異なり、RFCなどの文書で規定されている標準的な技術用語ではない。

ウェブブラウザには、URLを入力して移動したり、現在表示されているウェブページのURLを表示・取得したりすることのできるテキストボックスまたはコンボボックスのようなGUI部品（ウィジェット）が用意されており、一般的にアドレスバーと呼ばれる。モダンなウェブブラウザではアドレスバーと検索ボックスが統合され、URLだけでなく検索キーワードを入力することもできる。

## URLの形式

### 例

|  |  |  |
| --- | --- | --- |
| **https**: | //**ja.wikipedia.org** | **/wiki/Wikipedia** |
| ↑ | ↑ | ↑ |
| ｜ | ｜ | パス名 |
| ｜ | ホスト名 | （ディレクトリ名を含む） |
| スキーム（プロトコル名ではない） |

「`

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

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

### 一般形式

一般にURLは

```
（スキーム名）**:**（スキームごとに定められた何かの表現形式）
```

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

* ftp - FTPのためのスキーム
* http - HTTPのためのスキーム
	+ 2000年5月、RFC 2818でhttps（HTTPSのためのスキーム）が追加された
* gopher - Gopherプロトコルのためのスキーム
* mailto - 電子メールの宛先を表すためのスキーム
* news - ネットニュース（Usenet）のためのスキーム
* nntp - NNTPを使用したネットニュースのためのスキーム
* telnet - Telnet接続を表すためのスキーム
* wais - Wide Area Information Servers
* file - ファイルシステムの中のディレクトリやファイルを参照するためのスキーム
* prospero - Prospero Directory Service

IANAに登録されたスキームが公式に認められたスキームであると見なされており、RFC 7595で登録手続きなどについて規定されている。この他にもjavascriptスキーム（この後ろに書かれた内容がJavaScript言語によって書かれたスクリプトであることを示す）のように広く普及している非公式なスキームもある。

URLの、スキーム名以降の部分はスキームごとに定められた規則に従う。例えば、電子メールの宛先を表すmailtoスキームのURLの場合、

```
mailto:example@example.com
```

のようになっており、先に挙げたhttpsスキームの例とは大きく異なっている。

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

```
//<user>:<password>@<host>:<port>/<url-path>?<query-string>
```

* `<user>` - ホストに接続するときに使うユーザー名。必要がなければ省略可。
* `<password>` - ユーザー名に対応するパスワード。必要がなければ省略可。
* `<host>` - ホスト名、FQDNまたはIPアドレス

```
 ← IPv4の場合
 ← IPv6の場合
```

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

## 標準

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

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

### RFC

URLに関連するRFC（およびその邦訳）には次のものがある。

* RFC 1738 - Uniform Resource Locators（URL）
* RFC 1808 - Relative Uniform Resource Locators
* RFC 2396 - Uniform Resource Identifiers（URI）：Generic Syntax（旧）
	+ TS X 0097:2004 - 統一資源識別子（URI） 共通構文 標準仕様書（TS）
* RFC 3305 - URIs, URLs, and URNs: Clarifications and Recommendations 1.0
* RFC 3986 - Uniform Resource Identifier（URI）：Generic Syntax
* RFC 7595 (BCP 35) - Guidelines and Registration Procedures for URI Schemes
* RFC 8820 - URI Design and Ownership
* RFC 1983 - Internet Users' Glossary
	+ TR X 0055:2002 - インターネット利用者のための用語 標準情報（TR）

RFC 1983による"**address**"の語釈は次の通り（プレーンテキストの原文に**太字**の効果を付与し、1行文字数などの体裁を調整）。

|  |
| --- |
| There are four types of **addresses** in common use within the Internet. They are email address; IP, internet or Internet address; hardware or MAC address; and **URL**. See also: email address, IP address, internet address, MAC address, **Uniform Resource Locator**. |

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

|  |
| --- |
| インターネット（the Internet）内部で共通に使用する**アドレス**には4つの型がある。それらは、電子メールアドレス、IPアドレス又はインターネットアドレス、ハードウェアアドレス又はMACアドレス、及び**URL**とする。"2.147 email address"、"2.252 IP address"、"2.229 internet address"、"2.287 MAC address"及び"2.479 **Uniform Resource Locator**（**URL**）"も参照すること。 |

### W3C Documents

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

* URL （2017年、ワーキンググループノート）: WHATWG URL Standardのスナップショットとなっている。

## 恒久リンク

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

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

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

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

* URL Living Standard
* URL Living Standard （日本語訳）