2011-10-09 72 views
0

我一直在爲網絡和StackOverflow尋找答案,但是我發現沒有任何案例完全適用於我的情況。我正在使用Facebook Linter來調試FB抓取我的元標籤的方式。如果我在一個簡單的關於頁面上使用它,它會檢測一切正常,尤其是og:url元標記。Facebook Linter/Open Graph切斷了URL路徑

參見: http://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Felectionstats.com%2Fabout%2Fprivacy_policy

麻煩時,我颳了我的正常內容頁開始。儘管我已經三重檢查了我的標籤是否已經形成良好,但FB Linter將URI從URL中刪除,所以它報告說:og:url標籤只有域名名稱electionstats.com/!

參見: http://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Felectionstats.com%2Fsearch%2Fyear_from%3A2010%2Fyear_to%3A2010%2Foffice_id%3A6

的OG:url標記,實際上是在頁面上看起來是這樣的:

我懷疑它是與FB緩存的頁面,一個問題,因爲在我的關於我做了快速的代碼更改,改變元標記輸出,然後通過Linter重新運行相同的頁面,並且Linter每次都顯示這些快速更改。但由於某種原因,當我在主要內容頁面(/ search/pages)上嘗試了幾十種不同的URL組合時,我總是得到一個截斷網址,因此我的主頁上只有元字段。

我甚至推測FB會忽略一個看起來像「搜索」頁面的URL,因此我重新路由了URL和標題標籤以使用術語「探索」而不是「搜索」,但這仍然什麼都沒做 - URI仍然會被切斷。

回答

0

Oy,這很尷尬。

我在每個頁面請求的開頭都有代碼,用於檢測用戶的瀏覽器是否接受cookie;如果沒有,它會將用戶踢回主頁。 Facebook網絡爬蟲和其他網絡爬蟲一樣,不使用cookies。因此,它一直回到主頁並閱讀主頁的og/meta標籤。我的代碼更大的意外後果是,它會踢出所有網絡爬蟲試圖瞭解我的網站,包括谷歌的。

的修復:跳過cookie操作檢查,如果用戶代理字符串相匹配的部分通過普通網絡爬蟲提供的UA,e.g http://www.cult-f.net/detect-crawlers-with-php/