URL

URLとは

URL(Uniform Resource Locator)はインターネット上のリソース(情報資源)の場所と名前を指し示す識別子です。一般にURLは

[スキーム]:[スキームごとに定められた表現形式]

という形をしています。

次にスキームの例を示します。これ以外にIANA(The Internet Assigned Numbers Authority)には40種類以上のスキームが登録されています。

スキームの例
スキーム意味
ftpFTPプロトコル
httpHTTPプロトコル
httpsSSLで暗号化してセキュリティを確保したHTTP
gopherGopherプロトコル
mailto電子メールの宛先
newsネットニュース
nntpNNTPを使用したネットニュース
telnetTelnet接続
waisWAISデータベース検索システム
fileファイルシステムの中のディレクトリやファイル

WebページのURL

WebページのURLのスキームはhttpもしくはhttpsです。次は、WebページのURLの例です。

責任者部(authority component)

責任者部はリソースを提供するホストマシン(Webサーバ)の名前で、サーバ名とドメイン名からなります。先頭の"//"はこのリソースがネットワーク上にあることをあらわしています。ドメイン名(Domain name)は個人や組織に与えられる世界で唯一の名称です。ドメイン名は登録制で、ICANN(The Internet Corporation for Assigned Names and Numbers)によって一元管理されていて重複しないようになっています。

ドメイン名は、ピリオド(.)で区切られ、右から順に、トップレベルドメイン(TLD)、セカンドレベルドメイン(SLD、2LD)、サードレベルドメイン(3LD)、...と呼びます。

例えば、

http://www.nao.ac.jp/

におけるTDLは"jp"ですが、このようにTLDが国の名前をあらわすコード(例えば、jpは日本を表す)になっているTLDをccTLD(country code top-level domain)といいます。この例では、SLDはacで登録者が教育機関であることを表しています。一方、TLDが

http://www.nasa.gov/

のように国の名前でない場合(例えば、govは米国政府を表す)をgTLD(generic top-level domain)といいます。

パス部(path component)

管理者部の右側全体をパス部といいます。パス部はフォルダ名とファイル名からなり、サーバ内部でのリソースの場所と名前を示しています。フォルダの階層は"/"で区切って並べてあらわします。上の例では、topicsフォルダの中のmoonmarsフォルダの中のindex.htmlというファイルという意味になります。

例えば、

http://www.nasa.gov/topics/moonmars/

のように、URLのパス部の最後のファイル名がないものをWebブラウザで入力すると、そのURLで指定されるフォルダの中の索引ファイルが表示されます。多くの場合、索引ファイルの名前は"index.html"もしくは"index.php"です。但し、フォルダ名があって"/"で終わっていない場合は索引ファイルは用いられません。

Webページの一般的なURLの書式

一般的にhttpスキームのURLは次の形をしています。

http://<user>:<password>@<host>:<port>/<url-path>

ここで

<user>ホストに接続するときのユーザ名で、必要がなければ省略可
<passward>ユーザ名に対応するパスワードで、必要がなければ省略可
<host>ホスト名もしくはホストのIPドレス
<port>接続先のポート番号で、HTTPのデフォルトのポート番号80であるときは省略可
<url-path>ホスト内のファイルを指定するパスで、必要がなければ省略可

クエリー文字列

URLの末尾にクエリー文字列(query string)を追加することができます。クエリー文字列は?の後に記述します。例えば、

http://maps.google.co.jp/maps?ll=24.37362,124.139399&z=12&output=embed

において、クエリー文字列は"ll=24.37362,124.139399&z=12&output=embed"の部分です。この例のように、クエリー文字列は「パラメータ名=値」という形の設定を&で区切ったものになります。

フラグメント識別子

URLの末尾にフラグメント識別子(fragment identifier)を追加することができます。フラグメント識別子は#の後に記述します。例えば、

http://www.cosmos.co.jp/galaxy/milkyway.html#sirius

において、フラグメント識別子は”sirius"の部分です。このURLをWebブラウザで表示すると、ページのトップではなく、id属性の値が"sirius"である要素の部分を表示します。

相対URL

ディレクトリ構造とファイルパス

ほどんどのOSでは、ファイルを記録媒体に保存する場合に、ディレクトリもしくはフォルダと呼ばれるグループ名によって階層的に管理しています。Unix系のOSではディレクトリ、WindowsやMacOSではフォルダという用語を用いています。階層構造の一番上のディレクトリを、ルートディレクトリと呼びます。下の図は、Windowsでのディレクトリ構造の例で、[Dドライブ]に[homepage]フォルダや[work]フォルダなどがあり、[homepage]フォルダの中にindex.htmlやmain_style.cssなどのファイルがあることを示しています。

ファイルのパス(path)もしくは絶対パスとは、ルートディレクトリからそのファイルに至る全てのディレクトリ名を順番に列挙することで、コンピュータ内のファイルの場所と名前を指定するものです。例えば、上の例でmoon.jpgというファイルの絶対パスは次のようになります。

\homepage\astro\images\moon.jpg

ここで、ディレクトリ名を区切る記号はOSによって異なり、Windowsでは"\"もしくは"¥"、Macintoshでは":"、Unix系のOSでは"/"が用いられています。インターネットは元々NEXTSTEPというUnix OSで開発されたため、HTMLでは"/"で区切ります。

相対パスと相対URL

相対パスとは、特定のディレクトリを起点としてファイルの相対的な位置を示すものです。相対パスでは、起点のディレクトリをピリオド1つ"."で、上の階層(親)のディレクトリをピリオド2つ".."で表します。前ページのディレクトリ構造の図を例に説明しましょう。例えば、ディレクトリ[/homepage/astro]を起点とすると同じディレクトリにあるabout_moon.htmlの相対パスは、

about_moon.html

もしくは

./about_moon.html

となります。実行ファイルをコマンドラインから実行する場合など、"/"が含まれていないとパス名として認識されない場合は後者を用います。このディレクトリの中の[images]ディレクトリの中にあるmoon.jpgの相対パスは

./images/moon.jpg

となります。このディレクトリの1つ上の階層のディレクトリにあるindex.htmlの相対パスは

../index.html

となります。2つ上の階層のディレクトリの中の[photo]ディレクトリにあるflower.jpgの相対パスは

../photo/flower.jpg

となります。

HTMLではURLとして相対パスを用いることができ、これを相対URLと呼びます。自サイト内のフォルダやファイルを参照する場合には、基本的に相対URLを用います。相対URLで記述しておけば、自分のパソコンで編集しているときも、サーバ上にアップロードした後も同じURLでリンクなどを記述することができます。

また、相対URLを

/index.html

のように"/"からはじめた場合、スキームと責任者部を省略したものと見なされます。例えば、スキームと責任者部がhttp://www.nasa.govの場合は、上の例は、

http://www.nasa.gov/index.html

と解釈されます。責任者部までのURLは、Webサイトのルートフォルダをあらわしているので、"/"以降の部分はルートフォルダからの相対的な位置を表しています。このようなURLをサイトルート相対パスといいます。サイトルート相対パスを用いれば、どの階層のファイルからも同じURLで同じファイルを参照できます。この方法は、そのサイトのホームページ(index.html)を参照する場合や、CGIでサーバ内の共有Perlへのパス(/usr/local/bin/perl)を参照する場合などでよく使われます。ここで、サイトルート相対パスは、ファイルをWebサーバにアップロードしてはじめて意味をなすことに注意してください。ファイルがローカルなパソコンにある場合は、ルートフォルダが存在しないため、サイトルート相対パスで指定しても無効となります。

URI

URLを拡張したものとしてURI(Uniform Resource Identifier:統一資源識別子)があります。URIもURLと同じく、httpやftpなどのスキームで始まり、次にコロン(:)が置かれ、その後にスキーム毎定義された書式でリソース(資源)を指し示します。対象となるリソースは、コンピュータ上のファイルだけでなく、人や会社、書籍なども含まれます。W3Cが2001年9月に発表したRFC3305では、URLという言葉はなくし、インターネット上のリソースに対しても全てURIと表現するとしています。

URLエンコーディング

RFC3936によると、URLで使用できる文字は次のとおりです。

予約語: / ? # [ ] @ ! $ & ' ( ) * + , ; =
非予約語a〜z A〜Z 0〜9 - . _ ~

ここで、予約語とは、URLで特定の目的に使われるために予約されており一般名称には使用できない文字のことをいいます。スキーム名・サーバ名・ドメイン名・フォルダ名・ファイル名・クエリー文字列・フラグメント識別子は非予約語を使って記述する必要があります。

上記のURLで使用できる文字以外の文字を使用したい場合は、その文字をパーセントエンコーディング(Percent-encoding)で記述すれば使用することができます。パーセントエンコーディングはRFC3986のSection 2.1で定義されており、URLエンコーディング(URL encoding)ともいいます。特に、クエリー文字列には空白や全角文字(ひらがな・カタカナ・漢字等)を使用したい場合があり、この場合はパーセントエンコーディングを行って記述します。

パーセントエンコーディングは次のようにして行います。まず、文字エンコーディングを決めます(Shift_JIS、EUC-JP、UTF-8など)。ここで、多くのWebアプリケーションではUTF-8が標準となっているため、UTF-8でエンコードするのが適切である場合がほとんどです。次に、エンコードした文字列を1バイト単位に区切り16進数で表し%記号の後に記述します。例えば、

  • みさと天文台

をUTF-8でエンコードして16進数で表し1文字毎に空白で区切って並べると、

  • E381BF E38195 E381A8 E5A4A9 E69687 E58FB0

となります。ですので、パーセントエンコードした結果は次のようになります。

  • %E3%81%BF%E3%81%95%E3%81%A8%E5%A4%A9%E6%96%87%E5%8F%B0

ページ先頭へ