Angular 和 SEO 索引
Angular and SEO indexing
我正在努力寻找 Angular SEO 问题的完整、明确且 up-to-date 的答案。
我有一个 Angular 应用程序,它有一个带有多个视图的主模板 index.html
。视图的处理方式如下:
app.config(["$routeProvider", function($routeProvider) {
$routeProvider
.when("/", {
templateUrl : "views/home.html",
controller : "HomeController",
title: "Home"
})
.when("/about", {
templateUrl : "views/about.html",
controller : "AboutController",
title: "About"
});
}]);
现在,当我转到 www.example.com/#/about
时,我会看到关于页面。
问题: Google 似乎没有索引视图中的链接或内容。
我看过教程解释 Google 现在如何执行 javascript,所以它应该呈现视图,但是当它爬行时,它用 ?_escaped_fragment_=
[=18 替换了 hashbang =]
1: 我应该启用 hashbangs 而不仅仅是 URL 中的哈希吗?这对 Google 抓取我的网站有帮助吗? Angular 解释如下:$locationProvider.hashPrefix('!');
2: 我应该在 HTML5 模式下以干净的 URL 为目标吗?例如 去 www.example.com/about
3: URL hashbang/HTML5 模式是我唯一需要担心的事情吗? Google真的会执行加载视图和更新页面标题所需的javascript,然后读取渲染结果吗?
对于您希望 Google 抓取的带有 hashbang 的每个页面,您应该提供相应的 'escaped_fragment'(快照)页面,Google 将实际访问该页面。
该页面应该只是 HTML.
据我所知,Google 不会解释 javascript 和加载您的观点。
我建议您访问此页面:Serious Angular SEO
所以,回答你的问题:
1:是;
2:否;
3:您需要提供 Google 的快照,这是实际的 SEO 工作所在;涉及服务器端工作,当在 url
中检测到 _escaped_fragment_ 时呈现快照
更新:我们不再推荐我们在 2009 年提出的 AJAX 抓取建议。
2009 年,我们提议使 AJAX 个页面可抓取。当时,我们的系统无法呈现和理解使用 JavaScript 向用户呈现内容的页面。因为 "crawlers … [were] not able to see any content … created dynamically," 我们提出了一组网站管理员可以遵循的实践,以确保他们基于 AJAX 的应用程序被搜索引擎索引。
时代变了。今天,只要您不阻止 Googlebot 抓取您的 JavaScript 或 CSS 文件,我们通常能够像现代浏览器一样呈现和理解您的网页。为反映这一改进,我们最近更新了技术网站站长指南,建议不要禁止 Googlebot 抓取您网站的 CSS 或 JS 文件。
由于我们 2009 年提案的假设不再有效,我们建议遵循渐进增强的原则。例如,您可以使用 History API pushState() 来确保更广泛的浏览器(和我们的系统)的可访问性。
http://googlewebmastercentral.blogspot.com/2015/10/deprecating-our-ajax-crawling-scheme.html
我正在努力寻找 Angular SEO 问题的完整、明确且 up-to-date 的答案。
我有一个 Angular 应用程序,它有一个带有多个视图的主模板 index.html
。视图的处理方式如下:
app.config(["$routeProvider", function($routeProvider) {
$routeProvider
.when("/", {
templateUrl : "views/home.html",
controller : "HomeController",
title: "Home"
})
.when("/about", {
templateUrl : "views/about.html",
controller : "AboutController",
title: "About"
});
}]);
现在,当我转到 www.example.com/#/about
时,我会看到关于页面。
问题: Google 似乎没有索引视图中的链接或内容。
我看过教程解释 Google 现在如何执行 javascript,所以它应该呈现视图,但是当它爬行时,它用 ?_escaped_fragment_=
[=18 替换了 hashbang =]
1: 我应该启用 hashbangs 而不仅仅是 URL 中的哈希吗?这对 Google 抓取我的网站有帮助吗? Angular 解释如下:$locationProvider.hashPrefix('!');
2: 我应该在 HTML5 模式下以干净的 URL 为目标吗?例如 去 www.example.com/about
3: URL hashbang/HTML5 模式是我唯一需要担心的事情吗? Google真的会执行加载视图和更新页面标题所需的javascript,然后读取渲染结果吗?
对于您希望 Google 抓取的带有 hashbang 的每个页面,您应该提供相应的 'escaped_fragment'(快照)页面,Google 将实际访问该页面。 该页面应该只是 HTML.
据我所知,Google 不会解释 javascript 和加载您的观点。
我建议您访问此页面:Serious Angular SEO
所以,回答你的问题:
1:是;
2:否;
3:您需要提供 Google 的快照,这是实际的 SEO 工作所在;涉及服务器端工作,当在 url
中检测到 _escaped_fragment_ 时呈现快照更新:我们不再推荐我们在 2009 年提出的 AJAX 抓取建议。
2009 年,我们提议使 AJAX 个页面可抓取。当时,我们的系统无法呈现和理解使用 JavaScript 向用户呈现内容的页面。因为 "crawlers … [were] not able to see any content … created dynamically," 我们提出了一组网站管理员可以遵循的实践,以确保他们基于 AJAX 的应用程序被搜索引擎索引。
时代变了。今天,只要您不阻止 Googlebot 抓取您的 JavaScript 或 CSS 文件,我们通常能够像现代浏览器一样呈现和理解您的网页。为反映这一改进,我们最近更新了技术网站站长指南,建议不要禁止 Googlebot 抓取您网站的 CSS 或 JS 文件。
由于我们 2009 年提案的假设不再有效,我们建议遵循渐进增强的原则。例如,您可以使用 History API pushState() 来确保更广泛的浏览器(和我们的系统)的可访问性。
http://googlewebmastercentral.blogspot.com/2015/10/deprecating-our-ajax-crawling-scheme.html