2013-02-14 66 views
3

我想分享我的應用程序該網址在Facebook上時: http://www.example.com/?_escaped_fragment_=v%3Bid%3DNH1NlYov3bKJFacebook的替代#V通過網址「_escaped_fragment_」共享

此網址: http://www.example.com/#!v;id=NH1NlYov3bKJ

但是,它會自動替換是錯誤的,它不會從網頁中檢索正確的標題,描述和圖片。我能做什麼?謝謝

+1

見https://developers.google.com/webmasters/ajax-crawling/docs/specification – 2013-02-14 17:06:46

回答

8

爲什麼您的網址包含序列#!?你可以改變它嗎?由於ajax內容無法抓取,因此該順序是(Google)規範的一部分,目的是使該內容可以抓取,並且大部分互聯網大魚都在使用它。

它是如何工作的?可以說你有一個像www.example.com/folder#!id=4的網址。這意味着url的一些內容由ajax提供,並且取決於信息id = 4,稱爲hash。 Google抓取工具會嘗試讀取頁面www.example.com/folder?_escaped_fragment_=id=4,而根據規範,抓取工具希望找到同一頁面的無ajax版本。

我不喜歡它,但它的工作原理,這就是爲什麼Twitter,Facebook,Groveshark和許多其他大魚正在使用該規範。所以當你在臉書(一個100%的ajax頁面)中分享grooveshark歌曲時,facebook知道在哪裏可以找到同一頁面的非ajax版本。但是因爲Facebook也試圖改變你的網址。

6

停止使用#!或按照Google指南處理轉義片段查詢。


Google's "Full Specification" for Webmasters

包含哈希代碼每個URL與感嘆號開始被認爲是一個#!網址。請注意,任何URL最多可以包含一個散列片段。每個漂亮(!#)URL具有對應的醜陋(_escaped_fragment_)URL,它是衍生自具有以下步驟:

  • 散列片段成爲查詢參數的一部分。
  • 通過在查詢參數前加上散列碎片,_escaped_fragment_ =
  • 當散列碎片成爲查詢參數的一部分時,某些字符會被轉義。這些字符在下面列出。
  • URL的所有其他部分(主機,端口,路徑,現有查詢參數等)保持不變。

在這種情況下,臉譜最初這樣做相當到難看(或客戶端的動態與抓取時)步驟。請記住,_escaped_fragment_表格應產生可重複的快照

0

哈克我知道,但我即將使用.htaccess和mod_rewrite來捕捉_escaped_fragement_網址。在我的情況下,這是因爲我製作了純粹的.html/.js單頁web應用程序,並且我需要捕捉搜索引擎何時需要快照,但是您可以使用相同的技術將醜陋的_escaped_fragment_重寫爲正確的格式爲您的網站。

-1

另外一個想法是通過快捷服務,推動正確的網址你分享之前,如http://goo.gl/

+0

這可能不起作用:快捷服務只是做一個重定向,Facebook也可能重寫重定向的URL。 – Tiddo 2014-11-27 12:43:44