0

以下は私の現在のコードです https://github.com/daslicht/kiss

サーバーに複製した後、Spiderable パッケージを追加し、phantomjs を $PATH に追加しました。

私のアプリの基本的な構造は基本的にマスター詳細レイアウトです。左側には見出し (マスター) のリストがあり、右側には各見出しに応じた詳細があります。

これまでのところとても良いです...、1つのページを次のように呼び出すと:

http://78.47.126.11:3000/?_escaped_fragment_=blog/SbZayHyqKmZhCEHme/1

見出しは表示されますが、詳細は表示されません。

何がうまくいかないのか分かりますか?

現在、forever とのバンドルとして実行されています。

よろしく マーク

4

2 に答える 2

0

私が理解した場合、あなたのアプリは「blog/SbZayHyqKmZhCEHme/1」を無視しています。エラーの理由: https://github.com/meteor/meteor/issues/487

Spiderable パッケージは現在、エスケープされたフラグメントを phantomjs に送信された URL に再アタッチしないため、ページに正しいコンテンツを表示することはできません。

たとえば、googlebot が次の URL に遭遇した場合:

http://domain.com/#!page

サーバーからリクエストを行います。

http://domain.com/?_escaped_fragment_=page

ただし、現時点では、spiderable パッケージは次の URL で phantomjs を呼び出します。

http://domain.com/

私の解決策は、「 https://gist.github.com/4096777」による修正を含む独自のスパイダー可能なパッケージを作成することです

于 2014-02-18T21:07:26.530 に答える
0

Spiderable パッケージが MongoDB からのものを表示しないと思われる場合は、静的なテンプレートのもののみを表示してください。

したがって、この例では、DB ループではなく、静的なもののみが表示されます。

<template name="main">

   {{> thisWillBeOutputted}}

</template>

<template name="thisWillBeOutputted">

   <h1>This will be displayed, sweet!</h1>

   {{#each thisLoopFetchesStuffFromDBAndWontShow}}

      <!-- stuff in this loop won't be displayed :( -->

      <p>Something which won't be displayed: {{dbDoc.something}}</p>

   {{/each}}

</template>

要約すると(私が正しいと信じていること):
Spiderableパッケージは、ボットに対して何も表示しないよりはましですが(これはvanilla-meteorの場合です)、古き良きPHP /何でもサイトほど良くはありません.

編集

私はあなたの問題を誤解しました。私がすることは<meta name="fragment" content="!">、エスケープされたフラグメントのことではなく、あなたの頭に追加することです. 詳細はこちら: https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

ただし、DB スタッフが Google によって取得されないことは確かです。しかし、私は間違っている可能性があります!

于 2013-06-24T19:48:09.973 に答える