Как пакет Spiderable работает с Meteor?

Я добавил пакет spiderable package в мое приложение Meteor, и html-версия страницы возвращается при выполнении запросов с ?_escaped_fragment_= в URL-адресе, но я не могу заставить Google обходить сайт.

Подробнее

При использовании Fetch as Google в Инструменты 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>

Вопросы

  • Как вы сообщаете Google, чтобы добавить ?_escaped_fragment_= в URL-адрес, чтобы он отображал версию html?

  • Будет ли Google добавлять URL-адрес ?_escaped_fragment_= к URL-адресу, если URL-адреса не имеют hashbangs (! #)? т.е. /home, /products/1 вместо /!#home, /!#products/1?

  • Как заставить Google следовать связанным страницам? И добавьте ?_escaped_fragment_=? Все js-версии страницы имеют <meta name="fragment" content="!"> в заголовке. Я предположил, что это все, что требовалось.

Похоже, что самым простым решением было бы обновление обновления spiderable package, чтобы вернуть html-версию в Google Bot, вместо того, чтобы требовать ?_escaped_fragment_=, но если это работает на других, мне любопытно, что я "Делаю неправильно".

Дополнительная информация

Meteor spiderable package - временное решение, позволяющее веб-поисковым системам индексировать приложения Meteor.

Согласно источнику он выполняет несколько действий:

  • Он добавляет следующий тег в раздел head версии js страницы:

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

  • Используя PhantomJS, он анализирует приложение javascript и возвращает html-версию, если выполнено одно из следующих условий:

    а. Запрашивающий пользовательский агент "facebookexternalhit"

    б. Запрошенный URL-адрес содержит строку ?_escaped_fragment_=

Ответы

Ответ 1

Я считаю, что это ошибка Google Tools для веб-мастеров.

Похоже, что Google действительно сканирует сайт - страницы отображаются в результатах Google. Тем не менее, инструменты Google Webmaster по-прежнему перечисляют общие индексированные страницы как 1. Bing все еще не сканирует страницу.

EDIT: Это инструменты Google для веб-мастеров, страницы указаны как

Не выбрано: Страницы, которые не индексируются, потому что они по существу похожи на другие страницы или перенаправлены на другой URL. Дополнительная информация.

EDIT2: В ответ на вопрос Джонатана:

Будет ли Google добавлять URL-адрес ?_escaped_fragment_= к URL-адресу, если в URL-адресах нет hashbangs (! #)?

Да. Мое приложение не использует hashbangs (! #) В URL-адресах. И Google бот все еще добавляет ?_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_=

Ответ 2

Любая страница, которая не имеет хэш-фрагмента, начинающегося с #!, например дома, нуждается в этом:

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

Чтобы уведомить искателя об уродливом URL-адресе (один with _escaped_fragment_=). Очевидно, что он переходит в раздел <head>.

UPDATE: Я заметил, что в соответствии с описанием плагина, указанным в конце вашего вопроса, добавлен вышеуказанный метатег, вы можете проверить его включение на свою страницу, указав исходный код.

Обычно все остальные страницы, кроме дома, должны иметь что-то вроде www.yoursite.com/#!hashfragment в симпатичном URL-адресе, где ! после хэша (#) работает как уведомитель для искателя, так что вам не нужно включить метатег, упомянутый выше.

Ответ 3

Я знаю, что на этот вопрос был дан ответ, но для людей, которые пришли на этот вопрос из Google. Я хотел включить этот скринкаст в эту тему.

Это помогло мне понять пакет метеорных пауков. https://www.eventedmind.com/tracks/feed-archive/meteor-the-spiderable-package