URL統(tǒng)一資源定位符的完全解讀

URL(Uniform Resource Locator ,統(tǒng)一資源定位符)是瀏覽器尋找信息時(shí)所需的資源位置。通過(guò)URL這種因特網(wǎng)的標(biāo)準(zhǔn)化名稱,人類和應(yīng)用程序才能找到并使用因特網(wǎng)上大量的數(shù)據(jù)資源。本文將介紹URL的語(yǔ)法,Web客戶端支持的URL快捷方式,URL編碼和字符規(guī)則等等。
服務(wù)器資源名被稱為URI(統(tǒng)一資源標(biāo)識(shí)符),而我們常說(shuō)的URL,實(shí)際上是URI的一個(gè)子集,也是URI最常見(jiàn)的形式。除此之外,URI還包括URN(其通過(guò)名字來(lái)識(shí)別資源,與它們當(dāng)前所處位置無(wú)關(guān),現(xiàn)仍處于試用階段)。實(shí)際上HTTP應(yīng)用程序處理的只是URL,所以下面講的基本都是URL。
1. URL的語(yǔ)法
大多數(shù)URL語(yǔ)法都建立在以下9部分構(gòu)成的通用格式上,其中最重要的方案(scheme)、主機(jī)(host)和路徑(path):
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
方案(scheme):它會(huì)告訴負(fù)責(zé)解析URL的應(yīng)用程序應(yīng)該使用什么協(xié)議,其大小寫(xiě)無(wú)關(guān)。一般有http、https、ftp、mailto、telnet等等。例子:
主機(jī)與端口(host、port):主機(jī)標(biāo)識(shí)了因特網(wǎng)上能夠訪問(wèn)資源的宿主機(jī)器,可用主機(jī)名(域名)或IP地址表示;端口標(biāo)識(shí)了服務(wù)器正在監(jiān)聽(tīng)的網(wǎng)絡(luò)端口,對(duì)下層使用TCP協(xié)議的HTTP來(lái)說(shuō),默認(rèn)端口號(hào)為80。例子:http://115.156.216.106:3000
用戶名與密碼(user、password):有一些服務(wù)器需要用戶輸入用戶名和密碼才允許訪問(wèn)數(shù)據(jù)。若URL是FTP協(xié)議而沒(méi)有指定這兩者,瀏覽器會(huì)自動(dòng)插入“anonymous”和一個(gè)默認(rèn)密碼。例子:
路徑(path):說(shuō)明了資源位于服務(wù)器的什么地方,通常像一個(gè)分級(jí)的文件系統(tǒng)路徑。例子:
參數(shù)(params):向應(yīng)用程序提供它們所需的輸入?yún)?shù),以便正確地與服務(wù)器進(jìn)行交互,形式為key-value對(duì)列表,由“;”將其與URL其余部分分隔開(kāi)來(lái)。例子:
查詢字符串(query):可以通過(guò)查詢字符串來(lái)縮小所請(qǐng)求資源的范圍,形式同樣為key-value對(duì),之間用字符“&”分隔,由“?”將其與URL其余部分分隔開(kāi)來(lái)。例子:
片段(frag):表示一個(gè)資源內(nèi)部的片段,通常用于在頁(yè)面中設(shè)置“書(shū)簽”并實(shí)現(xiàn)頁(yè)內(nèi)跳轉(zhuǎn)。片段出現(xiàn)在URL的最右邊,前面有一個(gè)字符“#”。注意客戶端不會(huì)將片段發(fā)送到服務(wù)器,瀏覽器從服務(wù)器獲得整個(gè)資源后,會(huì)根據(jù)片段在頁(yè)內(nèi)跳轉(zhuǎn)到指定的位置。例子:
2. URL快捷方式
URL有兩種方式:絕對(duì)的和相對(duì)的。像上面列舉的都是絕對(duì)URL,包含了訪問(wèn)資源所需的全部信息。相對(duì)URL是一種簡(jiǎn)寫(xiě)方式,需要相對(duì)一個(gè)基礎(chǔ)URL進(jìn)行解析。
相對(duì)URL到絕對(duì)URL的轉(zhuǎn)換處理,首先是要找到基礎(chǔ)URL,一般可以顯示提供(比如HTML文檔定義一個(gè)標(biāo)簽顯式指定基礎(chǔ)URL),或者在封裝資源中提供(比如HTML文檔中的a標(biāo)簽鏈接,其基礎(chǔ)URL就是這個(gè)HTML文檔本身)。接著就是通過(guò)以下算法把相對(duì)URL轉(zhuǎn)換成絕對(duì)URL。
3. URL字符與編碼
通常來(lái)說(shuō),URL采用的是US-ASCII字符集,但是這有很多局限性,因此用一種“轉(zhuǎn)義”表示法來(lái)表示不安全字符,通過(guò)這種編碼機(jī)制來(lái)避開(kāi)各種限制。這種轉(zhuǎn)義表示法包含一個(gè)百分號(hào)“%”,后面跟著兩個(gè)表示ASCII字符的十六進(jìn)制數(shù)。例如URL中的“~”編碼成“%7E”,空格編碼成“%20”,“%”編碼成“%25”。此外URL還有一些字符用作保留字符,如%/.#?;:@&=等等,此處不再贅述。
URL是一種強(qiáng)有力的工具,可以用來(lái)命名所有現(xiàn)存對(duì)象,也可以很方便地包含一些新格式。但它并不完美,它們表示的是實(shí)際的地址而不是準(zhǔn)確的名字,這就意味著如果資源被移走了,URL也就失效了(404 not found)。URN就是為了應(yīng)對(duì)這種情況的,無(wú)論對(duì)象搬移到什么地方,URN都能為對(duì)象提供一個(gè)穩(wěn)定的名稱。當(dāng)然,URN背后的思想已經(jīng)提出一段時(shí)間了,但是從URL轉(zhuǎn)換成URN是一項(xiàng)巨大的工程,標(biāo)準(zhǔn)化工作的進(jìn)程非常緩慢,所以現(xiàn)在因特網(wǎng)資源仍以URL來(lái)命名,而且這種趨勢(shì)仍會(huì)保持相當(dāng)長(zhǎng)一段時(shí)間。
相關(guān)文章
解析網(wǎng)站URL設(shè)置在SEO方面的技巧及注意點(diǎn)
網(wǎng)站頁(yè)面的url是影響搜索引擎蜘蛛爬取的因素之一,這里我們就來(lái)解析網(wǎng)站URL設(shè)置在SEO方面的技巧及注意點(diǎn),需要的朋友可以參考下2016-06-09淺談網(wǎng)站URL的類型及SEO優(yōu)化點(diǎn)
無(wú)論是動(dòng)態(tài)還是所謂的靜態(tài)和偽靜態(tài)URL,網(wǎng)站的頁(yè)面地址設(shè)置一直是SEO人群們?cè)谝獾囊粋€(gè)重要方面,這里我們就來(lái)淺談網(wǎng)站URL的類型及SEO優(yōu)化點(diǎn),需要的朋友可以參考下2016-06-09URL構(gòu)成越簡(jiǎn)單越平常 百度越順暢 越容易正確生效
大家都知道網(wǎng)站的URL在營(yíng)銷型網(wǎng)站后期做優(yōu)化的時(shí)候是非常重要的,一般的URL包含模式(或稱協(xié)議)、服務(wù)器名稱(或IP地址)、路徑和文件名。先說(shuō)結(jié)論吧:url構(gòu)成(或者叫url規(guī)則)2016-03-08- 這篇文章主要介紹了整理HTML5中支持的URL編碼與字符編碼,URL方面對(duì)HTML5用到無(wú)刷新修改URL等功能的實(shí)現(xiàn)時(shí)可以借鑒,字符編碼則要注意BOM問(wèn)題,需要的朋友可以參考下2016-02-23
- 怎么避免網(wǎng)站大量重復(fù)URL被百度收錄?很多站長(zhǎng)發(fā)現(xiàn),自己的網(wǎng)站出現(xiàn)大量的重復(fù)收錄,這對(duì)萬(wàn)展有很大影響,該怎么避免網(wǎng)站中的網(wǎng)頁(yè)被重復(fù)收錄呢?請(qǐng)看下文詳細(xì)介紹2016-01-12
網(wǎng)站URL路徑該怎么做才能起到優(yōu)化seo的作用?
網(wǎng)站URL路徑該怎么做才能起到優(yōu)化seo的作用?網(wǎng)站的url路徑對(duì)權(quán)重也很重要,優(yōu)化url可以將權(quán)重集中于一個(gè)主路徑上,進(jìn)而獲取更好的搜索引擎的權(quán)重,該怎么優(yōu)化url呢?請(qǐng)看2015-12-10- 今天小編為大家?guī)?lái)了網(wǎng)站URL的SEO價(jià)值相關(guān)內(nèi)容的介紹,感興趣的朋友們可以跟著小編去下文了解一下哦2015-12-08
- 這篇文章主要介紹了簡(jiǎn)單介紹CSS中的URL工具,包括URL重寫(xiě)器和URL翻譯器等,需要的朋友可以參考下2015-05-19
- url格式的文件是一種比較常用的網(wǎng)頁(yè)文件格式,針對(duì)很多還不清楚url是什么文件格式以及url文件怎么打開(kāi)/用什么打開(kāi)的朋友們,本文就為大家針對(duì)URL進(jìn)行詳細(xì)的解答,有興趣的2015-02-05
- 這篇文章主要為大家介紹了Dedecms去掉URL中a目錄的方法,提供了后臺(tái)修改與sql語(yǔ)句批量替換兩種實(shí)現(xiàn)方法,是非常實(shí)用的技巧,需要的朋友可以參考下2014-12-27