Понимание Googlebots сканирования AJAX - PullRequest
3 голосов
/ 23 марта 2012

Я просматривал документацию Googles и бесчисленные посты в блогах на эту тему, и, в зависимости от даты и источника, может показаться противоречивая информация.Просветите свою мудрость на этом скромном крестьянине, и все будет хорошо.

Я создаю бесплатный веб-сайт, где большая часть аудитории из африканских стран с плохим интернет-соединением, а клиент не может позволить себе какую-либо приличную инфраструктуру.Поэтому я решил использовать все в качестве статических html-файлов, и, если javascript доступен, я загружаю содержимое страницы непосредственно в DOM, если пользователь нажимает навигационную ссылку, чтобы предотвратить загрузку всей страницы.

Мои клиентские маршруты выглядят так:

//domain.tld/#!/page

Мой первый вопрос:Гуглбот переводит это на:

//domain.tld/_escaped_fragment_/page или //domain.tld/?_escaped_fragment_=/page?

Я сделал простой серверный маршрутизатор в php, который создает запрошенные страницы для googlebot, и я планировал перенаправить //d.tld/_escaped_fragment_/page на //d.tld/router/page.

Но при использованииGoogle «Получить как Googlebot» (впервые, я мог бы добавить), похоже, не распознает никаких ссылок на странице.Он просто возвращает «Успех» и показывает мне HTML-код главной страницы ( Обновление: При указании Fetch as Googlebot на //d.tld/#!/page он просто возвращает содержимое главной страницы, не применяя магию _escaped_fragment_).Что приводит меня ко второму вопросу:

Нужно ли следовать определенному синтаксису при использовании ссылок hashbang, чтобы googlebot мог их сканировать?

Мои ссылки выглядят так в HTML:

    <a href="#!/page">Page Headline</a>

Update1: Итак, когда я спрашиваю Fetch как Googlebot, чтобы получить //d.tld/#!/page, это отображается в журнале доступа:"GET /_escaped_fragment_/page HTTP/1.1" 301 502 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" Но, похоже, он не соответствует 301, который я настроил, и вместо этого показывает главную страницу.Должен ли я использовать 302 вместо этого?Это правило, которое я использую: RedirectMatch 301 /_escaped_fragment_/(.*) /router/$1


Обновление 2: я изменил свои планы и буду учитывать googlebot как часть моей резервной тактики без использования JavaScript.Так что теперь все ссылки указывают на маршрутизатор /router/page и затем меняются на /#!/page/ onLoad с javascript.Я пока держу вопрос открытым, если у кого-то есть блестящее решение, которое может помочь другим.

...