当社は、AngularJSとそのルーティングを使用して Single Page Application を開発しました。 GoogleはJavaScriptを使用してサイトを適切にインデックス付けしましたが、一部のページのインデックス付けがあまりうまくいかなかったため、HTMLのみのバージョンを開発しました。
ここに投稿されている Ajax Crawling Specification をフォローしており、<meta name='fragment' content='!'>
タグと正規のURLがあります。 http://www.example.com/foo/bar
からhttp://www.example.com/?_escaped_fragment_=/foo/bar
が取得されることを期待しています。
ただし、AJAX仕様をロールバックすると、すべてのページが2回インデックス化されることがわかりました。1つはhttp://www.example.com/foo/bar
のJavaScriptバージョンで、もう1つはhttp://www.example.com/#!/foo/bar
の新しいバージョンです。これは、コンテンツが重複しており、サイトを誤って表示しているため、私たちにとって有害です。
こことGoogleプロダクトフォーラムで同様の質問を探しましたが、何も思いつきませんでした。
疑わしい場合は、rel="canonical"
を使用してください。これは、<link rel="canonical" href="http://blog.example.com/dresses/green-dresses-are-awesome" />
を<head>
に入れるのと同じくらい簡単です。 詳細については、Googleを参照してください。
これにより、ボットが両方の「バージョン」をクロールするのを防ぐことはできませんが、Google(および他のSERP)に正規のドキュメントのインデックスのみを作成するように指示します。
JavaScriptについて本当に理解していません。
Googleインデックスでは、@ philtuneが言うように、<head>
の正規URLを使用します。ただし、http://www.example.com/foo/bar
がhttp://www.example.com/?_escaped_fragment_=/foo/bar
からフェッチされることを期待できない場合。
Google Fetchcanonical url
を取得しました。
この場合、URLはhttp://www.example.com/foo/bar
です。Googleはhttp://www.example.com/foo/bar
もインデックスします。
ページのGoogleインデックスが必要な場合は、<head>
に次のスクリプトを追加します。
<meta content = 'index、follow' name = 'googlebot' />
Google Fetch
を使用して再度フェッチします。
Note
:
googleはウェブサイトをクロールし、フォローしてクロールし、ページ上のすべてのリンクをフォローします。あなたのページにhttp://www.example.com/?_escaped_fragment_=/foo/bar
のようなリンクがあり、http://www.example.com/foo/bar
にリダイレクトする場合、http://www.example.com/foo/bar
はhttp://www.example.com/?_escaped_fragment_=/foo/bar
にリダイレクトされるため、Googleはhttp://www.example.com/foo/bar
にインデックスを付けます。