javascript コマンド SpiderableパッケージはMeteorとどのように機能しますか?




meteor コマンド (3)

私はこれが「Googleウェブマスターツール」のバグであると信じています。

Googleが実際にサイトをクロールしているようだ。ページはGoogleの検索結果に表示されている。 しかし、Googleのウェブマスターツールでは、インデックス付きページの総数は1と表示されています。ただし、Bingはまだページをクロールしていません。

編集: Googleのウェブマスターツールは、ページが

選択されていない他のページと実質的に類似しているために索引付けされていないページ、または別のURLにリダイレクトされたページ。 詳細情報

EDIT2:ジョナサンの質問に対する回答:

URLにhashbangs(!#)がない場合、Googleは引き続き?_escaped_fragment_=をURLに追加し?_escaped_fragment_=か?

はい。 私のアプリケーションは、URLにhashbangs(!#)を使用しません。 Googleのロボットはクロール時に?_escaped_fragment_=追加し?_escaped_fragment_= 。 ログの例を次に示します。

INFO HIT /url/2/01 66.249.72.42
INFO HIT /url/2/01?_escaped_fragment_= 66.249.72.142
INFO HIT /url/2/01 108.162.222.82
INFO HIT /url/2/01?_escaped_fragment_= 108.162.222.82
INFO HIT /url/2/05 108.162.222.82
INFO HIT /url/2/05?_escaped_fragment_= 108.162.222.214

Googleのボットは、そのURLを試してみる?_escaped_fragment_=

Meteorアプリにspiderableパッケージを追加しましたが、URLに?_escaped_fragment_=?_escaped_fragment_=てリクエストすると、ページのHTMLバージョンが返されますが、Googleがサイトをクロールすることはできません。

詳細

GoogleウェブマスターツールFetch as Googleを使用し、ルートページ"http://example.com/"をリクエストすると、ページが返されるのはJavaScriptのバージョンです。 何かのようなもの:

HTTP/1.1 200 OK
content-type: text/html; charset=utf-8
date: Fri, 30 Nov 2012 05:39:36 GMT
connection: Keep-alive
transfer-encoding: chunked

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="/e83157bdc4ff057fa3a20b82af4c11b4ebe776e7.css">
    <script type="text/javascript">
      __meteor_runtime_config__ = {"ROOT_URL":"http://www.example.com","DEFAULT_DDP_ENDPOINT":"https://www-example-com-ddp.meteor.com/"};
    </script>
    <script type="text/javascript" src="/13cf3d21ce1c4a88407ca5f3c250f186ab1738f9.js"></script>
    <meta name="fragment" content="!">
    <title>example.com</title>
  </head>
<body>
</body>
</html>

代わりに、 http://example.com/?_escaped_fragment_=をリクエストします.HTMLバージョンが返されます:

HTTP/1.1 200 OK
content-type: text/html; charset=UTF-8
date: Wed, 05 Dec 2012 02:44:09 GMT
connection: Keep-alive
transfer-encoding: chunked

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" href="/e83157bdc4ff057fa3a20b82af4c11b4ebe776e7.css">
    <title>example.com</title>
    <meta name="viewport" content="initial-scale=1.0">
  </head>
  <body>
    <ul>
      <li><a href="/">Home</a></li>
      <li><a href="/one">One</a></li>
      <li><a href="/two">Two</a></li>
    </ul>
  </body>
</html>

質問

  • ?_escaped_fragment_=を追加して、HTML版をレンダリングするようにGoogleにどのように指示しますか?

  • URLにhashbangs( !# )がない場合、Googleは引き続き?_escaped_fragment_=をURLに追加し?_escaped_fragment_=か? /!#home/!#products/1代わりに/!#home/!#products/1ますか?

  • どのようにGoogleがリンク先のページに従うようにしますか? そして、 ?_escaped_fragment_= ? ページのjsバージョンはすべて、ヘッダに<meta name="fragment" content="!">があります。 私はそれが必要とされていたものだと思った。

最も単純な解決策は、_ ?_escaped_fragment_=を必要とするのではなく、Google Botにhtmlバージョンを返すようにspiderableパッケージを更新するように思われますが、これが他の人のために働いているなら、私は何をしているのか不思議です違う。

追加情報

Meteorのスパイダブルパッケージは、Web検索エンジンがMeteorアプリケーションのインデックスを作成できるようにする一時的なソリューションです。

sourceによると、いくつかのことがあります:

  1. ページのjsバージョンのheadセクションに次のタグを追加します。

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

  2. PhantomJSを使用すると、次のいずれかの条件が満たされると、javascriptアプリケーションが解析され、HTMLバージョンが返されます。

    a。 要求しているユーザエージェントは"facebookexternalhit"

    b。 要求されたURLには、文字列?_escaped_fragment_=


#!始まるハッシュ・フラグメントを持たないページ#! 家のように、この必要があります:

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

醜いURL( with _escaped_fragment_= URL)を取得するようにクローラに通知する 明らかに、それは<head>セクションに入ります。

更新:あなたの質問の終わりに与えられたプラグインの記述に従って、上記のメタタグが追加されたことに気付きました。あなたのソースコードを表示することによってあなたのページにそれが含まれていることを確認することができます。

通常、ホーム以外の他のすべてのページには、pretty URLにwww.yoursite.com/#!hashfragmentようなものが必要! ハッシュ( # )がクローラのノーティファイヤとして機能した後、前述のメタタグを含める必要はありません。






google-webmaster-tools