AngularJS,谷歌搜索引擎优化和页面标题

时间:2015-10-02 12:52:39

标签: angularjs seo

我遇到了谷歌网站管理员工具和我的角度应用程序的问题。 由于某种原因,页面标题没有显示。 我正在使用ui-router,所以我设置了它:

<title ng-bind="'Page title | ' + $state.current.data.pageTitle"></title>

在我的索引页面中,然后我的应用程序有了这个:

.run(['$rootScope', '$state', 'AccountService', 'SettingsService', function ($rootScope, $state, account, settings) {

    // Apply the state to the rootscope
    $rootScope.$state = $state;
}

在定义状态时,我的数据集如下:

$stateProvider.state('home', {
    url: "/",
    templateUrl: '/assets/tpl/home.tpl.html',
    controller: 'HomeController',
    controllerAs: 'controller',
    data: {
        pageTitle: 'Home'
    }
})

但这不是通过网站管理员工具获取的。所以我有一个谷歌周围有人有同样的问题,他们通过创建服务解决了它。 所以我创建了这样的服务:

.service('PageTitle', function() {
    var title = 'Kudos Sports';
    return {
        title: function() { 
            return title; 
        },

        setTitle: function(newTitle) { 
            title = newTitle; 
        }
    };
})

然后在我的索引页面上,我这样做了:

    

<!-- Required to make our application crawlable -->
<meta name="fragment" content="!" />

<meta charset="utf-8" />
<title ng-bind="controller.title()"></title>

<!-- Removed for brevity -->

我的HeadController,看起来像这样:

.controller(&#39; HeadController&#39;,[&#39; PageTitle&#39;,function(service){     var self = this;

self.title = service.title;

}]);;

然后在我的州宣言中,我这样做了:

$stateProvider.state('home', {
    url: "/",
    templateUrl: '/assets/tpl/home.tpl.html',
    controller: 'HomeController',
    controllerAs: 'controller',
    resolve: {
        pageTitle: ['PageTitle', function (service) {
            service.setTitle('Kudos Sports - Home');
        }]
    }
})

几周后,我已经检查过,我的页面标题仍未被查看。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

AngualrJS已过时,因此我不建议您使用它,但是如果您使用过它,请更新到更高的角度版本或REact或Veu。仍然是SEO的修复程序,用于更新元标记。

  <update-link rel="canonical" href="{{url}}"></update-link>
  <update-meta name="keywords" content="{{keywords}}"></update-meta>
  <update-meta name="description" content="{{description}}"></update-meta>
  <update-meta name="twitter:title" content="{{title}}"></update-meta>
  <update-meta name="twitter:description" content="{{description}}"></update-meta>
  <update-meta name="twitter:image" content="{{image}}"></update-meta>