4

90%JavascriptのWebページを作成しました。すべてのWebサイトは動的にレンダリングされます。

このコンテンツをサーバーでもレンダリングして、Googleがすべてのコンテンツとリンクをクロールしてインデックスに登録できるようにします。

グーグルによって禁止されないために、動的ページとサーバーレンダリングページのコンテンツはほとんど同じでなければならないことを私は知っています。

2つの異なるページをコーディングしたくありません(この場合、1つはハンドルバーを備えたクライアントからのもので、もう1つはERBを備えたサーバーからのものです)。

そこで、PhantomJSについて考えました。私が欲しいのは、グーグルから_escaped_fragment_パラメータを取得するときに、それなしでPhantomJSを使用してページを開き、これをPhantomJSからHTMLにレンダリングして、サーバーからGoogleに返すことです。このように、私は何かのために2つの異なるページを作成する必要はありません。

サーバーサイドテンプレートにもハンドルバーを使用できることは知っていますが、とにかくすべてを2回コーディングする必要があります。

PhantomJSでこれを達成する方法を知っている人はいますか?ロジックとコードを2回繰り返さず、Googleにサイトのインデックスを作成させる他の方法はありますか?

ありがとう!!!

4

1 に答える 1

10

はい、できます。

Javascriptを多用するページに以下を追加します

<meta name="fragment" content="!">

Googleボットがこのタグを見つけると、新しいhttpGETリクエストを発行します。今回は?_escaped_fragment_=、URLに追加されます。

したがって、Javascriptを使用したWebページが次の場所にある場合:

www.mysite.com/mypage

Googleは、次のURLを使用して新しいGETを発行します。

www.mysite.com/mypage?_escaped_fragment_=

Ruby GETハンドラーでは、エスケープされていないURLを使用してPhantomJsを呼び出すだけです(文字列の置換を行うだけです)。PhantomJs javascriptコードで、ページがレンダリングされるのを待ってから、通常のjavascriptを使用してHTMLを抽出し、Ruby GETハンドラーに戻します。ここで、HTMLテキスト文字列を使用してGETに応答します。

このようにして、コードを2回記述する必要はありません。ソリューションは一般的であり、何でもスナップショットを作成します。

于 2012-08-05T11:46:03.017 に答える