15

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

詳細

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

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バージョンをレンダリングするようにURLにを追加するようにGoogleにどのように指示しますか?

  • URLにハッシュバン(!# )がない場合でも、Google?_escaped_fragment_= はURLにを追加しますか?つまり、の代わりに、?/home/products/1/!#home/!#products/1

  • リンクされたページをGoogleにどのようにフォローさせますか?そして、?_escaped_fragment_=?を追加します ページのすべてのjsバージョンが<meta name="fragment" content="!">ヘッダーにあります。必要なのはそれだけだと思いました。

最も簡単な解決策は、スパイダブルパッケージを更新して、htmlバージョンを必要とせずにGoogle Botに返すことだと思われます?_escaped_fragment_=が、これが他の人のために機能している場合は、私が間違っていることについて興味があります。

追加情報

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

ソースによると、それはいくつかのことをします:

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

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

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

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

    b。要求されたURLには文字列が含まれています?_escaped_fragment_=

4

3 に答える 3

6

これは「Google ウェブマスター ツール」のバグだと思います。

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

編集: ページがリストされているGoogleウェブマスターツール

未選択:他のページと実質的に類似しているためにインデックスに登録されていないページ、または別の URL にリダイレクトされたページ。詳細情報.

EDIT2:ジョナタンの質問への回答:

URL にハッシュバング (!#) がない場合でも、Google?_escaped_fragment_=は URL に を追加しますか?

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

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 ボットは、?_escaped_fragment_=

于 2012-12-07T16:07:40.897 に答える
2

#!ホームなど、で始まるハッシュフラグメントがないページには、次のものが必要です。

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

醜いURL(1つwith _escaped_fragment_=)をフェッチするようにクローラーに通知します。明らかにそれは<head>セクションに入ります。

更新:質問の最後に記載されているプラ​​グインの説明によると、上記のメタタグが追加されていることに気付きました。ソースコードを表示することで、プラグインがページに含まれていることを確認できます。

www.yoursite.com/#!hashfragment通常、ホームを除く他のすべてのページには、きれいなURLのようなものが必要です。ここで、 !after hash(#)はクローラーの通知機能として機能するため、上記のメタタグを含める必要はありません。

于 2012-12-07T09:37:19.270 に答える
2

私はこの質問が答えられたことを知っていますが、グーグルからこの質問に来る人のために。このトピックにこのスクリーンキャストを含めたいと思いました。

これは、流星のスパイダー可能なパッケージを理解するのに役立ちました。 https://www.eventedmind.com/tracks/feed-archive/meteor-the-spiderable-package

于 2013-09-13T07:26:27.593 に答える