web-dev-qa-db-ja.com

AJAXコンテンツはGoogleによってインデックス付けされていません

このページでは、ユーザーはモーダル(facebookやTwitterなど)で投稿を開いています。

リンクは次のようになります

<a class="showpost" data-mpid="416246" href="/p/416246/">Open Post</a>

クリックをキャッチし、ajax呼び出しを実行し、JSON応答をHTMLに変換します。 Googleがしばらくの間ajaxを実行できることを読んだとしても、どの投稿もインデックスに登録されません。検索コンソールでレンダリングを使用して「フェッチプレビュー」を作成すると、投稿が開かれた状態でWebサイトが正しく表示されます。

50万件以上の投稿があり、そのほとんどが非常に長く内容の良いコンテンツ(製品のレビュー)を含んでおり、検索エンジンでそれらのどれも見つからないのは本当に迷惑です。

私たちが間違っていることは何ですか?

編集:数日間のさらなる研究の後、私はまだ解決策を見つけることができません。これらのリンクのサイトマップステータスは「検出済み-現在はインデックス化されていません」です。

Googleがそれを正しくレンダリングする可能性はありますが、DOMに追加されたコンテンツが小さすぎて「気付かれない」のでしょうか?そのイメージ、いくつかの段落、および既存のDIVに追加されたコメントがあり、このDIVをcssで表示します。投稿を開くときに、ページ上の他のすべてを非表示にする必要がありますか?

1
Kornel B.

GoogleはこれらのAJAXページのインデックスを作成していない可能性があります。リンクをキャッチするスクリプトの読み取りに問題があるためです。

たとえば、AJAXページが/ajax/page.htmlをロードするとします。リンクにhref = "/ p/416246 /"があるため、/ ajax/page.htmlにリンクジュースを渡したいと思われる場合、Googleはリンクジュースを/ p/416246 /に渡します。

Hrefとajax URLは、Googleがクロールするには1つのリンクに対してページが多すぎる可能性があります。

しかし、GoogleがこれらのAJAX URLをクロールしない可能性が最も高い問題は、Googleが正しく理解するためにJavascriptコードが少し複雑であることです。たとえば、AJAXに/ajax/page.htmlなどのURLがある場合、Googleはこれをクロールする可能性があります。一方、AJAXがvar z ="page.html"; var url = '/ajax/' + z;のように見える場合、またはさらに複雑なものである場合、Googlebotが正確に処理するためにこれは少し大きいかもしれません。

1
Michael d

Googleまたは他のボートは許可されていないため、データを取得できません。そうですね。ボットは、クリックやマウスイベントのようにページを操作できません。ボートがjsを読み始めることは事実ですが、画面上でクリックまたはホバリングを開始するとは言われていません。そして、あなたの場合、htmlはユーザーがクリックした後に生成されます。

これは、ユーザーアクションを実行できないというボートの制限です。そのため、同じページでそのデータのインデックスを作成する場合は、レンダリングする前に呼び出す必要があります。ボットは、ユーザークリックなどのアクションなしでユーザーから隠されているかどうかにかかわらず、それを読むのに十分なほどスマートです。

0
Anurag Jain