2012-09-17 84 views
3

我們遇到了一個問題,Googlebot試圖訪問Ajax功能上的某個網址,並且由於某些網址編碼問題而失敗。首先我們有點困惑,爲什麼googlebot試圖訪問JS腳本中JS函數內的URL。Ajax通過Google訪問的網址

JS代碼:

ajaxFunction(siteid) { 
    $.get(location.protocol + '//' + location.hostname + '/ajax/?ajaxscript=detail&siteid='+ siteid, function() { ... }); 
} 

以上函數是在JS腳本包括我們的網頁上點擊一個鏈接/按鈕時被調用。 Googlebot以某種方式嘗試直接轉到由上述函數生成的URL,並且由於「?」字符被URL編碼而導致錯誤,所以siteid值沒有通過。

示例網址,谷歌正試圖訪問:

http://www.google.com/url?sa=t&rct=j&q=duo%2Bboots&source=web&cd=4&ved=0CDQQFjAD&url=http%3A%2F%2Fwww.MYSITE.com%2Fajax%2F%253Fajaxscript%3Ddetail%26siteid%3D1 

你有任何想法,爲什麼Googlebot的直接試圖訪問由JS函數生成的URL,並有可能是Googlebot的訪問基於AJAX功能,網址直接?基本上主要的問題是,正在轉換爲%2F,因此它不會將所需的數據傳遞給我的腳本,並且在我們的服務器錯誤日誌中記錄爲錯誤。

回答

1

谷歌對這些JavaScript重定向非常好奇,他知道這些網址的整個頁面呈現(包括JS),Google工具欄數據或Chrome數據。

我總是在我的所有AJAX請求中使用前綴,例如http://domain.com/_ajax/xxxxx,然後我禁止所有漫遊器抓取以/_ajax/with robots.txt開頭的網址

您還可以在X-Robots-Tag HTTP標頭中添加「noindex,nofollow」。

+0

謝謝,我已經修復了您定義的人 –

+0

不錯,標記爲已解決! –

0

馬特·卡茨說,前一陣子是"Googlebot keeps getting smarter",也看到this blog entry甚至還有一個早在2008年

Googlebot在試圖做什麼你的用戶做的,看到的內容至今無法到達的SEOmoz博文。未能這樣做。

如果在您可能能夠使用雙重編碼解析服務器端的請求之前,您無法更改參數?

+0

真的很感謝您的迅速評論 –