javascript - Angular 和 SEO 索引

标签 javascript angularjs html seo

我正在努力寻找 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_=

替换了 hashbang

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/

相关文章:

javascript - 如何通过 javascript 最可靠/简单地访问 <html> 元素?

javascript - 如果上一个为空,则清除下一个嵌套选择标签

javascript - 在 bootstrap col 中覆盖以获取全屏信息

html - 如何正确覆盖 .ng-hide 类以改变隐藏/显示性质?

javascript - 从 JSON 打印出与 HTML 中的转义字符相同的格式?

javascript - 更现代的图像 map ?

css - 在 Bootstrap 3 表单中并排设置两个输入字段的正确方法?

javascript - 我希望我的菜单根据我在 React 上的 View 进行更新(reactdom.render 的替代方案)

javascript - 将数组映射到数组 Js 中

javascript - 来自 HTML 的带有参数的 Angular js Controller 方法