google發布了"make ajax application crawable"相關規範。具體詳細見:http://code.google.com/web/ajaxcrawling/docs/specification.html
對開發ajax應用,這份規範還是很有意義的。
其中最重要提出了兩個概念:
pretty-url和ugly-url,google定義如下:
- Pretty URL: Any URL containing a hash fragment beginning with
!
, for example, www.example.com?myquery#!key1=value1&key2=value2
- Ugly URL: Any URL containing a query parameter with the key
_escaped_fragment_
, for example, www.example.com?myquery&_escaped_fragment_=key1=value1%26key2=value2
.
按我的理解就是pretty就是我們表現在頁面上的使用者可見url,而urlg則是為google爬蟲特別提供的url.
其主要建議就是我們在開發ajax應用時,要注意url的表達,正確的使用pretty-url,爬蟲就能夠將這個url解析出來,成為ugly-url,也就能從我們主動發起
ajax請求一樣的效果。
比如,
www.joy.cn/video/play?3#load=full ,點擊這個連結,我們主動發起ajax請求為,www.joy.cn/video/play=3&load=full
www.joy.cn/video/play?3#load=simple ,點擊這個連結,我們主動發起ajax請求為,www.joy.cn/video/play=3&load=simple
這樣兩個地址,ajax請求可以返回不同的內容。但是由於“#”後內容不會被發送給伺服器,所以對搜尋引擎而言,這兩個串連是一樣的(www.joy.cn/video/play?1
),損失了SEO效果。
google新的規範則解決了這個問題,但目前局限於google爬蟲有效。
如何解決呢?下面我們繼續。。。。
規範中指出,將“#”替換成"#!" ,就變成了google所謂的pretty-url,也就能滿足它的要求了。
www.joy.cn/video/play?3#!load=full ,點擊這個連結,我們主動發起ajax請求為,www.joy.cn/video/play=3&load=full
www.joy.cn/video/play?3#!load=simple ,點擊這個連結,我們主動發起ajax請求為,www.joy.cn/video/play=3&load=simple
而對google爬蟲而言,它遇到這樣的連結,則會轉化成
www.joy.cn/video/play=3&_escaped_fragment_=load=full和
www.joy.cn/video/play=3&_escaped_fragment_=load=simple
兩個不同搜尋地址,而最終通過google.com搜尋出來的時候,還是www.joy.cn/video/play=3#!load=simple這樣的pretty形式。
最後貼個流轉圖: