2015-02-03 2 views
0

Я разработал большое приложение angularjs с более чем 20 страницами и добавлю теги SEO. Но это плохо работает. Большая часть содержимого страниц также заполняется с помощью javascript. Вот как я реализовал теги SEO для каждой страницы.Веб-сайт Angularjs не индексируется на google

app.js

(function() { 

var app = angular.module('myApp', ['ngRoute', 'ngSanitize', 'angular-flexslider']); 

// config route 
app.config(['$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) { 
    var baseUrl = "partials/"; 

    $routeProvider.when('/', { 
     title: 'Title 1', 
     metadescription: "Description 1", 
     metakeywords: "Keyword 1", 
     templateUrl: baseUrl + 'home.html', 
     controller: 'homeCtrl' 
    }) 
    .when('/page1', { 
     title: 'Title 2', 
     metadescription: "Description 2", 
     metakeywords: "Keyword 2", 
     templateUrl: baseUrl + 'page1.html', 
     controller: 'page1Ctrl', 
    }) 

    .otherwise({ 
     redirectTo: '/' 
    }); 

    $locationProvider.html5Mode(true); 
    $locationProvider.hashPrefix('!'); 
} 
]); 

app.run(['$location', '$rootScope', function ($location, $rootScope) { 
    $rootScope.$on('$routeChangeSuccess', function (event, current, previous) { 
     $rootScope.title = current.$$route.title; 
     $rootScope.metadescription = current.$$route.metadescription; 
     $rootScope.metakeywords = current.$$route.metakeywords; 

    }); 
}]); 

}()); 

Мета-теги HTML, которые реализованы следующим образом

<!DOCTYPE html> 
<html lang="en" ng-app="lennonsApp"> 
<head> 
<base href="/"> 
<meta charset="utf-8"> 
<title ng-bind="title"></title> 
<meta name="description" content="{{metadescription}}"> 
<meta name="keywords" content="{{metakeywords}}"> 
<meta name="fragment" content="!"> 
</head> 

<body> 
    Content goes here..... 
</body> 
</html> 

Все мета-теги привязки данных работают правильно, когда страница loads.But даже после одного месяца мой сайт не ищет в поисковых системах. Этот веб-сайт размещен на сервере IIS. Мои вопросы: 1). Этот метод работает в поисковых системах? 2). Нужно ли выполнять какие-либо другие конфигурации для сервера IIS для приложения angularjs? 3) .can любой рекомендовать любую другую поддержку метод SEO

Заранее спасибо

Редактировать Я попытался google.com сайт: [доменное имя], ни один из оптимизаторов теги реализованы как выше не является осуществляется.

Редактировать Есть ли какие-либо проблемы с сервером IIS?

+0

типа в google.com сайт: [ваш домен] он расскажет вам, сколько страниц Google проиндексировано на вашем сайте. вы используете только ключевое слово для страницы? попробуйте что-то вроде sitegrader, чтобы дать вам краткое изложение вашего воздействия seo. – atmd

+0

Начать с: https://developers.google.com/webmasters/ajax-crawling/docs/getting-started – TZHX

+0

@atmd Я проверил свой сайт. Любой из мета-тегов, установленных app.js, не отображается в результатах. Швы моя реализация не поддерживает SEO.Yes, я использую только ключевое слово и название в качестве моего кода выше. –

ответ

1

Поисковые системы не выполняют JavaScript.

Для использования поисковых систем и пользователей, для которых JS не работает по какой-либо причине, вам необходимо создать «настоящую» страницу, созданную на стороне сервера. Затем используйте pushState (Angular может сделать это по своим маршрутам), чтобы нанести угловые страницы на страницы, сгенерированные сервером.

Вы можете принять решение о проблеме isomorphic и написать свой JS, чтобы он мог работать на стороне сервера или на стороне клиента (что, вероятно, связано с запуском Node.js либо вместо IIS, либо с использованием IIS в качестве прокси-сервера).

Даже тогда мета-ключевые слова почти всегда игнорируются, а мета-описания обычно игнорируются в пользу анализа фактического контента.

1

Реализация SEO на SPA-объектах не является тривиальной, и не вся поддержка поисковой системы в настоящее время я считаю google, и, возможно, bing могут сканировать SPA, но для этого нужно сделать некоторую работу. существует несколько методов, которые вы можете сделать это:

1 use !# for your angular routes instead of just # 
2 use html5 routes instead of # routes 
3 detect crawlers on your server and serve the metadata 
4 create snapshots of your site and serve them 

в основном те самые ваши варианты вы можете найти более подробную информацию в этих статьях

http://www.yearofmoo.com/2012/11/angularjs-and-seo.html https://developers.google.com/webmasters/ajax-crawling/

+0

Я реализую первые два, используя этот код $ locationProvider.html5Mode (true); $ locationProvider.hashPrefix ('!'); –

+1

они эксклюзивные, если вы используете маршрутизатор html5, вам не нужно использовать # маршрута. here https://docs.angularjs.org/guide/$location –

+0

Как я знаю, реализация pushstate в моем коде хорошо. Можете ли вы дать мне представление о том, где это пошло не так? Я немного смущен. –

Смежные вопросы