URL を構成する要素

ほとんどの場合、「ドメインを購入しました」や「画像は別のサイトでホストされています」など、厳密には正しくなくても問題ありません。ただし、コンテキストによっては、より正確にする必要があります。たとえば、Cookie を扱う場合は、サイトとオリジンの違いを理解する必要があります。

URL 部分の名前は、JavaScript API も定義する標準で指定されています。

  • URL 標準では、エンジニアが相互運用可能なウェブブラウザを構築できるように、URL と関連コンセプトが定義されています。
  • 標準の URL API コンポーネントは、URL 文字列の一部(スキームオリジンなど)にアクセスするためのメソッドを定義します。

このドキュメントでは、HTTP または HTTPS の URL 文字列で使用されるさまざまな用語について説明します。ファイル URL やデータ URL などの他のタイプの URL は対象外です。hostorigin などの用語は、正確な定義が本質的に複雑であるため、このドキュメントでは、完全な説明を試みるのではなく、例と URL 標準へのリンクを提供します。

JavaScript を使用して、URL API で定義された URL コンポーネントの名前を取得できます。次に例を示します。

let url = new URL('https://foo.com.au:1234/bar/foo.html#bar');
console.log(url);

URL アナライザ

以下の URL を編集して、URL 文字列の部分の名前を確認します。url-parts.glitch.me で別のタブで開くこともできます。


URL の各部分の名前は、以下にアルファベット順で示します。

国別コード トップレベル ドメイン(ccTLD)

ISO 3166-1 の国コードリストで定義されているトップレベル ドメイン

  • https://example.org.au の場合、ccTLD は au です。
  • https://example.io の場合、ccTLD は io です。

ドメイン名

HTTP または HTTPS URL の部分(ドットで区切られている部分): スキームの後の部分で、パスまたはポート(指定されている場合)の前の部分。ドメイン名の各部分はラベルと呼ばれます。

URL ドメイン名
https://example.github.io/path example.github.io
https://support.example.org.au:443 support.example.org.au

有効なトップレベル ドメイン(eTLD)

Public Suffix List のエントリ(TLD と、複数の部分を持つ eTLD の場合はその下位のドメイン(2 番目、3 番目など)を含む)。

  • 例: comcom.augithub.iosa.edu.auschools.nsw.edu.au

これらの例のような「パブリック サフィックス」は、ドメインを登録できる名前です。Public Suffix List は、既知のすべての公開サフィックスのリストであり、頻繁に更新されます。ChromiumFirefox などのブラウザは、ビルドでこのリストを使用します。

eTLD+1

登録可能なドメインをご覧ください。

eTLD と、その前に付くサブドメイン。

  • 例: example.comexample.org.auexample.github.ioexample.sa.edu.auexample.schools.nsw.edu.au

ファイル名

URL 標準では定義されておらず、URL API の一部でもありません。URL がディレクトリ構造に直接マッピングされるという(多くの場合誤った)前提に基づいて、URL のパス以外の最終部分を指すためによく使用されます。

たとえば、https://example.com/dir/file.html では、file.html がファイル名として参照される場合があります。

ファイル名の値は、ブラウザがアセットをダウンロードする際にアセットに名前を付けるためにも使用されます。たとえば、https://example.com/images/image.jpg は通常、ローカルに image.jpg に保存されます。

Fragment

URL の末尾にある # 文字の後の文字列。フラグメント識別子を提供します。

  • たとえば、URL https://example.com/cats#tabby のフラグメント識別子値は tabby です。

# を含む部分は、ハッシュまたはアンカーと呼ばれます。テキスト フラグメントにリンクしてハイライト表示することもできます。

ハッシュは、フラグメントではなく URL API によって返されます。

完全修飾ドメイン名(FQDN)

ウェブサイトまたはサーバーの完全なアドレス。IP アドレスにマッピングされます。

URL FQDN
https://example.com:1234/cats example.com
https://api.example.github.io api.example.github.io

URL の FQDN には、デフォルト以外のポートが使用されている場合でも、ポートは含まれません。

ハッシュ(またはアンカー)

URL の末尾にある「#」文字の後に続く文字列で、フラグメント識別子を提供します(一部のコンテキストでは「アンカー」と呼ばれます)。

# を除く部分はフラグメントと呼ばれます。テキスト フラグメントにリンクしてハイライト表示することもできます。

ハッシュは、フラグメントではなく URL API によって返されます。

ホスト

URL 標準で定義されているように、ホストはドメイン名、IP v4 アドレス、IPv6 アドレス、不透明ホスト、空のホストにすることができます。

  • URL 標準の host の定義には、ポートは含まれていません。
  • URL.host には、ポートがスキームのデフォルトの場合を除き、ポートが含まれます。
  • URL.hostname にはポートは含まれません。
URL URL.host
https://www.example.com:443/cat www.example.com
// 443 is the default port for the scheme
https://www.example.com:1234/cat www.example.com:1234
https://cat.example.github.io cat.example.github.io

ホスト名

ホスト名は JavaScript URL API によって定義されますが、URL 標準では定義されません。詳細については、ホストの表現をご覧ください。

URL.hostname は、ポートのないホストを返します。

URL URL.hostname
https://www.example.com:443/cat www.example.com
https://www.example.com:1234/cat www.example.com
https://cat.example.github.io cat.example.github.io

出発地

URL 標準では origin を定義し、背景の HTML 標準にリンクしています。

HTTP または HTTPS URL の場合、URL.origin はスキーム、ホスト、ポートを返します(ポートがスキームのデフォルトの場合を除く)。

URL URL.origin
https://www.example.com:443/cat https://www.example.com
https://www.example.com:1234/cat https://www.example.com:1234
https://cat.example.github.io https://cat.example.github.io

パラメータ

検索パラメータをご覧ください。

パスワード

ユーザー名を参照。

パス名

HTTP または HTTPS URL の場合は、ドメインとポート(定義されている場合)の後の部分(filename(定義されている場合)を含むが、検索文字列ハッシュは含まない)。

URL URL.pathname
https://example.com [empty string]
https://example.com:8000/search?q=tabby /search
https://example.github.io/cat/pattern#tabby /cat/pattern
https://example.github.io/README.md /README.md

「パス」は、ファイル名のないパス名を指すために使用されることがあります。たとえば、URL https://example.com/cat/pattern/tabby.html の場合、「パス」は /cat/pattern です。

ポート

URL の : の後の番号。ネットワーク ポートを識別します。たとえば、URL https://example.com:1234/tabby の場合、ポート番号は 1234 です。

ポート番号は 16 ビットの符号なし整数(0 ~ 65535 の整数)にする必要があります。

HTTP URL の場合、デフォルトのポートは 80 です。HTTPS の場合、デフォルトは 443 です。デフォルト以外のポートを使用する場合を除き、URL でポート番号を指定する必要はありません。

ポートがスキームのデフォルトの場合、API は空の文字列を返します。

URL URL.port
https://example.com // empty string
https://example.com:443/foo // empty string: port is default for scheme
https://www.example.com:1234/foo 1234

プロトコル

スキーム、その後に :(例: http:https:)。

protocol は URL API から取得できますが、scheme は取得できません。

クエリ(または「クエリ文字列」)

URL の検索部分(先頭の ? を除く)。

登録可能なドメイン

  • comorg などの単一部分の eTLDTLD に対応する eTLD)を含む URL の場合は、ドメインとその前のセカンドレベル ドメインexample.comexample.org など)。
  • 3 レベル登録のみが許可される 2 つの部分からなる eTLD の URL(パブリック サフィックス リストのエントリ、例: com.augithub.io)の場合、2 つの部分からなるトップレベル ドメイン(「パブリック サフィックス」)と、その直前の 3 レベル ドメイン名。たとえば、example.org.auexample.github.io です。
  • 3 つ以上の部分で構成される eTLD の場合は、eTLD とその前のドメイン。

Scheme

URL へのリクエスト時にネットワーク プロトコル(またはユーザー エージェントが行うアクション)を定義する URL の部分(:// より前)。たとえば、https スキームの URL へのリクエストは、HTTPS プロトコルを使用して行う必要があります。ネットワーク プロトコルに対応していない filemailtogit などのスキームを含む URL へのリクエストの場合、動作はユーザー エージェントによって異なります。たとえば、ユーザーが mailto リンクをクリックすると、ほとんどのブラウザは、リンクの href URL の値を使用して、デフォルトのメール アプリケーションを開きます。

pathnameの後に指定される、パラメータとその値を表す一連の Key-Value ペア。末尾に疑問符が付いています。

URL URL.search
https://example.com/cats?pattern=tabby&mood=bonkers ?pattern=tabby&mood=bonkers
https://example.com/cats:443?pattern=tabby ?pattern=tabby

query または「クエリ文字列」は、先頭の ? のない search を指します。

検索パラメータもご覧ください。

検索パラメータ

検索文字列(または「クエリ文字列」)で渡されたデータ項目を参照します。

  • たとえば、https://example.com/cats?pattern=tabby&mood=bonkers の場合、検索文字列には pattern=tabbymood=bonkers の 2 つのパラメータがあります。

第 2 レベルのドメイン

トップレベル ドメインの前のドメイン。

  • URL https://www.example.com の場合、第 2 レベル ドメインは example.com で、トップレベル ドメイン com のサブドメインです。

  • https://example.org.au の場合、トップレベル ドメインは au、第 2 レベル ドメインは org、第 3 レベル ドメインは example です。この例では、org.auau のサブドメインで、example.org.auorg.au のサブドメインです。

サイト

サイトは、同一サイトスキームを含む)とスキームなしの同一サイトとともに、HTML 標準で定義されています。

サイトは、URL 標準または JavaScript URL API で定義されていません。

このコンテキストでは、次のようになります。

  • https://example.com などの単一部分の eTLD を含む HTTP または HTTPS URL の場合、サイトは scheme、eTLD、その前のラベルで構成されます。たとえば、URL が https://www.example.com/cat の場合、サイトは https://example.com です。(この URL の場合、eTLD はトップレベル ドメインと同じです)。
  • co.ukgithub.iosa.edu.au などのマルチパート eTLD の場合、「サイト」は schemeeTLD、その前のラベルで構成されます。たとえば、URL が https://cat.example.co.uk/tabby の場合、サイトは https://example.co.uk で、https://www.education.sa.gov.au の場合、サイトは https://education.sa.gov.au です。
URL サイト(スキームと eTLD+1 を含む)
https://cat.example.com/tabby (「https」、「example.com」)
https://cat.example.co.uk/tabby ("https", "example.co.uk")

origin とは異なり、site にはport は含まれません。

サブドメイン

上位レベル ドメイン内のドメイン。

comorg など、単一部分のトップレベル ドメインを持つサイトの場合は、トップレベル ドメインの前の部分(各部分はドットで区切ります)。

  • www.example.comexample.com のサブドメインです。
  • support.api.example.orgapi.example.org のサブドメインであり、api.example.orgexample.org のサブドメインです。

サードレベルの登録のみが許可される 2 つの部分からなる eTLD(Public Suffix List のエントリ(co.ukgithub.io など))の場合、サブドメインはサードレベルの前に来るドメイン名の部分です。

  • 例: cat.example.co.ukexample.co.uk のサブドメインです。

テキスト フラグメント

ページ内のテキストの範囲へのリンクとハイライト表示を可能にするフラグメントの一種。ユーザーがテキスト フラグメントを含むリンクをクリックすると、ブラウザはページ内のテキストを検索し、スクロールしてハイライト表示しようとします。

テキスト フラグメントは :~:text= で始まり、その後に検索キーワードが続きます。

たとえば、このページでテキスト「fragment」が最初に出現する場所にリンクするには、URL https://web.dev/articles/url-parts#:~:text=fragment を使用します。

詳しくは、テキスト フラグメントをご覧ください。

トップレベル ドメイン(TLD)

ルートゾーン データベースに登録されているドメイン名(comorg など)。一部のトップレベル ドメインは国別コード トップレベル ドメインです(uktv など)。

HTTP または HTTPS URL の各部分を説明する場合、TLD は最後のドットの後に続くドメイン名です。

  • https://example.org の場合、URL の最上位ドメインは org です。
  • https://example.org.au の場合、URL の最上位ドメインは au で、org2 番目のレベルのドメインです(org は最上位ドメインでもあります)。org.au は 2 つの部分からなる eTLD です。

eTLDPublic Suffix List には、1 つ、2 つ、または複数の部分を持つドメインが含まれているため、TLD は eTLD にもなり得ます。次に例を示します。

  • https://example.com の場合、URL の eTLD は com で、これは TLD でもあります。

ユーザー名

URL の先頭にユーザー名とパスワードを指定することもできますが、セキュリティ上の理由から非推奨となっており、多くの場合無視されます。

たとえば、https://user123:password1@example.com の場合、ユーザー名は user123 です。ユーザー名(とパスワード)は平文で、暗号化されていないことに注意してください。ユーザー名に : または @ の記号が含まれている場合は、それぞれ %3A%40 に URL エンコードする必要があります。


補足説明