URL正常化(url normalization)其實就是一個標準化URL的過程,其實也就是將一個URL轉化為一個符合規範的等價URL(如http://www.cnblogs.com/shuchao轉化為http://www.cnblogs.com/shuchao/),這樣程式可以確定這兩個URL是等價的。
URL正常化用於搜尋引擎可以減少對頁面的重複索引,同時也可以減少爬蟲的重複抓取。瀏覽器端識別使用者是否訪問過一個URL也需要使用URL正常化。
- 1 URL組成
- 2 不規範的URL
- 3 URL正常化過程
- 4 SEO URL正常化
URL組成:
protocol :// hostname[:port] / path / [;parameters][?query]#fragment
協議://主機名稱[:連接埠]/ 路徑/[:參數] [?查詢]#Fragment
不規範的URL:
1 URL中多餘的字元
1.1 子網域名稱的URL中包含"www": "http://www.shuchao.cnblogs.com/"
1.2 含有預設連接埠: "http://www.cnblogs.com:80/shuchao/"
1.3 鬆散的URL: "http://www.chapters.indigo.ca/books/amazon-sucks-donkey-balls/9780470170779-item.html"
1.4 多餘預設檔案名稱index.html,default.aspx等:"http://www.cnblogs.com/shuchao/index.html"
1.5 檔案路徑中
(1) 多餘的"/":"http://www.cnblogs.com/shuchao//"
(2) 多餘的點修飾串:"x/y/z/http://www.cnblogs.com/a/b/http://www.cnblogs.com/../page.html"
1.6 查詢串中多餘的
(1) ? (空查詢串):http://www.cnblogs.com/shuchao?
(2) &
(3) 無用的查詢變數:http://www.example.com/display?id=123&fake=fake
2 URL缺少字串
2.1 缺少"/":"http://www.cnblogs.com/shuchao"
2.2 查詢串缺少名稱或者值:"http://www.example.com/display?id=" 或者 "http://www.example.com/display?=123"
3 其他不規範的URL
3.1 "http://shuchao.cnblogs.com/" 與 "http://www.cnblogs.com/shuchao/"其實是相同的內容
3.2 使用IP代替網域名稱
3.3 含有擴充字元(extended characters),大小寫敏感("http://www.google.cn/Intl/zh-CN/about.html" 和"http://www.google.cn/intl/zh-CN/about.html")
3.4 "+"和"%20"混用
3.5 查詢變數順序混亂:"http://www.example.com/test.aspx?bar=1&a=test"
3.6 含臨時的狀態變數:http://www.example.com/test?back=/prevpage.aspx
URL正常化過程:
1.URL協議名和主機名稱小寫化
HTTP://WWW.EXAMPLE.com/test -> http://www.example.com/test
2.escape序列轉化為大寫,因為escape序列大小敏感
%3a ->%3A
3.刪除Fragment(#)
http://www.example.com/test/index.html#seo -> http://www.example.com/test/index.html
4.刪除空查詢串的'?'
http://www.example.com/test? -> http://www.example.com/test
5.刪除預設尾碼
http://www.example.com/test/index.html -> http://www.example.com/test/
6.刪除多餘的點修複符
http://www.example.com/../a/b/../c/./d.html -> http://www.example.com/a/c/d.html
7.刪除多餘的"www"
http://www.test.example.com/ -> http://test.example.com/
8.對查詢變數排序
http://www.example.com/test?id=123&fakefoo=fakebar → http://www.example.com/test?id=123 \
9.刪除取預設值的變數
http://www.example.com/test?id=&sort=ascending → http://www.example.com/test
10.刪除多餘的查詢串,如?,&
http://www.example.com/test? → http://www.example.com/test
11.Dust 規則(Schonfeld 等人提出的啟發學習法方法)
http://www.example.com/test?id=123 -> http://www.example.com/test_123
SEO URL正常化:
不規範的URL會造成網站很多重複的URL,導致爬蟲重複抓取同一內容,影響網站有效內容被抓取,同時也就影響索引。
多個不規範URL造成PR稀疏,本來流向同一頁面的PR,結果造成了流向多個不規範的URL。
還有一個使用者體驗問題,複雜或者不規範的URL容易使使用者對網站造成不良印象。
Google管理員增加了URL正常化的工具,可以刪除URL中無用的參數。