URLの構成について理解してみる

2024年 1月15日 Posted 野々瀨(フロントエンドエンジニア)

URLは部分ごとに名称と意味がありますが、似たような名前がいくつかあります。ここでは、URLの構成について改めて理解を深めていこうと思います。

URLとは

URLとは、「Uniform Resource Locator」の略称で、インターネット上にあるWebページやファイルの場所を表すアドレス(住所)の文字列です。例えば「https://www.example.co.jp/foo/bar/baz.html」というようなもので、ブラウザーでいうとアドレスバーに記述されている文字列です。

URNとは

URNは、「Uniform Resource Name」の略称で、インターネット上のファイルそのものの名前です。ファイルそのものの名前ではありますが、ファイル名というわけではなく、識別するためのいわゆるシリアル番号のようなものです。URNは「urn:<NID>:<NSS>」という書式で表しますが、通常インターネット上では目に見える形で表現されることはありません。

URIとは

URIは、「Universal Resource Identifier」の略称で、URLとURNの総称です。RFC(Request for Comments)で仕様が定義されています。

URLとURNの総称ではありますが、URN自体が通常インターネット上では目に見える形で表現されないため、URI≒URLとしても問題はありません。

構成

URLは次のように構成されています。

英語名称日本語名称説明
Scheme スキーム 対象となるリソース(ファイルなど)をリクエストする際に使用される種類(プロトコル)を指します。Webサイトは「http」や「https」、FTPは「ftp」という感じの種類(プロトコル)があります。
Host,Fully Qualified Domain Name (FQDN) ホスト完全修飾ドメイン名 ホスト名やサブドメインからトップレベルドメインまでの文字列を指します。
Path パス ホスト以降のディレクトリー名やファイル名までの文字列を指します。
Query String クエリ文字列 パス以降の?に続くフラグメント直前までの文字列を指します。識別名称と代入する値を=でつないだ書式で、これをパラメーターといいますが、URLに付くのでURLパラメーターともいいます。
Fragment フラグメント ファイル名の後のハッシュに続く文字列を指します。
Origin オリジン スキームからポートまでの文字列を指します。
Authority オーソリティー ユーザー情報からポートまでの文字列を指します。
User Info ユーザー情報 Basic認証やDigest認証に必要な認証情報の文字列を指します。
User Name ユーザー名 Basic認証やDigest認証のユーザー名を指します。
Password パスワード Basic認証やDigest認証のパスワードを指します。
port ポート番号 通信の種類で、コンピューター上の部屋番号のようなものです。一般的にスキームに応じて初期で使われるポート番号がある程度決められていることが多く、例えばhttpなら80、httpsなら443、ftpなら20といった感じで割り当てられていることが多いです。
Host Name ホスト名 ネットワーク上で特定のコンピューターを識別するための文字列を指します。FQDNの一番左側に指定しますが省略されることもあります。ホスト名がwwwであればWeb、ホスト名がmailであればメールといった感じでサーバーとしての役割ごとにだいたいは決められています。なお、ホスト名はドメイン名の一部ではないことに注意してください。
Sub Domain サブドメイン ドメイン名に対してサブとしての識別を行うための文字列を指します。ホスト名を任意の名前として決めてドメイン名を付けた文字列となります。
Domain Name ドメイン名 ホスト名以降からポート番号直前までの文字列を指します。ドットで区切ったレベルで構成されていて、右から数えていきます。
Top Level Domain (TLD) トップレベルドメイン ドメイン名の右から一つ目のレベルを指します。gTLDやccTLDといった種類に分けられています。.jpは日本、.comは商業組織といった感じです。
2nd Level Domain (SLD) セカンドレベルドメイン ドメイン名の右から二つ目のレベルを指します。基本的には任意の名前で指定できますが、トップレベルドメインが.jpの場合、.coや.or、.ac、.tokyoといった決められたセカンドレベルドメインがあります。
3rd Level Domain (3LD) サードレベルドメイン ドメイン名の右から三つ目のレベルを指します。任意の名前で指定できます。

【余談】スラッグとは

スラッグ(Slug)とは、パスの最後の部分を指す固有の識別名称のことです。ファイル名やディレクトリー名に関係なく最後の部分を指します。例えばパスが「/foo/bar/baz.html」であれば「baz.html」、パスが「/foo/bar/」や「/foo/bar」であれば「bar」がスラッグです。

【余談】トレイリングスラッシュとは

トレイリングスラッシュ(Trailing Slash)とは、URLの末尾に付けるスラッシュのことです。末尾のスラッシュは通常、ディレクトリーの識別マークとして使用されます。URLがオリジンまでの場合は、最後にスラッシュがあってもなくても同じディレクトリーとして認識されます。例えば「https://www.example.co.jp」は「https://www.example.co.jp/」と同じことになります。

パスの場合はスラッシュで終わっていない場合に、通常はファイルとして指します。そのため、本来はディレクトリーとして指してほしいところが、スラッシュがないことでファイルとしてアクセスしてしまいます。ただし多くの場合は、サーバー側でファイルが見つからない場合はスラッシュを付けてディレクトリーとしてアクセスを試みてくれます。こういった混乱を避けるためにも、ディレクトリーとして指定する場合はしっかりと末尾にスラッシュを付けた方がよいでしょう。