如何規(guī)劃好網(wǎng)站的URL |
發(fā)布時(shí)間: 2012/9/14 15:14:44 |
URL的問(wèn)題是SEO過(guò)程中的一個(gè)基本問(wèn)題,做一個(gè)新網(wǎng)站也好,優(yōu)化現(xiàn)有的網(wǎng)站也好,都繞不開(kāi)這一點(diǎn)。這兩篇文章就來(lái)大體總結(jié)一下URL的規(guī)劃應(yīng)該怎么做。
在開(kāi)始講這些問(wèn)題之前,需要先閱讀完以下文檔:
這些都是google官方的文檔,講述了各種各樣的規(guī)則。這些對(duì)百度也是同樣適用的,因?yàn)樗轻槍?duì)爬蟲(chóng)的特性提出來(lái)的,并不是只有某個(gè)搜索引擎才適用。 看完上面的那些這些規(guī)則,發(fā)現(xiàn)翻來(lái)覆去講得都是怎么讓爬蟲(chóng)能非常順暢的抓取完整個(gè)網(wǎng)站。其實(shí)絕大部分網(wǎng)站都存在這樣或那樣的問(wèn)題的,也包括我這個(gè)博客,在抓取方面也存在一些問(wèn)題。但是看在每篇博文都能被收錄的情況下,也就不去優(yōu)化了。但是對(duì)于很多收錄還成問(wèn)題的網(wǎng)站(特別是大中型網(wǎng)站)來(lái)說(shuō),就要好好規(guī)劃一下了。大家可以用HTTrack抓取semyj這個(gè)博客看看,就能發(fā)現(xiàn)為什么我這么說(shuō)了。(誰(shuí)能一天之內(nèi)抓取完這個(gè)博客的人請(qǐng)告訴我。)
還是先從搜索引擎的處境講起吧。正如Google在文章中寫(xiě)道的那樣: 網(wǎng)絡(luò)世界極其龐大;每時(shí)每刻都在產(chǎn)生新的內(nèi)容。Google 本身的資源是有限的,當(dāng)面對(duì)幾近無(wú)窮無(wú)盡的網(wǎng)絡(luò)內(nèi)容的時(shí)候,Googlebot 只能找到和抓取其中一定比例的內(nèi)容。然后,在我們已經(jīng)抓取到的內(nèi)容中,我們也只能索引其中的一部分。 這段話很好的總結(jié)了搜索引擎所面臨的處境,那么爬蟲(chóng)在處理URL的時(shí)候會(huì)遇到哪些問(wèn)題呢? 我們先來(lái)看重復(fù)URL的問(wèn)題,這里說(shuō)的重復(fù)URL是指同一個(gè)網(wǎng)站內(nèi)的不同頁(yè)面,都存在很多完全相同的URL。如: http://www.semyj.com/archives/1097 和 http://www.semyj.com/archives/1114 這兩個(gè)頁(yè)面。 雖然頁(yè)面不同,但是他們公用的部分,URL地址是一樣的?雌饋(lái)如果不同的爬蟲(chóng)抓取到這些頁(yè)面的時(shí)候,會(huì)重復(fù)抓取,從而浪費(fèi)很多不必要的時(shí)間。 這確實(shí)是一個(gè)問(wèn)題,不過(guò)這個(gè)問(wèn)題搜索引擎倒是基本解決好了。實(shí)際上,爬蟲(chóng)的抓取模式不是像我們理解的那樣看到一個(gè)網(wǎng)頁(yè)就開(kāi)始抓取一個(gè)網(wǎng)頁(yè)的。 爬蟲(chóng)順著一個(gè)個(gè)的URL在互聯(lián)網(wǎng)上抓取網(wǎng)頁(yè),它一邊下載這個(gè)網(wǎng)頁(yè),一邊在提取這個(gè)網(wǎng)頁(yè)中的鏈接。假設(shè)從搜索引擎某一個(gè)節(jié)點(diǎn)出來(lái)的爬蟲(chóng)有爬蟲(chóng)A、爬蟲(chóng)B、爬蟲(chóng)C,當(dāng)它們到達(dá)semyj這個(gè)網(wǎng)站的時(shí)候,每個(gè)爬蟲(chóng)都會(huì)抓取到很多URL,然后他們都會(huì)把那個(gè)頁(yè)面上所有的鏈接都放在一個(gè)公用的“待抓取列表”里。(可以用lynx在線版模擬一下爬蟲(chóng)提取鏈接。) 這樣一來(lái),在“待抓取列表”里,那些重復(fù)的URL就可以被去重了。這是一個(gè)節(jié)點(diǎn)在一種理想狀態(tài)下的情況,不過(guò)實(shí)際上因?yàn)樗阉饕嬉院筮要更新這個(gè)網(wǎng)頁(yè)等等一些原因,一個(gè)網(wǎng)站每天還是有很多重復(fù)抓取。所以在以前的文章中,我告訴大家用一些方法減少重復(fù)抓取的幾率。 這里有一個(gè)問(wèn)題,很多人肯定想問(wèn)是不是一個(gè)網(wǎng)頁(yè)上所有的鏈接搜索引擎都會(huì)提取的,答案是肯定的。但是在《google網(wǎng)站質(zhì)量指南》中,有這樣一句:“如果站點(diǎn)地圖上的鏈接超過(guò) 100 個(gè),則需要將站點(diǎn)地圖拆分為多個(gè)網(wǎng)頁(yè)。”有些人把這句話理解為:“爬蟲(chóng)只能抓取前100個(gè)鏈接”,這是不對(duì)的。 因?yàn)樵?ldquo;待抓取列表”里的URL,爬蟲(chóng)并不會(huì)每一個(gè)鏈接都會(huì)抓取的。 鏈接放在這個(gè)列表里是沒(méi)問(wèn)題的,但是爬蟲(chóng)沒(méi)有那么多時(shí)間也沒(méi)必要每個(gè)鏈接都要去抓取,需要有一定的優(yōu)先級(jí)。在“待訪問(wèn)列表”里,爬蟲(chóng)一邊按照優(yōu)先級(jí)抓取一部分的URL,一邊把還未被抓取的URL記錄下來(lái)等待下次抓取,只是這些還未被抓取的URL,下次爬蟲(chóng)來(lái)訪問(wèn)的頻率就每個(gè)網(wǎng)站都不一樣了, 每一類(lèi)URL被訪問(wèn)的頻率也不一樣。 那么在“待抓取列表”里的URL,哪些是能被優(yōu)先抓取,哪些是被次要抓取的呢? 我們稍微思考一下都能明白這個(gè)抓取的優(yōu)先級(jí)策略應(yīng)該怎么定。首先,那些目錄層級(jí)比較深的URL是次要抓取的;那些在模板部分的或重復(fù)率非常高的URL是被次要抓取的;那些動(dòng)態(tài)參數(shù)多的URL是次要抓取的….. 這么做的原因,就是因?yàn)樗阉饕娴馁Y源是有限的,一個(gè)網(wǎng)站實(shí)際擁有的內(nèi)容也是有限的,但是URL數(shù)量是無(wú)限的。爬蟲(chóng)需要一些“蛛絲馬跡”來(lái)確定哪些值得優(yōu)先抓取,哪些不值得。 在《谷歌搜索引擎入門(mén)指南》中,google建議要優(yōu)化好網(wǎng)站的URL結(jié)構(gòu),如建議不要用“…/dir1/dir2/dir3/dir4/dir5/dir6/page.html”這樣的多層嵌套。就是因?yàn)樵诖ト×斜砝,在其他條件相同的情況下,爬蟲(chóng)會(huì)優(yōu)先抓取目錄層級(jí)淺的URL。如用Lynx在線版查看本網(wǎng)站的頁(yè)面: 如果說(shuō),在這17個(gè)鏈接里,爬蟲(chóng)只能選幾個(gè)鏈接抓取的話,紅色箭頭所指的鏈接在其他條件相同的情況下是要優(yōu)先的。 但是這里又有一個(gè)誤區(qū),有人在SEO過(guò)程中,把所有的網(wǎng)頁(yè)都建立在根目錄下,以為這樣能有排名的優(yōu)勢(shì)。這樣也是沒(méi)有理解這個(gè)原因。而且爬蟲(chóng)在這個(gè)網(wǎng)站上先抓取哪些URL后抓取哪些URL,都是自己的URL和自己的URL比,如果所有網(wǎng)頁(yè)都是在同一個(gè)目錄下,那就沒(méi)有區(qū)別了。 最好的規(guī)劃URL目錄層級(jí)的方式,就是按照業(yè)務(wù)方的邏輯來(lái)規(guī)劃,從內(nèi)容上應(yīng)該是什么從屬關(guān)系就怎么規(guī)劃URL就是。就像《谷歌搜索引擎入門(mén)指南》中舉的那些例子一樣。 (順帶說(shuō)一下。我經(jīng)常看到,一個(gè)網(wǎng)站中,很多人非SEO的人員,如工程師和網(wǎng)頁(yè)設(shè)計(jì)人員或者網(wǎng)站編輯,都以為SEO和他們做的事情是相反的。這都是因?yàn)殚L(zhǎng)期以來(lái)一些SEOer經(jīng)常提交很多明顯違反用戶(hù)體驗(yàn)的SEO需求給他們,造成他們以為SEO就是和他們做的事情是有沖突的。實(shí)際上,SEO和別的部門(mén)有非常少的沖突,只要你能用科學(xué)的方法去實(shí)踐,就能發(fā)現(xiàn)以前有太多誤導(dǎo)人的觀點(diǎn)了。還有,對(duì)于其他部門(mén)的專(zhuān)業(yè)人員,他們專(zhuān)業(yè)領(lǐng)域的意見(jiàn)非常值得去考慮。) 爬蟲(chóng)有一個(gè)特點(diǎn),就是它不能實(shí)時(shí)的比較它正在抓取的內(nèi)容是不是重復(fù)的內(nèi)容。因?yàn)槿绻龅綄?shí)時(shí)的比較,那它至少要把正在抓取的頁(yè)面和那些已經(jīng)在索引庫(kù)的頁(yè)面做對(duì)比,這是不可能短時(shí)間內(nèi)可以完成的。 前面把所有URL統(tǒng)一放到一個(gè)待抓取列表中的方法只能避免那種URL完全一模一樣的重復(fù)抓取,但是無(wú)法應(yīng)對(duì)URL不一樣、但是內(nèi)容一樣的抓取。 正如所有搜索引擎都強(qiáng)調(diào)的那樣,動(dòng)態(tài)參數(shù)是一個(gè)經(jīng)常產(chǎn)生URL不一樣、但是內(nèi)容一樣的現(xiàn)象的原因。所以搜索引擎建議大家用靜態(tài)化的方法去掉那些參數(shù)。靜態(tài)化的本質(zhì)是URL唯一化,在《優(yōu)化網(wǎng)站的抓取與收錄》這篇文章中,曾經(jīng)用的“一人一票”這個(gè)描述就很貼切的表達(dá)了這個(gè)意思。靜態(tài)化只是一個(gè)手段而不是目的,為了保證URL的唯一化,可以把URL靜態(tài)化、也可以用robots.txt或nofollow屏蔽動(dòng)態(tài)內(nèi)容、可以用rel=canonical屬性、還可以在webmaster tool里屏蔽一些參數(shù)等等。 而靜態(tài)化也會(huì)有好的靜態(tài)化和不好的靜態(tài)化之別。我們這里不說(shuō)那種把多個(gè)參數(shù)直接靜態(tài)化了的案例,而是單純來(lái)看看如下兩個(gè)URL: http://www.semyj.com/archives/1097和 http://www.semyj.com?p=1097 這兩個(gè)URL中,這個(gè)靜態(tài)化的是不是就比動(dòng)態(tài)的好呢? 實(shí)際上這兩個(gè)URL的差別很小。首先這兩種URL搜索引擎都能收錄,如果說(shuō)動(dòng)態(tài)URL“?p=1097”可能產(chǎn)生大量重復(fù)的內(nèi)容讓爬蟲(chóng)抓取,那這個(gè)靜態(tài)的URL“archives/1097”也不能保證不會(huì)產(chǎn)生大量重復(fù)的內(nèi)容。特別是爬蟲(chóng)在抓取時(shí)碰到大量有ID的靜態(tài)的URL時(shí),爬蟲(chóng)無(wú)法判斷這個(gè)網(wǎng)站是不是把session ID等參數(shù)靜態(tài)化了才造成的,還是這個(gè)網(wǎng)站本來(lái)就有這么多內(nèi)容。 所以更好的靜態(tài)化是這樣的: http://www.semyj.com/archives/seo-jingli 這種URL就能保證唯一化而不會(huì)和其他情況混淆了,所以URL中要盡量用有意義的字符。這不是因?yàn)橐赨RL增加關(guān)鍵詞密度而這么做的,是為了方便搜索引擎抓取。 以上是因?yàn)榕老x(chóng)固有的特點(diǎn)造成的抓取障礙,而有時(shí)網(wǎng)站的結(jié)構(gòu)也能造成爬蟲(chóng)的抓取障礙。這種結(jié)構(gòu)在《優(yōu)化網(wǎng)站的抓取與收錄》一文中用的名字是“無(wú)限空間”。文中舉了一個(gè)日歷的例子:如很多博客上都會(huì)有一個(gè)日歷,順著這個(gè)日歷的日期一直往下點(diǎn),永遠(yuǎn)都有鏈接供你點(diǎn)擊的,因?yàn)闀r(shí)間是無(wú)限的。 其實(shí)還有更多的“無(wú)限空間”的例子,只是“無(wú)限空間”這個(gè)名詞沒(méi)怎么翻譯好,翻譯做“無(wú)限循環(huán)”就容易理解多了。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |