在我的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}}" />

我的 Controller 代码是
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');
});

后页面加载一切正常,但谷歌显示{{ngMeta.description}} {{ngMeta.title}}这样
任何解决此问题的帮助。

最佳答案

SPA应用程序中的SEO不能以传统方式运行。您必须调整一些代码才能正确爬网您的网站。有两个步骤可以做到这一点:

  • meta中添加一个head标记,以告诉爬网程序“这是一个高度依赖JS的网站,您必须以不同的方式请求此页面”。

  • 像:<meta name="fragment" content="!">
  • 您必须为带有?_escaped_fragment_ =参数的网址预呈现您的网站(方法:如果JS完全加载并正确运行,则创建一个静态网站-正确的标题和描述)。

  • IE:如果您有www.example.com,则服务器需要返回预渲染的网站以接收诸如www.example.com?_escaped_fragment_=的请求

    原因:

    当搜寻器漫游器看到meta标记时,它将请求带有?_escaped_fragment_=参数的页面,认为它将获得带有硬编码的{{ngMeta.title}}{{ngMeta.description}}的预渲染页面。

    因此,如何预渲染您的网站?

    使用:Stepan Suvorov所说的https://prerender.io/
    结帐http://phantomjs.org/screen-capture.htmlhttp://htmlunit.sourceforge.net/

    资源:

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

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

    关于angularjs - angularjs ngMeta标题说明未由Google抓取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37318380/

    10-12 14:06