URLの構造

URLの構造についてまとめました。
自分が分かるように引用してまとめたので間違いなどがあれば指摘してください。

# URLとは
URLは、「Uniform Resource Locator（ユニフォームリソースロケータ）」の略で、日本語に訳すと「統一資源位置指定子」となります。「ホームページアドレス」とも呼ばれます。
インターネット上にあるホームページやファイルの位置や情報、通信方法を表したものです。
簡単にいうと「インターネット上の住所」のようなもの。

もともと、コンピューターはインターネット上の住所を数字だけの「IPアドレス」で認識しています。
そのIPアドレスを人間にとってわかりやすく文字で表した上で、住所の中のどこにアクセスしているのかまでわかり、さらに通信プロトコルを指定したものがURLです。

### ドメイン
ドメインとは、IPアドレスを「sample-note.co.jp」などの文字列にしたものです。
インターネットに接続しているコンピューターはすべて、パブリックIPアドレス、IPv4アドレス（例: 173.194.121.32）またはIPv6アドレス（例: 2027:0da8:8b73:0000:0000:8a2e:0370:1337）でたどり着くことができます。
IPアドレスは数字の羅列になるので、それだけだとユーザーが覚えることが難しかったり、どんなサービスか分かりづらかったりしますが、英数字・日本語などを含むドメインにすることによってそれが解消されます。

ドメインとIPアドレスは、DNS（ドメインネームシステム）というところで紐づけの管理がされています。なので、新規でドメインを取得したさいにはそのドメインを使いたいサイトのIPアドレスと、ドメインをDNSで設定する作業が必要になります。ちなみに、1つのドメインに複数のIPアドレスを紐づけすることも可能です。
![スクリーンショット 2023-06-04 15.44.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2785154/af6119f1-73c5-1678-2ca3-18be28c27dcc.png)

ドメインにもパーツがあり、「.（ドット）」で区切って一番右から順番にトップレベルドメイン、セカンドレベルドメイン、サードレベルドメインになります。

**・トップレベルドメイン:** ドメインの最後にある「jp」や「com」などの文字列のこと（hogehoge.co.jpだと「jp」がトップレベルドメイン）
トップレベルドメインには様々な種類があります。国別トップレベルドメイン（ccTLD）と、分野別トップレベルドメイン（gTLD）に大きく分けられます。例えば、日本のccTLDは「jp」です。

**・セカンドレベルドメイン:** ドメインの中で後ろから2番目の要素のこと。このレベル（階層）は単に順番のことで、トップレベルドメインによって、セカンドレベルドメインは変わってきます。（hogehoge.co.jpだと「co」がセカンドレベルドメインになり、hogehoge.comだと「hogehoge」がセカンドレベルドメインになる

**・サードレベルドメイン:** サードレベルドメインは、セカンドレベルドメインの前に属しているドメインで、存在しない場合もあります。（hogehoge.co.jpだとhogehogeがサードレベルドメインになる。ドメインが3つに分かれていないとない）


### 簡単にwebの通信の仕組み
URLの話をする前に、まず簡単にwebの通信の仕組みと用語について説明します。

**よく出てくる用語**
⚫︎ブラウザ: webページを表示させるソフト。Googlec ChromeやInternet Explorerなどのソフトである。
⚫︎（web）サーバ: webページを公開する側のシステム
⚫︎（web）サイト: 実際にはwebページが1ページのみ独立して存在することは少なく、複数のページが組み合わさって一つの役割（企業の紹介、サービスの提供など）をなしている。そのひとまとまりに公開されているwebページ群をwebサイトという。
⚫︎HTTP: webページを表示させるための通信の仕様（プロトコル）の名前。HTTP 2.0などというのはバージョンが新しくなるという意味。HTTPSは暗号化された（セキュアな）HTTP通信という意味。

**webの通信の流れ**
1.ブラウザがサーバにアクセスし、こういうコンテンツが欲しいと要求する＝リクエスト
2.サーバからコンテンツのデータをブラウザに返す＝レスポンス
3.ブラウザはそれを受け取って表示する＝レンダリング
![スクリーンショット 2023-06-04 13.36.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2785154/580d4488-3fe4-1b3d-2487-36dcc2a74e02.png)
リクエストの内容を指定するのがURLです。

## URLを構成する要素
以下は簡単なURLの例です。
![スクリーンショット 2023-06-04 13.04.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2785154/399b5568-681b-4aea-9a46-94048688288c.png)

### スキーム
スキームは、「枠組み」や「構造」を意味します。「プロトコル」というルールを規定するものです。
上図の場合では、「このURLは“http”のルールを使って通信する」ことを表しています。

「プロトコル」とは、対象となる事項を実行するためのルールのことです。URLは通信をするときに使うので、「通信プロトコル」とも呼びます。
簡単にいうと、「インターネット上で通信をするとき、このルールに従いましょう」という取り決めのことを指します。
Webでは「http」または「https」で始まります。

**「http」と「https」**
「http」とは、「Hyper Text Transfer Protocol（ハイパーテキスト・トランスファ・プロトコル）」の略で、WebサーバーとWebブラウザがデータを送受信するときに使う通信上のルールのことです。

例えば、Google ChromeのWebブラウザから「http」という通信プロトコルを使ってWebサーバーに要求を出すことで、そのページを表示させて利用できるようになります。

「https」は「Hyper Text Transfer Protocol over (Secure Socket Layer / /Transport Layer Security)」の略で、「http」にデータを暗号化する機能がついたものです。
「Secure Socket Layer」「transport layer security」はそれぞれ「SSL」と「TLS」と省略し、どちらもデータを暗号化して送受信する技術のことを指します。

「SSL」と「TLS」の技術でデータを暗号化することにより、個人情報などの漏洩を防ぎます。特に、個人方法やパスワードを入力するようなホームページで主に使用されています。


### FQDN:ポート番号
通信先のWebサ-バ-のFQDN(ホスト名、ドメイン名)とポ-ト番号を表します。
FQDNとは、Fully Qualified Domain Nameの略で、直訳すると「完全修飾ドメイン名」です。単なるドメイン名ではなく、「完全に修飾」されたものです。何かを「省略」していないドメイン名と言い換えることができるでしょう。その何かとはホスト名のことです。

**ホスト名**
ホスト名は、ネットワークに接続されたホスト（機器やサーバー）の名前を指します。通信する際に、特定のホストを識別するために使います。
この「ホスト名」は、「ドメイン」とほとんど同じ意味だと捉えて構いません。人間が管理しやすいように、前述したIPアドレスを文字に置き換えているの文字列が「ホスト名」と「ドメイン」です。

ホスト名もドメインも、どちらも登録者の任意で自由に決めることができますが、ホスト名ではよく「www」が利用されています。「www」は「World Wide Web」の略で、「世界中に張り巡らされたクモの巣」を意味します。
ホスト名は、代表的な「www」にするか、自由に設定するか、必要がなければ省略することもできます。

**ポート番号**
ポート番号は、コンピュータで、実際に通信される出入口の番号です。URLやIPアドレスが住所のようなもので、その家には玄関がいくつもあるとイメージしてください。
各玄関には番号が振られています。これがポート番号です。
これらのポート番号のうち、特定のプロトコルで使用するように決められているものがあります。これを**ウェルノウンポート**と呼びます。
![スクリーンショット 2023-06-04 15.19.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2785154/2094847e-6548-9621-6371-6eb1c4f527a1.png)
URLでサイトに接続する際、原則としてドメイン名の後に:（コロン）を付けてポートを指定する必要がありますが、ウェルノウンポートであればそれを省略することができます。そのため、一般的なウェブサイトのURLにはポート番号がついていません。
ポ-ト番号を省略した場合は「http」なら「80番」、「https」なら「443番」を使用して通信を行います。



### パス名
パスとは、ドメイン名のあとにスラッシュ（/）に続けて表記される、サーバ内のフォルダ名とそのフォルダの位置を表す文字列のことです。

このサーバ内のフォルダを更に「/」で分けたものを「ディレクトリ」と呼び、2つ目以降のディレクトリをサブディレクトリといいます。
ページをカテゴライズする際に用いられ、ホームページの場合、複数のwebページを持っているため、それを分類するための記述です。

### コンテンツ名（ファイル名）
コンテンツのファイル名を表します。
URLの末尾に配置される一番小さなファイルを表し、そのURLの中では一番奥のゴールとなる部分です。

### パラメ-タ-（クエリ文字）
動的ページ（プログラムによって動的に生成されているページ）のURLではパス名の後に「?」で始まる文字列がある場合があります。これはサーバのプログラムに対して、こんなコンテンツが欲しいと指示する文字列です。（たとえばサイト内検索ページの場合、検索キーワードを指定するなど。）

パラメータとはWeb上のサーバーで動いているプログラムに情報を送信するために、URLの末尾に付け加える変数（文字列）の仕組みのことを指します。
上図のように、末尾に付与された”?”以降の文字列をパラメータと呼びます。

そもそもパラメータとは、サーバーに情報を伝えるために外部から付与される変動要素のことでプログラムで処理するパラメ-タ-を渡す場合に使用します。

「?」 をURLの末尾につけ、その次に「パラメーター（キー）＝値」を記述します。
1つのパラメータにつき、入れる値は1つまでとなり複数のパラメーターをつけたい場合は「&」を使用します。
```:例
http://〇〇.jp/?□=△&■=▲
```
パラメータの後ろに「＃」をつけるとページ内リンクを挿入するができます。
```:例
http://〇〇.jp/?▢=△#◇◇
```

別名として、次のような呼び方をされるケースも少なくありません。
・URLパラメータ（URLパラメ-タは「；名前=値&名前=値・・」形式で渡されます。）
・クエリ文字列（クエリ文字列は「?名前=値&名前=値・・」形式で渡されます。）

パラメータには、使用目的によって異なる種類のパラメータを使います。「アクティブパラメータ」と「パッシブパラメータ」の2種類があります。

**アクティブパラメータ**
アクティブパラメータとは、サーバーに渡したURLパラメータの値に伴い、ウェブコンテンツの表示内容が変わるタイプのパラメータのことです。
ECサイトやブログの「絞り込み検索」といった動的ページで主に使用します。例えば、アパレルのショッピングサイトなら、URLの末尾に販売商品に紐づくパラメータを付与することで、ユーザーに求める商品を絞り込みながら表示させることが可能です。

**パッシブパラメータ**
パッシブパラメータとは、情報収集やデータ解析に使うパラメータのことです。
アクティブパラメータとの違いとして、パラメータの効果・影響が、直接画面上に現れません。よって、「ダミーパラメータ」とも呼ばれます。主にGoogleアナリティクスなどのウェブ解析ツールやマーケティングオートメーションツールで、アクセス経路やユーザーの属性を把握する目的で使用されます。



# 参考記事
https://airteamlab.jp/posts/1133/#i-4

https://www.marketechlabo.com/url-structure-for-marketer/#URL%E3%81%A8%E5%90%91%E3%81%8D%E5%90%88%E3%81%86%E5%BF%85%E8%A6%81%E6%80%A7

https://www.willgate.co.jp/promonista/url-parameter/#URL-2

https://hitonote.jp/column/webmarketing/2056/

https://ferret-plus.com/8736?page=2

https://www.seohacks.net/blog/13330/