Оптимизация поиска Google для вызовов ajax - PullRequest
2 голосов
/ 25 января 2011

У меня есть страница на моем сайте, на которой есть список вещей, которые часто обновляются.Этот список создается путем вызова сервера через jsonp, возврата json и преобразования его в html.Быстро и гладко.

К сожалению, Google не может его проиндексировать.После прочтения о том, как это сделать в соответствии с Руководством по сканированию AJAX от Google , я немного растерялся и нуждаюсь в пояснениях и подтверждениях:

Страницы ajax должны реализовывать только правилаправо?В настоящее время у меня есть URL-адрес отдыха, такой как

[site]/base/junkets/browse.aspx?page=1&rows=18&sidx=ScoreAll&sord=desc&callback=jsonp1295964163067

, который должен был бы выглядеть примерно так:

[site]/base/junkets/browse.aspx#page=1&rows=18&sidx=ScoreAll&sord=desc&callback=jsonp1295964163067

И когда Google называет это так

[site]/base/junkets/browse.aspx#!page=1&rows=18&sidx=ScoreAll&sord=desc&callback=jsonp1295964163067

Iпридется доставить снимок html.

Зачем заменять?с # ?Создание html-снимков кажется очень громоздким.Достаточно ли будет просто показывать простые ссылки?В моем случае я был бы рад, если бы Google индексировал только страницы с вещами.

Ответы [ 2 ]

4 голосов
/ 27 января 2011

Похоже, вы неправильно поняли руководство по сканированию AJAX.Обозначение #! должно использоваться для ссылок на страницу , в которой находится ваше AJAX-приложение, а не на URL-адрес службы, к которой обращается ваше приложение.Например, если я получу доступ к вашему приложению, перейдя на example.com/app/, то вы сделаете сканирование страницы, вместо ссылки на example.com/app/#!page=1.

Теперь, когда робот Googlebot видит этот URL-адрес в ссылке, а не наexample.com/app/#!page=1 - что означает выдачу запроса на example.com/app/ (напомним, что хеш никогда не отправляется на сервер) - он запросит example.com/app/?_escaped_fragment_=page=1.Если в запросе присутствует _escaped_fragment_, вы знаете, что хотите вернуть статическую HTML-версию вашего контента.

Почему все это необходимо?Робот Googlebot не выполняет сценарий (и при этом он не знает, как индексировать ваши объекты JSON), поэтому у него нет возможности узнать, что будет перед вашими пользователями после запуска ваших сценариев и загрузки контента.Итак, ваш сервер должен сделать тяжелую работу по созданию HTML-версии того, что ваши пользователи в конечном итоге увидят в версии AJAXy.

Итак, каковы ваши дальнейшие шаги?

Первый , либо измените ссылки, указывающие на ваше приложение, чтобы включить #!page=1 (или что-то еще), либо добавьте <meta name="fragment" content="!"> в HTML вашего приложения.(См. Пункт 3 Руководства по сканированию AJAX .)

Когда пользователь меняет страницы (если это применимо), вам также следует обновить хеш, чтобы отобразить текущую страницу.Вы можете просто установить location.hash='#!page=<em>n</em>';, но я бы порекомендовал использовать отличный плагин jQuery BBQ , чтобы помочь вам управлять хэшем страницы.(Таким образом, вы можете прослушивать изменения хеша, если пользователь вручную изменяет их в адресной строке.) Предупреждение: текущая выпущенная версия BBQ (1.2.1) не поддерживает URL-адреса для обхода AJAX, но самая последняя версия вмастер Git (1.3pre) делает, так что вам нужно взять его здесь .Затем просто установите параметр сканирования AJAX:

$.param.fragment.ajaxCrawlable(true);

Секунда , вам нужно будет добавить некоторую логику на стороне сервера в example.com/app/, чтобы обнаружить присутствие _escaped_fragment_ встрока запроса и возвращает статическую HTML-версию страницы, если она есть.Вот где руководство Google по созданию снимков HTML может оказаться полезным.Звучит так, как будто вы захотите использовать вариант 3. Вы также можете изменить свой сервис для вывода HTML в дополнение к JSON.

0 голосов
/ 27 января 2011

Я более или менее разочаровался в этом. Кажется, что альтернативы генерации html на сервере и его доставке в html bdoy действительно нет, если вы хотите, чтобы goolge индексировал ваш каталог.

Я даже попытался добавить раздел, завернутый в пользовательский элемент управления .net, который реализовал простую HTML-версию каталога. Но Google также удалось игнорировать ..

Итак, в конце концов, мой каталог был деаджаксифицирован. (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...