Подтвердить что ты не робот

Описание заголовка angularjs ngMeta не сканируется Google

В моем приложении Angularjs я использую https://github.com/vinaygopinath/ngMeta.

<title ng-bind="ngMeta.title"></title>
<meta property="og:title" content="{{ngMeta.title}}" />
<meta property="og:description" content="{{ngMeta.description}}" />

Мой код контроллера

app.controller('controller1',function($scope, $location , $http , $routeParams, ngMeta, $route){
    $scope.$route = $route;
    ngMeta.setTitle('site title');
    ngMeta.setTag('description', 'this is description');
    ngMeta.setTag('keywords', 'tag1, tsg2, tag3');
});

после загрузки страницы все работает нормально, но google показывает {{ngMeta.description}} {{ngMeta.title}} как это любая помощь для решения этой проблемы.

4b9b3361

Ответ 1

SEO в приложениях SPA не работает традиционными способами. Вам необходимо настроить код для правильного сканирования вашего веб-сайта. Это два шага два:

  • Добавьте тег meta в свой head, чтобы сообщить об этом искателю, что "это сайт, зависящий от JS, вам нужно запросить эту страницу по-другому".

Нравится: <meta name="fragment" content="!">

  1. Вы должны предварительно визуализировать свой сайт (значит: статический сайт, если JS загружен полностью и правильно запущен - правильное название и описание в голове) для URL-адресов с параметром _escaped_fragment_ = с ними.

IE: Если у вас есть www.example.com, вашему серверу необходимо вернуть предварительно обработанный сайт для запросов типа: www.example.com?_escaped_fragment_=

Почему:

Когда босс-робот видит тег meta, он будет запрашивать страницу с параметром ?_escaped_fragment_=, думая, что он получит предварительно подготовленную страницу с жестко закодированными {{ngMeta.title}} и {{ngMeta.description}}.

Итак, как сделать предварительный рендеринг сайта?

Использование: https://prerender.io/, как сказал Степан Суворов, или, checkout http://phantomjs.org/screen-capture.html или http://htmlunit.sourceforge.net/

Ресурсы

https://builtvisible.com/javascript-framework-seo/

https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

Ответ 2

Я столкнулся с аналогичной проблемой с реагированием приложений на SEO.

Я бы предположил, что лучший способ справиться с этим - это использовать предварительную передачу.

Я говорю об этом, потому что, если ваше одностраничное приложение вызывает вызовы API, искатель Google не ждет завершения вызовов ajax, поэтому технически он не читает ни одного вашего контента, проходящего через вызовы API. Мне потребовалось несколько дней, чтобы понять это с помощью веб-мастеров.

Итак, вы можете использовать phantomJS или prerender.io(который использует phantomjs внутри). Итак, что это такое, он анализирует ваш html файл и заменяет содержимое Javascript статическим контентом, тем самым обеспечивая правильный и полный контент для ботов.

Или вы можете обслуживать страницу напрямую из бэкэнд, если страница загружена впервые, поэтому это также помогает.