URL 結構分析

admin發表於2019-03-22

關於URL多數人應該不會陌生,對它的直觀印象就是網址。

本文所要介紹的內容就是我們所熟悉的網址,對其結構進行詳細分析。

特別說明

(1).當前較為規範的技術文件一般不再將網址稱為URL,而是統一使用URI替代。

(2).URL並不僅僅包括網址,本文僅介紹網址的結構。

關於URI的概念本文不做介紹,具體可以參閱URI、URL與URN區別一章節。

可能不少朋友認為URL結構這麼簡單,還有什麼好介紹的,這麼想的朋友一般有兩種情況:

(1).確實對URL結構非常瞭解,當然感覺非常簡單。

(2).對其沒有太多的瞭解,且由於經常使用,所以感覺很簡單。

的確,URL的結構確實非常簡單,只是有些朋友沒有注意到一些細節,所以本文進行詳細介紹。

首先看一個URL例子:

[HTML] 純文字檢視 複製程式碼
http://www.softwhy.com/forum.php?mod=forumdisplay&fid=119

上面就是我們經常見到的URL網址的一個簡單例子,它有幾個部分構成,下面會進行詳細介紹。

URL的結構組成:

[HTML] 純文字檢視 複製程式碼
schema://host[:port]/path/.../[?query-string][#anchor]

結構分析如下:

(1).schema:URL的協議部分,當前網址的兩種協議分別是http與https。

(2).host:伺服器部分,站點總要在一個伺服器中執行,此部分規定了伺服器的網路地址。

(3).port:埠部分,比如80埠,當然也可以是其他埠,很多朋友可能會有這樣的疑問,為什麼網址中很少看到埠,因為預設都是使用80埠,此埠可以省略。

(4).path:請求具體網址的路徑,後面會通過例項分析。

(5).query-string:查詢字串,通過它可以向伺服器傳遞一些引數,然後利用這些引數進行查詢一些資料。

(6).#anchor:錨部分,通過它可以實現業內定位功能,具體參閱HTML 錨點定位一章節。

為了加深一下對結構各部分的理解,下面對一個URL進行一下剖析:

[HTML] 純文字檢視 複製程式碼
http://www.softwhy.com:80/forum.php?mod=forumdisplay&fid=119

(1).schema:http,為了安全,當前越來越多的網站採用https協議。

(2).host:www.softwhy.com,域名會解析繫結到一個IP,此IP對應一個伺服器,那麼就可以通過此域名找到站點伺服器,也可以直接就是IP地址(是否可以具有由服務商決定)。

(3).port:上述網址埠是80,預設可以省略,這也是絕大多數網址都沒有註明埠的原因。

(4).path:/forum.php,請求的資源在伺服器中的地址,會涉及到路徑問題。

(5).query-string:?mod=forumdisplay&fid=119,以鍵值對形式存在,可以給伺服器傳遞一些引數。

關於錨的部分就不掩飾了,具體可以參閱上文所推薦的文章,裡面有詳細的介紹,HTML 錨點定位一章節。

最後再附加說明一點,當前眾多網站,為了SEO優化,對搜尋引擎更加友好一點,都會將上述帶有查詢字串的動態網址轉換為靜態網址,看如下例子:

[HTML] 純文字檢視 複製程式碼
forum.php?mod=viewthread&tid=1394

上面是一個動態網址,可以將其轉換為HTML靜態方式:

[HTML] 純文字檢視 複製程式碼
thread-1394.html

在搜尋引擎與瀏覽者眼中,這是一個靜態頁面,當實際向伺服器發起請求的時候,還是會對映到對應的動態頁面請求資料,大致是這個原理,本文不多介紹,感興趣的朋友可以自行在網上查詢相關知識。

相關文章