網站如何控制索引範圍?
過去在操作規模較小的網站時,重點往往是增加網站的網頁索引數,但操作大型網站除了增加索引數外,更重要的是引導搜尋引擎爬取正確的路線/頁面,意即有效控制索引範圍。一方面是不浪費索引的額度(Google對每個網站都有一定的索引額度),另一方面也是不增加我們網站本身的流量負擔(CDN等也是很貴的)。
網站結構
避免重要頁面埋得太深而不易被索引,重要的頁面離首頁愈近愈好,愈多內部連結連到愈好。
網址結構
三層以後的網址易被robot忽略。例如:http://sample/abc/def/ghi
,其中「def」是第三層,「ghi」是第四層。網址太長可能會遭到robot捨棄。但根據我的觀察,這樣的狀況是很少的,但如果使用site指令是可以發現有這樣的狀況,超過某個長度後的網址便不完全比對。
因此,重要的頁面要放在三層以內,確保網址不會因為太長而被捨棄索引。
內部連結要妥善設計,必要時加上nofollow
避免robot迴圈般的爬取網址,或爬某個需要登入或偽連結,導致連不到重點和深層連結。
為什麼我會注意到這個問題呢?因為在Search Console上,我常看到報錯上顯示一個很有趣的狀況...
網站上有些功能是需要登入才能使用的,因此當點擊這個連結的時候,如果使用者沒有登入,就會回傳登入頁面。若是robot做這個動作,它就會看到soft 404,也就是想要找的頁面不見了,但又沒有回傳404。
這樣的功能問題在我們網站上好像挺多的,例如:商品檢舉(登入後,點擊商品檢舉連結,會跳到填寫檢舉表單頁)--我常常看到一種報錯--soft 404,來源是某個需要登入的連結,範例:http://goods.ruten.com.tw/item/violate.htm?123456789
,這就是因為robot在爬這個商品頁時,遇到這個連結,跟著進去發現需要登入(被轉址導到登入頁)而產生的。這種浪費robot時間資源、對自己網站產生無謂流量的狀況應該要盡量避免。
解決辦法,最簡單的就是當使用者沒有登入的時候,就不要顯示這個連結;或是,在這個連結上加入 「nofollow」,明確告知robot不要去爬。
canonical
網站格式統一,避免同一頁但不同網址的頁面競爭排名。使用canonical可能會導致網站總索引數下降,但若下降也代表網站有太多虛報的頁面了。
配合<link rel="alternate">
,這個指令同時也能使robot得知並索引手機版網頁、AMP網頁,這在官方文件上是有提到的。在做桌機與手機版網址對應的優化前,我們家露天在桌機常搜尋到手機版的頁面,或在手機上搜尋到桌機版的頁面,利用<link rel"canonical">
和<link rel="alternate">
設定桌機與手機版本網址的對應,這情況已逐漸改善。
robots.txt:disallow
避免robot爬到或索引到不必要的頁面,例如:需要登入的頁面、沒有價值的頁面。好處是避免robot不停地去訪問這些頁面,減少流量的負擔。我們家網站在做這個優化後,在search console上可以看到robot每日讀取的byte數逐漸下降。
另外,你可能會有疑惑,到底什麼時候要用robots.txt:disallow
?什麼時候要用meta noindex
呢?我的原則是,如果這是server端的controller而非view,或是在某個資料夾底下都要阻擋,那就用robots.txt:disallow
;而若只是單一頁面,就可用meta noindex
。順到一提,如果想要使用search console上在搜尋結果上移除網址的功能,這兩個動作至少要選一個來做。
search console網址參數設定
避免robot爬到或索引到不必要的頁面,或建議對某些有意義的參數設定逐一檢索。這個要小心設定,對於網站索引數是有一定大的影響的。
另外,使用canonical
或search console網址參數設定的判斷標準是比較模糊的,這邊我兩邊都會做設定,但若參數太多太複雜太難考究,我就會以search console網址參數設定為主,避免網站索引數掉得太多。
HTML撰寫
script盡量使用外部檔案,避免robot拆解script中長得像網址的字串,拼成網址後拿去訪問這個網址。同理html中的<a>
tag的href中有 javascript:void(0)
,UI元件的tab中有 #
,也是會被robot拆解成網址去訪問。這在search console報錯上很常看到,做這項優化也是為了不要產生額外的流量負擔!
以上重點是這一年我在露天拍賣網站上,對於控制索引範圍議題的構思、實作與心得,但由於寫文章的時間有限就只能簡短摘要了,歡迎交流討論噢。
由於部落格搬家了,因此在新落格也放了一份,未來若有增刪會在這裡更新-網站如何控制索引範圍?。
留言