3

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に変換されているため、必要なデータがスクリプトに渡されていません。これは、サーバーエラーログにエラーとして記録されています。

4

2 に答える 2

1

Googleは、これらのJavaScriptリダイレクトについて非常に興味を持っています。彼は、フルページレンダリング(JSを含む)、Googleツールバーデータ、またはChromeデータを含むこれらのURLを知っています。

私は常にすべてのAJAXリクエストにプレフィックスを使用します(例:http: //domain.com/_ajax/xxxxx)。その後、すべてのボットが/_ajax/で始まるURLをrobots.txtでクロールすることを禁止します。

X-Robots-Tag HTTPヘッダーに「noindex、nofollow」を追加することもできます。

于 2012-09-17T16:50:01.043 に答える
0

Matt Cuttsは少し前に、「Googlebotはよりスマートになり続けている」と述べました。このブログエントリも参照してください。また、2008年にはSEOmozにブログ投稿もあります。

Googlebotは、ユーザーが行うことを実行し、これまで到達できなかったコンテンツを表示しようとします。そうしないことも含まれます。

ダブルエンコーディングを念頭に置いてサーバー側でリクエストを解析できるようになる前に引数を変更できない場合はどうでしょうか。

于 2012-09-17T09:15:24.557 に答える