如何定義好一個符合規范的url


描述

進公司沒有多久遇到一個問題,定義的url會被大神吐槽說是很渣。之前從來沒有注意這塊,今天把我們團隊的url規范分享給大家。

為什么需要URL規范化

1、網站URL和結構已經成為網站搜索引擎友好的最大基礎性問題,網站URL 和結構問題,早發現早優化,越是往后放,最后就成了制約網站運營和產品開發的決定性因素。
2、無論是網站的可用性還是網站對搜索引擎的吸引力,清晰明了的瀏覽路徑都是相當重要的,URL是統一資源定位,即每個網頁的網址、路徑。
3、瀏覽路徑讓網站的導航結構更清晰,可以更加平衡的分布網站權重。

反例(不規范的URL)

URL中多余的字符

1、子域名的URL中包含"www": "http://www.shuchao.cnblogs.com/"

2、含有默認端口: "http://www.cnblogs.com:80/shuchao/"

3、松散的URL: "http://www.chapters.indigo.ca/books/amazon-sucks-donkey-balls/9780470170779-item.html"

4、多余默認文件名index.html,default.aspx等:"http://www.cnblogs.com/shuchao/index.html"

5、文件路徑中包含多余的"/":"http://www.cnblogs.com/shuchao//",多余的點修飾串:"x/y/z/http://www.cnblogs.com/a/b/http://www.cnblogs.com/../page.html"

6、查詢串中多余的 ? (空查詢串):http://www.cnblogs.com/shuchao?

7、多余的& 無用的查詢變量:http://www.example.com/display?id=123&fake=fake

URL缺少字符串

缺少"/":"http://www.cnblogs.com/shuchao"
查詢串缺少名稱或者值:"http://www.example.com/display?id=" 或者 "http://www.example.com/display?=123"

其他不規范的URL

1、"http://shuchao.cnblogs.com/" 與 "http://www.cnblogs.com/shuchao/"其實是相同的內容即同一個資源,最好不要有兩個urL

2、使用IP代替域名

3、大小寫敏感("http://www.google.cn/Intl/zh-CN/about.html" 和"http://www.google.cn/intl/zh-CN/about.html")

4、查詢變量順序混亂:"http://www.example.com/test.aspx?bar=1&a=test"

5、含臨時的狀態變量:http://www.example.com/test?back=/prevpage.aspx

設計URL應該遵循的原則

一、簡單,好記

簡單好記的域名會給人以深刻的印象。

二、URL中的字母全部用小寫

全部用小寫,用戶比較容易輸入,不用因為大小寫混合而出現錯誤,這是人們的輸入習慣
有些服務器是區分大小寫的,例如Lunix服務器,這樣在站長做鏈接或者是用戶輸入時,會因為大小寫的問題而出現404錯誤,
而且robots也是區分大小寫的,如果大小寫搞錯了,可能會造成不能收錄的嚴重問題。所以建議所有的URL都使用小寫

三、連詞符的使用

目錄或者文件名中如果有兩個單詞組成時,一般建議中間使用中划線(-)隔開,
切記不要使用下划線或者其他字符,在搜索引擎中,它是把中划線當作一個空格來處理的,而下划線則是被忽略的,
例如seo-caipiao會被讀成seo與caipiao。這是比較友好的寫法

四、URL中避免太多參數

設計的則是URL中的參數應該盡量減少,不要超過三個,一般的情況下URL中的參數2-3個就可以了。

五、目錄層次盡量少

這里所指的目錄層次是指物理目錄結構,而不是指邏輯結構,我們在進行URL的設計時,
網站的結構要盡量的去減少目錄層次,層次不能太深了,一般建議不要超過三層,特別對於一些新站來說,
權重低,搜索引擎蜘蛛爬行得很淺,深一點的頁面,蜘蛛都很可能不會去爬行的,所以要盡量的做到使目錄層次減少,
URL縮短。根據觀察,百度尤其比較喜歡目錄層次比較少的頁面。

六、文件名及目錄名要具描述性

文件名及目錄名要具有可描述性,不但讓用戶一眼就能看出來這個頁面是關於什么的,
對用戶體驗比較友好,而且搜索引擎也比較喜歡這樣的URL。
例如一個關於新聞的目錄,我們可以把它命名為news,用戶看到這個目錄名稱,大概就知道這個目錄是關於什么內容的了。

七、URL應該呈現一個降級的次序

例如:域名/類型/分類/標題
例如:域名/年/月/日
http://domain.com/news/tech/2007/11/05/google-announces-android

其他

1.URL能反應站點的結構
2.URL是可以被用戶猜測和hack的(也鼓勵用戶如此)
3.永久鏈接,Cool URLdon't change
4.動態的也要做成偽靜態

url規范誕生

一、基本規范

1、不能使用中文單詞,最好使用有意義的英文單詞,少用拼音。

2、層級不能超過三級。
例如:http://domain.com/xx/xx/xx/xx.html不被允許

3、URL的參數不允許超過3個

4、URL全部小寫

5、網站內部在鏈接到其他網頁,尤其是主頁時,只使用一種URL,即不允許同一個資源有多個URL。

6、不允許出現沒有意義的下URL
例如:http://www.uxuexi.cn/123.html。誰也看不明白是什么意思

7、如果是內容資源URL,不允許以參數的方法顯示
例如:http://www.uxuexi.cn/user.html?userId=123 需要改成http://www.uxuexi.cn/user/123.html

二、URL類型設置

1、目錄
一般用在頻道頁或是文章欄目(這種方式能獲得更多的權重),最后面必須加上“/”
例如:http://www.uxuexi.cn/search需要改成http://www.uxuexi.cn/search/

2、網頁
一般用來表現網頁內容,需要直接顯示在頁面的必須以.html結尾
例如:http://www.uxuexi.cn/123 需要改成http://www.uxuexi.cn/user/123.html

3.特定功能或交互式
統一以.json 或者.html結尾
例如:
添加評論 http://www.uxuexi.cn/addcomment.json

三、靜態化

1、不經常更新的內容采用靜態化。例如:http://course.uxuexi.cn/detail/111.html。URL中不允許使用?帶參數
2、實時更新的內容采用偽靜態。例如:http://www.uxuexi.cn/user/111.html。URL中不允許使用?帶參數
特定功能或交互式用動態URL。

約定

所有需要跳轉頁面的url必須進行統一的管理,統一使用cms:url自定義標簽來實現,方便維護和優化。
例如
每次添加url,必須寫上注釋。
注釋url功能,注釋每一個參數是什么意思

 

URL命名規則

1、URL中字母全部小寫
2、如果有單詞拼接,使用中划線‘-’,不使用下划線‘_’

  • 在搜索引擎中,把中划線當做空格處理,而下划線是被忽略的。使用中划線是對搜索引擎友好的寫法

3、資源必須采用資源名詞的復數形式
4、層級不能超過三層
5、參數不允許超過3個
6、 如果是內容資源的URL,不允許以參數方式顯示

  • 例如: http://www.domian/com/users.html?id=1需改成http://www.domian/com/users/1
{
  "current_user_url": "https://api.github.com/user", "current_user_authorizations_html_url": "https://github.com/settings/connections/applications{/client_id}", "authorizations_url": "https://api.github.com/authorizations", "code_search_url": "https://api.github.com/search/code?q={query}{&page,per_page,sort,order}", "commit_search_url": "https://api.github.com/search/commits?q={query}{&page,per_page,sort,order}", "emails_url": "https://api.github.com/user/emails", "emojis_url": "https://api.github.com/emojis", "events_url": "https://api.github.com/events", "feeds_url": "https://api.github.com/feeds", "followers_url": "https://api.github.com/user/followers", "following_url": "https://api.github.com/user/following{/target}", "gists_url": "https://api.github.com/gists{/gist_id}", "hub_url": "https://api.github.com/hub", "issue_search_url": "https://api.github.com/search/issues?q={query}{&page,per_page,sort,order}", "issues_url": "https://api.github.com/issues", "keys_url": "https://api.github.com/user/keys", "notifications_url": "https://api.github.com/notifications", "organization_repositories_url": "https://api.github.com/orgs/{org}/repos{?type,page,per_page,sort}", "organization_url": "https://api.github.com/orgs/{org}", "public_gists_url": "https://api.github.com/gists/public", "rate_limit_url": "https://api.github.com/rate_limit", "repository_url": "https://api.github.com/repos/{owner}/{repo}", "repository_search_url": "https://api.github.com/search/repositories?q={query}{&page,per_page,sort,order}", "current_user_repositories_url": "https://api.github.com/user/repos{?type,page,per_page,sort}", "starred_url": "https://api.github.com/user/starred{/owner}{/repo}", "starred_gists_url": "https://api.github.com/gists/starred", "team_url": "https://api.github.com/teams", "user_url": "https://api.github.com/users/{user}", "user_organizations_url": "https://api.github.com/user/orgs", "user_repositories_url": "https://api.github.com/users/{user}/repos{?type,page,per_page,sort}", "user_search_url": "https://api.github.com/search/users?q={query}{&page,per_page,sort,order}" }


作者:錢英俊真英俊
鏈接:https://www.jianshu.com/p/876d4cbd84f9
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM