Как стать автором
Обновить

Комментарии 15

Такое решение вполне имеет право на сущестование, но существует более универсальный способ в виде рендеринга целевых страниц с помощью PhantomJS и отдачи роботам результирующего HTML. Результат рендеринга, конечно, хорошо бы закешировать.
Да, об этом стоило упомянуть, my fault.

Сказать по правде, этот способ был выбран из-за определенных ограничений хостера. В частности, это обычный хостинг, а не VPS, куда можно поставить, что душе угодно. Потому этот способ будет особенно интересен тем, кто хочет пощупать это без приобретения VPS.
prerender.io решает эти проблемы(самому в деле, правда, никак не до ведётся испробовать). Автор, кстати, хабровчинин.
Как я говорил выше, решения со сторонними пакетами не всегда возможны.
Про сторонние пакеты я упустил из виду.
Prerander это ещё и сервис, так что его можно и не ставить на свой сервер, а пускать через их сервера. Правда тогда будет иметь место финансовые ограничения :) но бесплатного плана для небольших проектов должно хватать.
Есть ещё интересные варианты. Многие (а может даже почти все) поисковики знают, что людям нужна ajax-навигация. И поэтому в целом есть некоторое соглашение (простите меня, может даже спецификация есть нужная, я не вдавался в подробности) о том, что поисковик, видя #!fragment в урле, пытается постучать на сервер по тому же адресу, но с заменой фрагментной части на ?_escaped_fragment_=fragment (Google, Yandex, Bing). И вам просто по этому адресу надо располагать статичный контент страницы.
Если вы ленивый (или у вас другие причины, как у меня), и не хотите генерировать статичный контент, и, кроме того, вам вообще никак не испытать прелести Phantom JS (например вас жестоко заперли на шаред хостинге), то можно поюзать вот эту штуку ajaxsnapshots.com (не сочтите за рекламу, сам только недавно нашёл). Обычно хотя бы .htaccess вам доступен и его как раз оказывается достаточно.
P.S. Ой, оказывается выше уже написали про аналогичный Prerender. Ну да ладно, пусть полежит тут альтернативный вариант.
Потому что роботы не исполняют JavaScript.

С 2011 года исполняют и яндекс и гугл. Если поискать, можно найти кучу экспериментов по этому поводу. Это если в общем говорить, а не об angular именно, где действительно с этим много проблем. Небольшой пруф.
Там не так всё хорошо, но, тем не менее javascript исполняется и страницы рендерятся. Этим занимается специальный умный бот, который ходит очень редко и не на все сайты.
Вот здесь яндекс неоднократно описывал как они это делают и зачем им это нужно помимо обычной индексации. В частности там много механизмов и метрик для борьбы со спамом (чтобы люди не подделывали навигацию, добавляли скрытый контент и т.д.).

Как раз в 2010-2011 году был бум злоупотребления javascript, когда seo оптимизаторы создавали разную навигацию для поисковиков и людей переправляя внутренние веса от ссылок на определённые страницы.

Я этот вопрос плотно изучал, поэтому если что, то могу подсказать.
Ах да, забыл спросить, вы там боролись с facebook и twitter за «SEO-friendly», какое отношение их роботы к SEO имеют? :)
Вот в случае с Angular все получается достаточно печально в плане поисковиков либо мне так «везло» и ни разу их специальный умный бот ко мне не заходил.

И, да, это не совсем SEO, но тоже оптимизация, ближе к SMO, но не совсем оно, спасибо.
Этому автору бессмысленно задавать вопросы по содержанию «его» постов. Он не знает ответа. Поскольку просто пересказывает своими словами чужие статьи, добавляя немного отсебятины. В данном случае это www.michaelbromley.co.uk/blog/171/enable-rich-social-sharing-in-your-angularjs-app и там про сео как раз ничего нет.

Кстати, я в сео не специалист, но слышал, что поисковики нервно реагируют, если отдаётся разный контент роботу с обычным юзер-агентом и роботу, маскирующемуся под браузер. Если это так, то решение с редиректом принесет больше вреда, чем пользы. Хотелось бы послушать мнение специалиста.
В данном контексте ни слова не было про оптимизацию под поисковые системы, это во-первых. Во-вторых, «я в сео не специалист, но слышал», нет, никто нервно не реагирует, если делать все по-человечески. В данном случае мы просто подменяем искомый контент для робота и про само существование редиректа никто ничего не знает. И контент в случае с уже отрендеренными страницами будет идентичный тому, что будет видеть пользователь.
Реакция будет зависеть от других факторов, и в некоторых случаях это будет учитываться. Это они раньше плохо относились, лет 8 назад, а сейчас с этим всё сложно.
На сайте контент может меняться в зависимости от вашего местонахождения, браузера, реферера в абсолютно безобидных целях и тут сложно грань найти.
Использование HTML5 History API, переходы по ссылкам без перезагрузки страницы и прочее, и прочее остается лишь для веб-приложений.
Это в вашем понимании оно так. Тут все зависит от требований и возможностей разработчика.

Почему так происходит?
Потому что роботы не исполняют JavaScript.
Скорее потому что разработчики сайтов не задумываются об этом заранее. Не думаю что уместно тут винить JavaScript, себя нужно винить что пишется все это не обдумав.
Коллеги. Статья очень старая. Но вопрос остается актуальным. Хотелось бы узнать мнение профессионалов насчет изменений в 2015. Например depricating ajax crowling от google. Если сайт новый и на ангуларе, как заставить его видеть страницы полностью формируемые фронэндом?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории