Как пакет 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