Как использовать турбоссылки и иметь метатеги, специфичные для каждой страницы, для SEO?

Вопрос в том, как использовать турбоссылки и иметь метатеги, специфичные для каждой страницы?

Вот приложение.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...

Когда вы щелкаете назад и вперед между панелью управления и отчетами, отображаемый тег заголовка меняется с каждым щелчком, как и следовало ожидать (турболинки обновляют заголовок каждый раз), однако метатеги не меняются, пока вы не выполните полное обновление страницы.

Как я могу разбить турболинки для определенных элементов головы?

Если я добавлю data-no-turbolink к каждой ссылке, ведущей на страницу с уникальной метаинформацией, я не вижу, какую пользу я получу, сохраняя турбоссылки.

Я прочитал проблемы с турболинками на github, и другие люди задавали вопрос, но я не нашел решения? Надеюсь, я упустил что-то очевидное.


person Joan Hughes    schedule 28.08.2013    source источник


Ответы (2)


Не думаю, что турбоссылки повлияют на SEO. Причина в том, что боты поисковых систем не щелкают ссылки с включенным javascript.

Они создают список ссылок и посещают их отдельно, чтобы получить содержимое страницы... таким образом, страница, которую получат боты поисковой системы, не будет в «цепочке нажатых турбоссылок».

Человек, использующий ваш веб-сайт, вероятно, не использует мета-тег описания, когда просматривает ваш сайт.

person Hopstream    schedule 09.01.2014

Я собираюсь ответить на свой вопрос и оставить это здесь на случай, если кто-то столкнется с такой же путаницей.

Способ «разрушить турбоссылки» для метатегов и другого кода/скриптов состоит в том, чтобы перечислить их в разделе ‹head› перед турбоссылками.

Вот суть того, что в итоге сработало для меня.

Хотя это отображает страницу с желаемым обновленным разделом ‹head›, важно помнить, что DOM по-прежнему будет тем, что было кэшировано.

Другими словами, приведенный выше код правильный. Просто не мои ожидания того, как это будет работать.

person Joan Hughes    schedule 07.09.2013
comment
Но добавьте Google Analytics JS после загрузки турбоссылки, чтобы проверка typeof Turbolinks !== 'undefined' была действительной. суть обновлена. - person Joan Hughes; 23.12.2013
comment
Это не работает для меня. Мой application.js находится ниже метатегов, но они все равно не обновляются. - person Nico; 17.03.2015