Начиная

  1. Обзор решения
  2. Пошаговое руководство
  3. 2. Настройте сервер для обработки запросов на URL-адреса, содержащие _escaped_fragment_
  4. 3. Обрабатывать страницы без хеш-фрагментов.
  5. 4. Подумайте об обновлении файла Sitemap, чтобы получить список новых URL-адресов AJAX.
  6. 5. При желании, но важно, проверьте работоспособность вашего приложения: посмотрите, что видит сканер...

В этом документе описываются шаги, необходимые для того, чтобы ваше приложение AJAX можно было сканировать. После того, как вы полностью освоите каждый из этих шагов, вам не понадобится много времени, чтобы реально сделать ваше приложение доступным для сканирования! Тем не менее, вам необходимо понимать каждый из этих этапов, поэтому мы рекомендуем прочитать это руководство полностью.

Обзор решения

Вкратце, решение работает следующим образом: сканер находит симпатичный URL AJAX (то есть URL, содержащий фрагмент хеша #!). Затем он запрашивает контент для этого URL с вашего сервера в слегка измененной форме. Ваш веб-сервер возвращает контент в виде HTML-снимка, который затем обрабатывается сканером. Результаты поиска покажут исходный URL.

Результаты поиска покажут исходный URL

Пошаговое руководство

1. Укажите сканеру, что ваш сайт поддерживает схему сканирования AJAX

Первый шаг к индексации вашего сайта AJAX - указать сканеру, что ваш сайт поддерживает схему сканирования AJAX. Способ сделать это - использовать специальный токен в ваших хеш-фрагментах (то есть все после знака # в URL): хеш-фрагменты должны начинаться с восклицательного знака. Например, если ваше приложение AJAX содержит URL-адрес, подобный следующему:

www.example.com/ajax.html # key = value

теперь должно стать так:

www.example.com/ajax.html #! key = value

Когда ваш сайт примет эту схему, он будет считаться "CJAX для сканирования AJAX". Это означает, что сканер увидит содержимое вашего приложения, если ваш сайт предоставит снимки HTML.

2. Настройте сервер для обработки запросов на URL-адреса, содержащие _escaped_fragment_

Предположим, вы хотите проиндексировать www.example.com/index.html#!key=value. Ваша часть соглашения заключается в том, чтобы предоставить сканеру моментальный снимок HTML этого URL, чтобы сканер мог видеть его содержимое. Как ваш сервер узнает, когда следует возвращать снимок HTML вместо обычной страницы? Ответ - это URL, который запрашивает сканер: сканер будет изменять каждый URL AJAX, например

www.example.com/ajax.html #! key = value

временно стать

www.example.com/ajax.html ? _escaped_fragment_ = key = value

Вы можете удивиться, почему это необходимо. Есть две очень важные причины:

  • Хеш-фрагменты никогда (по спецификации) не отправляются на сервер как часть HTTP-запроса. Другими словами, сканеру нужен какой-то способ, чтобы ваш сервер знал, что ему нужно содержимое для URL www.example.com/ajax.html#!key=value (в отличие от простого www.example.com/ajax.html). ).
  • С другой стороны, ваш сервер должен знать, что он должен возвращать снимок HTML, а не обычную страницу, отправляемую в браузер. Помните: снимок HTML - это все содержимое, которое появляется на странице после выполнения JavaScript. Соглашение вашего сервера заключается в том, чтобы вернуть сканеру HTML-снимок для www.example.com/index.html#!key=value (то есть исходного URL-адреса!).

Примечание . Искатель экранирует определенные символы во фрагменте во время преобразования. Чтобы получить исходный фрагмент, не забудьте удалить все символы% XX во фрагменте. Точнее говоря,% 26 должен стать &,% 20 должен стать пробелом,% 23 должен стать #, а% 25 должен стать%, и так далее.

Теперь, когда у вас есть исходный URL-адрес и вы знаете, какой контент запрашивает сканер, вам нужно создать Снимок HTML , Как ты это делаешь? Есть разные способы; вот некоторые из них:

  • Если большая часть вашего контента создается с помощью JavaScript, вы можете использовать браузер без монитора, такой как HtmlUnit получить снимок HTML. Кроме того, вы можете использовать другой инструмент, такой как crawljax или же watij.com ,
  • Если большая часть вашего контента создается с использованием серверной технологии, такой как PHP или ASP.NET, вы можете использовать существующий код и заменять только части JavaScript веб-страницы на статические или созданные на стороне HTML.
  • Вы можете создать статическую версию своих страниц в автономном режиме, как это принято в настоящее время. Например, многие приложения извлекают контент из базы данных, который затем отображается браузером. Вместо этого вы можете создать отдельную страницу HTML для каждого URL AJAX.

Настоятельно рекомендуется попробовать механизм моментального снимка HTML. Важно убедиться, что браузер без монитора действительно правильно отображает содержимое состояния вашего приложения. Наверняка вы захотите узнать, что увидит сканер, верно? Для этого вы можете написать небольшое тестовое приложение и просмотреть вывод, или вы можете использовать инструмент, такой как Инструмент проверки URL ,

Подводя итог, убедитесь, что на вашем сервере происходит следующее:

  • URL-адрес запроса в форме www.example.com/ajax.html?_escaped_fragment_=key=value возвращается в исходную форму: www.example.com/ajax.html#!key=value.
  • Токен является URL-адресом без экранирования. Самый простой способ сделать это - использовать стандартное декодирование URL. Например, в Java вы должны сделать следующее: mydecodedfragment = URLDecoder.decode (myencodedfragment, "UTF-8");
  • Возвращается снимок HTML, в идеале вместе с заметной ссылкой вверху страницы, что позволяет конечным пользователям узнать, что они достигли URL-адреса _escaped_fragment_ по ошибке. (Помните, что URL-адреса _escaped_fragment_ предназначены для использования только сканерами.) Для всех запросов, у которых нет _escaped_fragment_, сервер будет возвращать контент, как и раньше.

3. Обрабатывать страницы без хеш-фрагментов.

Некоторые из ваших страниц могут не иметь хеш-фрагментов. Например, вы можете захотеть, чтобы домашней страницей была www.example.com, а не www.example.com #! Home. По этой причине у нас есть специальное положение для страниц без хеш-фрагментов.

Примечание. Убедитесь, что вы используете эту опцию только для страниц, которые содержат динамический контент, созданный Ajax. Для страниц, которые имеют только статическое содержимое, он не предоставит сканеру дополнительную информацию, но увеличит нагрузку на серверы Google и вас.

Для того, чтобы страницы без хеш-фрагментов могли сканироваться, вы добавляете специальный метатег в заголовок HTML вашей страницы. Метатег принимает следующую форму: <meta name = "фрагмент" content = "!">

Это указывает сканеру, что он должен сканировать некрасивую версию этого URL. Согласно приведенному выше соглашению, сканер временно сопоставит симпатичный URL-адрес с соответствующим уродливым URL-адресом. Другими словами, если вы поместите <meta name = "фрагмент" content = "!"> На страницу www.example.com, сканер временно сопоставит этот URL-адрес с www.example.com?_escaped_fragment_= и запросит его у ваш сервер. Ваш сервер должен затем вернуть снимок HTML, соответствующий www.example.com. Обратите внимание, что к этому метатегу применяется одно важное ограничение: единственным допустимым содержимым является «!». Другими словами, метатег всегда будет иметь точную форму: <meta name = "фрагмент" content = "!">, Который указывает пустой фрагмент хеша, но страницу с содержимым AJAX.

4. Подумайте об обновлении файла Sitemap, чтобы получить список новых URL-адресов AJAX.

Сканеры используют файлы Sitemap для дополнения своего сканирования при обнаружении. Ваш файл Sitemap должен содержать версию ваших URL-адресов, которые вы бы предпочли отображать в результатах поиска, поэтому в большинстве случаев это будет http://example.com/ajax.html#!key=value. Не включайте ссылки, такие как http://example.com/ajax.html?_escaped_fragment_=key=value, в файл Sitemap. Робот Google не переходит по ссылкам, содержащим _escaped_fragment_! Если у вас есть страница входа на ваш сайт, такая как домашняя страница, которую вы хотели бы отображать в результатах поиска без # !, то добавьте этот URL в файл Sitemap как есть. Например, если вы хотите, чтобы эта версия отображалась в результатах поиска:

http://example.com/

затем включите:

http://example.com/

в вашем файле Sitemap и убедитесь, что <meta name = "фрагмент" content = "!"> включен в заголовок документа HTML. Для получения дополнительной информации, ознакомьтесь с нашими дополнительными статьями на Sitemaps ,

5. При желании, но важно, проверьте работоспособность вашего приложения: посмотрите, что видит сканер с помощью «Проверять URL».

Google предоставляет инструмент, который позволит вам понять, что видит сканер, Проверить URL , Вы должны использовать этот инструмент, чтобы увидеть, является ли ваша реализация правильной и может ли бот теперь видеть весь контент, который вы хотите, чтобы пользователь увидел. Также важно использовать этот инструмент, чтобы гарантировать, что ваш сайт не маскируется.

Как ваш сервер узнает, когда следует возвращать снимок HTML вместо обычной страницы?
Наверняка вы захотите узнать, что увидит сканер, верно?
Html?
Com?
Html?

Вход