2015-03-13 1 views
2

Обычно, если я не хочу Google сканировать страницу, я хотел бы добавить страницу в файле robots.txt, как так:Предотвращение Google индексирование AngularJS маршрут

User-agent: * 
Disallow: /my-page 

Чтобы предотвратить Google индексировать эту страницу , Я хотел бы удалить страницу из моего sitemap.xml добавить следующий мета-тег в <head> страницы:

<meta name="robots" content="noindex"> 

Теперь, если я использую AngularJS обрабатывать все маршрутизации для одного приложения страницы, как остановить индексацию Google и/или сканирование маршрута? Угловой приносит контент в ng-view для каждого маршрута, поэтому информация в <head> остается неизменной на каждом маршруте. Я не думаю, что могу добавить метатег в этом случае.

ответ

3

Если ваш корневой модуль размещен на теге <html> (<html ng-app="myApp">), вы можете изменить все свойства в <head>. Это позволяет динамически устанавливать роботы <meta> для каждой страницы. Это можно сделать с событием $routeChangeSuccess в корневом модуле. Если вы используете ui-router, вы можете установить свойство «data» на маршруте, который вы можете прочитать при каждом изменении состояния. Вы также можете использовать $ rootScope для обновления этого значения из других модулей, но это не очень хорошая практика. Лучший способ - трансляция изменений в корневой модуль из дочерних контроллеров/директив.

У меня есть пример, который динамически меняет страницу <title>, но это немного сложнее, потому что это приложение загружается вручную. Однако представьте, что существует указатель ng-app = "" и ng-controller = "" в теге <html>.

Вот событие изменения состояния: https://github.com/danmindru/angular-boilerplate-study/blob/master/src/app/_app-main/_app-main.controller.js#L14-L24

Вот слушатель для трансляции: https://github.com/danmindru/angular-boilerplate-study/blob/master/src/app/_app-main/_app-main.controller.js#L38-L40

Вот как запускается трансляция: https://github.com/danmindru/angular-boilerplate-study/blob/master/src/app/profile-feature/customer-page/customer-page.controller.js#L12

Вот <title> связывание: https://github.com/danmindru/angular-boilerplate-study/blob/master/src/index.html#L4

Однако Google не так хорошо читает эти свойства, поэтому вам придется использовать службу предварительного рендеринга t o убедитесь, что googlebot проанализирует <meta name="robots" content="noindex"> вместо чего-то вроде <meta name="robots" content="{{index}}">.

+0

спасибо. Мои приложения уже предварительно визуализируются для SEO, и я всегда добавляю корневой модуль в тег html, чтобы это работало нормально. – Coop