AngularJS SEO - 一劳永逸

时间:2017-01-31 12:16:09

标签: javascript angularjs .htaccess seo

我在一个包含15个子站点和13个不同架构页面的大型项目中。 目前,该网站基于ui.route所有网页和$http角度请求设置的数据。 在搜索控制台上进行测试和试用之后,看起来像google看不到我的所有页面,除了主页和来自$http请求的数据都没有显示出来。 我做错了什么?

我到目前为止所做的是:

<head>

中设置基本标记
<base href="/" />

创建.htaccess:

RewriteEngine On 
Options FollowSymLinks

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /#/$1 [L]

添加到app.config

$locationProvider.html5Mode(true);

符合我的app.config

function createState(name) {
    return {
        url: '/' + name + '/:id',
        templateUrl : 'templates/pages/' + name +'.html',
        controller : 'singlePage',
        resolve: {
           pageData: function(getData, $stateParams) {
                var params = $stateParams;
                params.type = this.self.name;
                return getData.getPageData(params.type, params)
           }
        }
    }
}
.state('info', createState('info'))
.state('news', createState('news'))
.state('event', createState('event'))

$urlRouterProvider.otherwise('/');
$locationProvider.html5Mode(true);

2 个答案:

答案 0 :(得分:2)

谷歌机器人不编译JavaScript,ui-router在这里不起作用所以当谷歌机器人来抓取URL(无论是什么网址)时,它总是会得到网站的索引页面。在服务器端通过检查用户代理检测机器人,然后您可以使用 phantomjs 加载角度应用程序并为机器人编译html。(这是我用于我的应用程序。在服务器上我有节点js)

here

了解详情

答案 1 :(得分:1)

为什么Google抓取工具不会关注UI路由器创建的链接/状态更改?

好吧,谷歌抓取机器人能够执行JavaScript(此功能不久前实现)。 但是机器人仍然像往常一样抓取URL。它正在检查href属性 您的所有a - HTML标记中的标记,并进行跟进。如果您使用的是JavaScript状态 由ui.router提供的更改功能机器人永远无法关注此链接。 它也无法识别HTML5 URL路由已更改。 - &GT;所以不会抓取/索引任何页面

您可以使用一些基本的SEO功能来抵消这种情况。但是你还有一些限制 需要处理。其中一些限制是:

  • 元标记提供的社交内容。 (使用og:image时在Facebook上共享页面等不适用于AngularJS E2E绑定)
  • 与E2E绑定一起使用的title标记无法通过社交媒体形式识别。

如何让抓取机器人为您的网页编制索引? 这非常简单,只需创建包含所有网址的sitemap.xml,将其上传到您的网络服务器并使用google webmastertools进行注册即可。谷歌机器人现在将抓取您在sitemap.xml中提供的所有网址,最后它将索引您的网页/网址! =)

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
 <url>
  <loc>http://example.com/</loc>
 </url>
 <url>
  <loc>http://example.com/anotherside/</loc>
 </url>
 <url>
  <loc>http://example.com/search/param1/param2</loc>
 </url>
</urlset> 

我们做到了这一点并且运作良好。您可以手动创建sitemap.xml。我们向前迈进了一步并自动化了这些东西。我们的XML和ui.routes 是在我们的Web应用程序的后端创建的。所以我们有一个配置JSON文件,我们在其中配置所有路由。脚本创建XML和JavaScript ui.routes 自动。

这是我们所做的结果:https://www.google.de/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=site:linslin.org&start=0

如果您想构建一个优秀的SEO /社交优化页面,请不要使用像AngularJS这样的SPA应用程序。我也不想创建预编译器。创建SPA应用程序并预​​编译它是没有意义的。在创建预编译器之前,您应该使用PHP,Node.JS,Java等来创建Web应用程序。