Canonical URL

我本來以為我應該寫過這東西了,可是剛剛找卻找不到文章,決定就當成沒寫過,介紹一下這個兩年前的東西。Canonical URL 是為了解決網路上很多不同網址可能其實是同樣頁面的問題,例如下面三個網址其實都是同樣的 Amazon 商品:

http://www.amazon.com/gp/product/0596522304/ref=s9_qpp_gw_p14_ir03?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-3&pf_rd_r=0BC0MGCJ16BHCYNY6AYG&pf_rd_t=101&pf_rd_p=470938811&pf_rd_i=507846
http://www.amazon.com/Even-Faster-Web-Sites-Performance/dp/0596522304
http://www.amazon.com/dp/0596522304

但是可能是因為來源不同,Amazon 藉由不同的網址記錄一些行為,像是不同的廣告來源,或是為使用者提供不同的相關訊息等,不過這些網址其實都應該是一樣的,都是代表那本書的頁面,這時就產生個問題了,三個網址在搜尋引擎的紀錄是分開的,頁面整體的影響力也因此被低估,同樣會有這個問題的還有像是 flickr:

http://www.flickr.com/photos/othree/5478867242/in/set-72157626142121334/
http://www.flickr.com/photos/othree/5478867242/in/photostream/
http://www.flickr.com/photos/othree/5478867242/
http://flic.kr/p/9m9Cmj

或是 T 客邦:

http://www.techbang.com.tw/posts/5033-ios-great-copy-mac-os-x-107-lion-info
http://www.techbang.com.tw/posts/5033

這些不同長度的網址其實都是一樣的頁面,卻因為被當成不同的頁面而讓分數下降,不只是網站本身的 SEO 問題,對於搜尋引擎來說也是一個會讓搜尋結果排序不好的問題,為解決這個問題,Google微軟Yahoo!ask.com 等搜尋引擎大廠在 2009 共同合作,制定了 canonical URL 這樣的一個機制,機制很簡單,就是在網頁內加上一個 link 標籤記錄實際上代表的網址,以第一個 Amazon 的網址為例,每個網址開進去看他的原始碼,都可以發現有一個如下的 link 標籤

<link rel="canonical" href="http://www.amazon.com/Even-Faster-Web-Sites-Performance/dp/0596522304" />

裡面的 href 的值,就是這些網址的實際目標,代表這些網址們實際上的 URL 都是這個實際目標,搜尋引擎看到的話就會把該網址的權重、分數等等算在它上面,也就可以簡單解決上面提到的問題,如果你用 Google 搜尋 Amazon 上面那本書 ,就會發現連結過去的網址就是 canonical 設定的網址了。