我正在努力寻找 Angular SEO 问题的完整、明确和最新的答案。
我有一个 Angular 应用程序,它有一个带有多个 View 的主模板 index.html
。 View 的处理方式如下:
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 似乎没有为 View 中的链接或内容编制索引。
我看过解释 Google 现在如何执行 javascript 的教程,因此它应该呈现 View ,但是当它抓取时,它用 ?_escaped_fragment_=
1:我应该启用 hashbangs 而不仅仅是 URL 中的 hash 吗?这会有助于 Google 抓取我的网站吗? Angular 是这样解释的:$locationProvider.hashPrefix('!');
2:我应该以 HTML5 模式下的干净 URL 为目标吗?例如 前往 www.example.com/about
3: URL hashbang/HTML5 模式是我唯一需要担心的事情吗? Google 真的会执行加载 View 和更新页面标题所需的 javascript,然后读取呈现的结果吗?
最佳答案
对于您希望 Google 抓取的带有 hashbang 的每个页面,您应该提供相应的“escaped_fragment”(快照)页面,Google 将实际访问该页面。 该页面应该只是 HTML。
据我所知,Google 不会解释 javascript 并加载您的 View 。
我建议您访问此页面:Serious Angular SEO
所以,回答你的问题:
1:是;
2:否;
3:您需要为Google提供快照,这是实际的SEO工作所在;涉及服务器端工作,当在 url 中检测到 _escaped_fragment_ 时呈现快照
关于javascript - Angular 和 SEO 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28525603/