如何使用turbolinks并为每个页面特定的元标记用于搜索引擎优化?

时间:2013-08-28 15:06:09

标签: jquery coffeescript ruby-on-rails-4 turbolinks

问题是如何使用turbolinks并且每个页面都有特定的元标记?

这是application.js:

//= require jquery
//= require jquery_ujs
//= require jquery.turbolinks
//= require dashboard
//= require turbolinks

这是应用程序布局视图:

<title><%= yield_or_default(:title) -%></title>
<meta name="description" content="<%= yield_or_default(:meta_desc) -%>">
<meta name="keywords" content="<%= yield_or_default(:meta_keywords) -%>">
<meta name="robots" content="<%= yield_or_default(:robots) -%>">
<%= stylesheet_link_tag    "application", media: "all", "data-turbolinks-track" => true %>
<%= javascript_include_tag "application", "data-turbolinks-track" => true %>

这是仪表板CoffeeScript:

jQuery ->
  $("#list_tags").html(list_tags())

list_tags = ->  
  "Title: \"" + $('title').text() + "\"<br />" +
  "Meta Description: \"" + $('meta[name=description]').attr('content') + "\"<br />" +
  "Meta Keywords: \"" + $('meta[name=keywords]').attr('content') + "\"<br />" +
  "Robots: \"" + $('meta[name=robots]').attr('content') + "\""

在应用程序布局的顶部:

<%= link_to "Dashboard", root_path -%>
<%= link_to "Reports", reports_path -%>
etc...

当您在仪表板和报告之间来回点击时,标题标签会随着您的预期而每次点击都会发生变化(每次都会更新标题),但是只要您执行完整页面,元标记就不会更改刷新。

如何针对特定的头部元素破坏turbolink?

如果我在每个链接上添加data-no-turbolink到具有唯一元信息的页面,我看不出保持turbolink会有什么好处。

我在github上阅读了turbolinks的问题,其他人也提出了问题,但我没有看到解决方案?希望我错过了一些明显的东西。

2 个答案:

答案 0 :(得分:6)

我不认为turbolink会对SEO产生影响。原因是搜索引擎机器人没有点击启用了javascript的链接。

他们创建一个链接列表并分别访问它们以获取页面内容...因此页面搜索引擎机器人将不会出现在“点击的turbolinks链”中。

使用您网站的人在浏览您的网站时可能无法使用元描述标记。

答案 1 :(得分:2)

我将回答我自己的问题并将其保留在此处以防万一有人遇到同样的困惑。

元标记和其他代码/脚本的“破坏turbolinks”的方法是在&lt; head&gt;中列出。部分之前 turbolinks。

这是最终为我工作的gist

虽然这会使页面呈现所需的更新&lt; head&gt;需要记住的是,DOM仍将是缓存的内容。

换句话说,上面的代码是正确的。不是我对它如何运作的期望。