說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732
全網監測海量數據按需發布監測預警
實時把握輿情動態精準追溯信息源頭
首先聲明,我們只談論有檢索意義的URL,也是用戶會從搜索引擎查找的頁面。其他頁面按照常用的方法做屏蔽好了。鑒于很多站長都愛討論整體的收錄量,我必須潑一下冷水,也許你的有效收錄是1/10。
URL參數
也叫URL query,是一個復雜,容易被忽視,容易被妥協的問題。他是網站運營中必不可少的元素,如果簡單的去除,其他部門無法工作了。 靜態化是的話題,URL參數經常被用于以下幾方面:
同一個實體的不同狀態展示,比如同一個酒店,在不同時間點會有不同的房間庫存:http://www.travel.com/hotel/123/?checkindate=2015-06-09&checkoutdate=2015-06-10
為了統計不同渠道的流量:http://www.a.com/?tracking=website_a
為了統計不同渠道,具體模塊的點擊量:http://www.a.com/?tracking=website_a&click_spot=zone_abc
調試:http://www.a.com/product/item123/?debug=true
全奇葩的是亞馬遜,居然把統計參數放到了路徑中http://www.amazon.cn/abc/dp/B005TZHJEQ/ref=lp_2130608051_1_1
出現這種問題的壞處有幾點:
1. 浪費搜索引擎對你網站的各項配額,從而影響其他正常的頁面。
2. 丟失很多本應拿到的鏈接加分,站外渠道的鏈接往往是質的。同一個URL的分值可能分散成幾十份。
3. seo的流量被統計到別的渠道(因為tracking字段寫的是別的渠道,而且被收錄被點擊)
4. 往往形成一種局面,產品用一套URL,SEO用另一套URL, 甚至不同渠道用不同的URL,后期開發和維護的成本極高。
為了解決這個問題,首先要弄清URL的定義。以我的理解,每一個URL是一個靜態的、獨立不重復的、有意義的實體,一般也有檢索意義(是有人會搜)。比如一個人、一輛車、一條道路、一個零件。而不能混入各種”狀態”,比如這個人生病的時候,難道不是他自己了么? 一件商品在促銷的狀態難道是另一件商品了么?
理論上canonical標簽可以解決這個問題了, 但是從實際測試結果看,百度對這個標簽的支持優先級非常低, 幾乎可以忽略不計。那么我的解決方案是這樣的:
1. 建立好網站的思維導圖和元信息。 (可參考:SEO健康度 )
2. 所有和SEO元信息相關的參數都放到路徑中去
3. 所有和SEO元信息不相干的參數都放到#后邊,因為#后邊不影響web服務器返回的內容。簡單的說是用”#”替代”?”。
4. 每個頁面中都利用js獲取#后邊的參數對,通過二次請求發回給統計服務器
5. 如果#后邊的參數影響頁面內容,比如酒店的入住日期。那么這部分內容用ajax加載行,他是不穩定的,不屬于頁面內容的一部分。(當然還有變通的辦法,暫不贅述。)
6. 原始的#錨點定義肯定會沖突,定義一個#后邊的變量,并用js控制屏幕滾動,來保證原始錨點的作用。
有人可能會想到,根據ua判斷,如果是搜索引擎爬蟲,用跳轉的方式去掉URL參數。但效率的方法必然是從一開始不展示錯誤URL。那么前面的例子優化后變成了:
http://www.travel.com/hotel/123/#checkindate=2015-06-09&checkoutdate=2015-06
10http://www.a.com/#tracking=website_a
http://www.a.com/#tracking=website_a&click_spot=zone_abc
http://www.a.com/product/item123/#debug=true
其實很多網站早使用這種方式了,但是還有很多網站由于開發效率無法及時實現。所以對于一般的小網站,一定要考慮開發成本,不要輕易冒進。只要能避免問題的發生,變通的方法是很多的。
路徑中使用非必要元素
很多網站仿照亞馬遜的做法,把商品名體現在URL中,然后再通過id來決定頁面展示的內容:http://www.amazon.cn/博集典藏館043?基督山伯爵-亞歷山大?仲馬/dp/B005TZHJEQ/
這樣雖然可以提高一些相關性,但是很危險。在長期甚至短期的時間內,大量商品的名稱是非常可能有變化的,那么URL也跟著變化。成本也是非常高的,因為加大了技術實現難度,不管從站內還是站外,每次增加鏈接都是一個很麻煩的事情。
在我接手藝龍SEO之前,URL被全部改成了這樣,對我早期的工作造成了非常巨大的負擔:http://www.a.com/Shangrila_International_Hotel-12345678-hotel/
通過日志分析發現基本所有的百度蜘蛛發起的請求都被301跳轉了一次(日志分析方法可參考SEO健康度 )。細致調查后發現,從SEO拼接規則到后臺的漢字和翻譯數據被一直修改。也是說,這個URL相關的元素有:
1. 中文 (非必要元素)
2. 由中文翻譯的英文 (非必要元素)
3. id (必要元素)
而當時負責SEO的同事把英文和id拼接在了URL中,那么這樣一個URL先后變成過:
http://www.a.com/Shangrila_International_Hotel-12345678-hotel/
http://www.a.com/Xianggelila_International_Hotel-12345678-hotel/
http://www.a.com/XiangGeLiLa_International_Hotel-12345678-hotel/
http://www.a.com/Shangrila_guoji_Hotel-12345678-hotel/
跟”相關性”比,URL的性和穩定性更重要。所以針對這個問題,URL的策略應該是:http://www.a.com/hotel/12345678/
如果這個id是隸屬于一個分類下的,比如城市,那么可以是:http://www.a.com/hotel/beijing/123/
從技術角度說, id一般是數據庫的primary key,可以是數字也可以是字符串,那么這個時候URL是一維的; id也可以是聯合的索引,那么URL是二維的,像上面的(bejing,123)缺一不可。電商類網站列表頁經常用到三維以上。
大小寫
如果網站的技術架構用的是開源系統,一般是不會有這個問題的。如果使用了微軟的技術架構,這個問題非常常見:
http://www.a.com/newyork/
http://www.a.com/Newyork/
http://www.a.com/NewYork/
我的建議是統一使用小寫,大寫自動跳轉為小寫(小心301死循環!)。
目錄的規范
很多網站同時存在這樣的URL,無形中把收錄量擴大了一倍:
http://www.a.com/product/123
http://www.a.com/product/123/
上邊個路徑的意思是在product目錄下有一個123文件。第二個路徑的意思是在product目錄下有一個123目錄,這個目錄下可能有很多文件,但是他代表眾多文件中的index.html或index.php或default.aspx等優先級的那個文件。為了避免歧義,我定義文件都是用”.html”結尾的。
為了減少重復收錄,那么按我的習慣是:
http://www.a.com/product/123 => http://www.a.com/product/123/
http://www.a.com/product/123 => http://www.a.com/product/123.html
總結
1. 所有部門統一使用SEO定義的URL,屏蔽非SEO URL的入口。
2. 用”#”替代”?”
3. 統一使用小寫
4. 保證目錄的規范
5. 把不規范的URL跳轉到規范的URL
轉自:百度站長平臺“藝龍SEO負責人劉明”的投稿
說明:如果您有任何疑問或想咨詢其他業務請撥打電話 400 685 0732