2016-01-24 78 views
0

我想弄清楚什么是使angularJS网络应用程序搜索引擎友好的最好方法。AngularJS和SEO澄清

我读过这个How do search engines deal with AngularJS applications?

,推荐使用:<meta name="fragment" content="!">作为我的web应用程序使用html5mode。

网站访问时,根URL /和正常浏览到其他领域,但只要我重装/刷新网站(当我在根URL可不是)返回url not foundAdditionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

运行良好

现在,我的理解是,使用这个技巧,谷歌将能够正常抓取网站?我还添加了尝试使用这个第三方网站https://www.xml-sitemaps.com/创建一个网站地图,但只有一个网址(根网址)返回。

我的网站没有类似节点的服务器,它只是简单的angularJS。

解决所有这些问题的正确方法是什么?

谢谢!

+0

Google已经更新了他们关于Ajax驱动网站的抓取规范。建议阅读最新的内容。 3年的信息不再准确 – charlietfl

回答

1

基本上,你要做的就是告诉Google它正在看到的页面的内容是什么。例如,如果你有这个URL#/ services,Google只知道主页面,即example.com,因为AngularJS是一个简单的页面。 AngularJS通过javascript处理路线。因此,如果你使用html5mode,你会得到一个更好的URL,例如:/ services,但对于google来说,它仍然是一样的。

解决方案是将Google重定向到静态内容。你可以手动完成,但这很痛苦。

我向您推荐这项服务:https://prerender.io/。我将它用于我在AngularJS中创建的所有网站。 此服务会为您呈现AngularJS中的每个页面,尽管.htaccess会将Google重定向到此服务。

+0

我看到,这是使用快递,我的网站没有任何后端,它只是简单的angularjs。我如何配置它?他们只是说'npm install prerender-node --save',但是这只是下载了一堆node_modules,我不知道在做什么之后:( –

0

当访客在登录除基本网址以外的任何网址时将收到404错误,没有任何目的可以让您的网站被搜索引擎索引。所以首先要发送所有http请求到执行你的AngularJS应用程序的那个文件,在大多数情况下是index.php。您可以通过添加做到这一点下面给您的.htaccess文件:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^(.*)/$ $1 [R=301,L] 
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

现在,根据谷歌本身,你有一切就绪获得索引。几个月前我跑了一些测试,看看AngularJS应用程序是否可以在没有任何回退的情况下获得索引。它的确如此,只要它在预期中显示出来并且在Google Web Mastertools -> Crawl as Google中没有错误,它就会得到正确的索引。