2012-09-17 53 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

真的很感谢您的迅速评论 –