2011-02-10 18 views
3

我正在編寫包含相當大的圖庫的網站。該圖庫的第一頁用戶將顯示一串縮略圖,其URL爲:website.com/gallery.php有關#的一般問題! hashbang網址,我是否正確使用它們

當他們單擊縮略圖圖像時,如果關閉了javaScript,它將遵循href並轉到一個名爲gallery.php?img = 67的頁面。如果啓用了javaScript,href點擊將不會執行,而是執行ajax請求來顯示較大的圖像和一些關於它的文本。網址更改爲gallery.php#!img = 67。後退按鈕會將您帶回縮略圖,按f5將保持顯示文字的大圖像。如果有人將地址複製到#!併發送給他們他們將得到相同的圖像顯示(假設接收器已打開javaScript)。

我的問題是,我是否正確地對此進行了整理,以便Google爲單個圖庫頁面編制索引?谷歌將索引他們兩次,一次是?img = 67,一次是#!如果是的話,這是一件壞事?我使用javaScript/Ajax預加載較大的圖像,一旦縮略圖頁面加載速度。我最近讀了很多反對使用hasbang ajaxy的東西,並想知道如果你認爲可以在這裏使用它嗎?

+1

Google忽略散列及其後的所有內容。 – coreyward 2011-02-11 00:01:32

+1

不是根據這個http://code.google.com/web/ajaxcrawling/docs/getting-started.html - 我應該添加我已經設置了服務器以響應該抓取工具作爲在該鏈接中的討論 – Ralph 2011-02-11 00:06:41

+2

作爲您在HREF中使用標準URL,並且只使用javascript(正確的方式來創建IMO)創建#!URL,Google無論如何都不會看到您的#!URL,並且只會索引標準版本。 – 2011-02-11 00:17:59

回答

4

Google會按照您的鏈接和索引?img=67網頁,而不會將您的#!網頁編入索引,因爲它無法看到這些鏈接。你可以告訴谷歌關於通過做這些鏈接如下:

  1. 添加<meta name="fragment" content="!">到您的文檔的<head>,並
  2. 處理請求的/?_escaped_fragment_=通過返回你的頁面的「HTML快照」有你所有的#!鏈接中的<A>標籤。

此外,爲了充分利用此功能,您還應該通過返回帶有大圖像的HTML快照頁面來處理/?_escaped_fragment_=img=67的請求。請記住,GoogleBot不會執行Javascript。使用#!網址會告知Google檢索該頁面的替代版本(其中#!已被替換爲?_escaped_fragment_=),應該呈現爲不使用Javascript

1

最近在新聞中使用了URL的#!標籤,並更新了一個着名的博客。

http://isolani.co.uk/blog/javascript/BreakingTheWebWithHashBangs對他們最適用的東西有一個很好的描述 - 什麼時候他們可能是壞的。我認爲你在畫廊中的使用非常有效。

總之,像一個http://lifehacker.com/#!5753509/hello-world ...網址是由谷歌重寫,和其他兼容的網絡蜘蛛爲http://lifehacker.com/?_escaped_fragment_=5753509/hello-world ...

谷歌可以索引他們兩次,但你也可以使用canonical元標記以確保它知道'官方'副本​​是什麼。

1

可能的解決方案(建議在http://isolani.co.uk/blog/javascript/BreakingTheWebWithHashBangs)是使用常規鏈接並將它們翻譯爲#!在OnClick()事件中。這確保該網站顯示正常的鏈接,而不是低劣的#!.

儘管服務器需要支持兩種版本(Ajax版本和常規版本),但它確實意味着服務器需要額外的工作,但我認爲它值得。是如此醜陋..