GooglebotがAjax関数でURLにアクセスしようとして問題が発生し、URLエンコードの問題が原因で失敗します。まず第一に、なぜgooglebotがJSスクリプトのJS関数内のURLにアクセスしようとしているのか少し混乱しています。
JSコード:
ajaxFunction(siteid) {
$.get(location.protocol + '//' + location.hostname + '/ajax/?ajaxscript=detail&siteid='+ siteid, function() { ... });
}
上記の関数は、リンク/ボタンがクリックされたときに呼び出されるWebページに含まれているJSスクリプトにあります。Googlebotはどういうわけか、上記の関数によって生成されたURLに直接アクセスしようとしましたが、「?」が原因でエラーが発生しました。文字はURLエンコードされているため、siteid値は渡されません。
GoogleがアクセスしようとしているURLの例:
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ベースの関数とURLに直接アクセスできる理由を知っていますか?基本的に主な問題は?は%2Fに変換されているため、必要なデータがスクリプトに渡されていません。これは、サーバーエラーログにエラーとして記録されています。