在我的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="!">
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.html或http://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/