本文講述URL這個司空見慣的Web元素中包含的大量不應為忽視的知識,準則與最佳實踐。需要注意的是W3C建議使用URI取代URL一說。
關于URL的一些準則
首先是與URL有關的一些準則。
一個URL必須唯一地,永久地代表一個在線對象
URL的最基本的使命是唯一地代表Internet上的一個對象,URL必須和Internet上的對象一對一匹配。然而現(xiàn)實中,這很難實現(xiàn),我們經(jīng)??梢酝ㄟ^多個URL到達同一個頁面,比如,http://mysite.com/product/tv和http://mysite.com/product?name=tv,這種情形在現(xiàn)代CMS中更是比比皆是,針對這個問題,SEO moz有一篇很好的文章,講到了如何使用Canonical URL機制解決站點中的重復URL問題。
URL應該是永久的,這就要求你在站點上線前就非常嚴謹?shù)匾?guī)劃URL。如果有一天,你不得不更改URL,一定使用HTTP301機制,告訴瀏覽器和搜索引擎,你的那個URL所代表的對象,已經(jīng)搬遷到新地址,這個機制可以保證你舊地址所獲得PR不會被清零。
盡可能用戶友好
這是URL設計的根本,你的URL應該為最終用戶而設計。保持URL友好的一個好辦法是在保證可讀性的同時讓它盡可能短。比如/about就好過/about-acme-corp-page,當然,保持簡短不能犧牲可讀性,/13d2一類的地址短則短矣,但并不友好。如果要在Twitter,F(xiàn)acebook一類的社會媒體網(wǎng)絡分享你的URL,可以使用Bit.ly一類的網(wǎng)址縮短工具,但這種工具產(chǎn)生的縮短URL并不友好,在Wordpress一類的CMS中,可以使用PrettyLink Pro或Short URL plugin一類的可控制的地址縮短插件。
URL的設計切忌使用一些對用戶來說沒有意義的內(nèi)容,比如數(shù)據(jù)庫的ID號,/products/23這樣的URL地址對用戶是極不友好的,應當使用/products/ballpoint-pen一類的地址。
保持一致性
站點內(nèi)的所有URL必須保持一致的格式和結構,這樣可以為用戶帶來信任感,如果你必須更改URL格式和結構,需要使用HTTP 301機制。
可預測的URL
這也是URL一致性的一個表現(xiàn),如果你的URL擁有很好的一致性,用戶可以根據(jù)URL猜測別的內(nèi)容的URL,假如/events/2010/01指向2010年1月份的日程內(nèi)容,那
/events/2009/01應當指向2009年1月的日程。
/events/2010應當指向2010年全年的日程。
/events/2010/01/21應當指向2010年1月21日的日程。
URL中的關鍵詞
URL中應該包含本頁重點內(nèi)容的關鍵詞,比如/posts/2010/07/02/trip-best-buy-memory-cards一類的URL本身就是對頁面內(nèi)容的反應。在URL包含重點內(nèi)容關鍵詞,也可以提高SEO性能。SEO的一個很重要的原則就是,在URL地址中包含內(nèi)容關鍵詞。
關于URL的技術細節(jié)
下面說的是有關URL的一些技術細節(jié)。
URL不應包含.html,aspx,cfm一類的后綴
這類信息對最終用戶是沒有意義的,卻占了額外的空間,一個例外是.atom,.rss,.json一類的特殊地址,這類地址是有特別的意義的。譯者注:在某些虛擬主機式Web服務器,這種做法未必現(xiàn)實。
URL不應包含WWW部分
WWW部分并不包含任何意義,是一個額外的負擔,不友好。可以使用HTTP 301機制,將www.domain.com定向到domain.com。
URL的格式
URL的格式如下:
domain.com/[keyinformation]/[name]/?[modifiers]
Key information部分一般代表信息的類型或類別。Modifiers部分則屬于查詢字符串范疇,它不應當代表數(shù)據(jù)結構,應當代表數(shù)據(jù)的修飾。Key information部分應當盡可能簡短,同時應當表現(xiàn)出一種層級關系,比如http://domain.com/posts/servers/nginx-ubuntu-10.04,或http://domain.com/news/tech/2007/11/05/google-announces-android。
Google News對新聞源有一個有趣的要求,Google要求新聞源頁面的URL中必須包含至少3位唯一的數(shù)字,因為他們會忽略年份數(shù)字,因此,應該使用一個5位或5位以上的數(shù)字。另外,也應該提供Google News站點地圖。如果你想向Google提供新聞,必須按這樣的結構提供URL,當然保持一致性,可以預測性也是必需的。
使用小寫字符
URL中所有字符都應使用小寫,這更容易閱讀。
URL中包含的行為元素
URL查詢字符串中可能包含一些表示行為的元素,比如show,delete,edit等。非破壞性的行為可以體現(xiàn)在URL中,破壞性的行為應該使用POST。
使用URL友好字符
在URL中體現(xiàn)網(wǎng)頁標題的時候,往往會用到一些特殊字符,應當把它們轉換為URL友好字符:
全部大寫字符換成小寫
諸如é一類的字符應轉換成對應的e
空格使用短劃線代替
諸如!,@,#,$,%,^,,*一類的字符應該使用短劃線代替
雙短劃線應該使用單短劃線代替
另外,沒有必要的話,避免使用%20一類的URL逃逸符。
更多觀點
Chris Shiflett建議,可以使用一些類似句子的URL,如:
chriscoyier.net/authored/digging-into-wordpress/ chriscoyier.net/has-worked-for/chatman-design/ chriscoyier.net/likes/trailer-park-boys jacobwg.com/thinks/this-post/is/basically-done
|
譯者補充:URL的長度上限
URL的最大長度是多少?W3C的HTTP協(xié)議并沒有限定,然而,在實際應用中,經(jīng)過試驗,不同瀏覽器和Web服務器有不同的約定:
IE的URL長度上限是2083字節(jié),其中純路徑部分不能超過2048字節(jié)。
Firefox瀏覽器的地址欄中超過65536字符后就不再顯示。
Safari瀏覽器一致測試到80000字符還工作得好好的。
Opera瀏覽器測試到190000字符的時候,還正常工作。
Web服務器:
Apache Web服務器在接收到大約4000字符長的URL時候產(chǎn)生413 Entity Too Large"錯誤。
IIS默認接收的最大URL是16384字符。