Я добавил пакет 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_=