Skip to main content
Темплейты для Drupal

Drupal 7: проблема с rel="canonical" и нелюбовь Яндекса

После обновления своего блога и тщательной настройки мета-тегов, Яндекс "невзлюбил" мой блог. Проблема нашлась в теге canonical url.

Мета-тег rel="canonical" генерируется в Drupal 7 разными способами. Во-первых,  штатный canonical url, предусмотенный в самом Друпале. Предоставляется он и SEO-модулями: Metatag и Globalredirect.

Ошибка возникла из-за того, что на страницах "node/id" canonical url указывал на ту же страницу. Яндекс расценил страницы как не-канонические и справедливо решил исключить их из индекса.

Решение очевидное: надо убирать rel="canonical".

function YOUR-THEME-NAME_html_head_alter(&$head_elements) {
       
 $remove = array(
        'system_meta_content_type',
    );
    foreach ($remove as $key) {
        if (isset($head_elements[$key])) {
            unset($head_elements[$key]);
        }
    }          
  $removerel = array('shortlink', 'canonical');
  foreach ($head_elements as $key => $element) {
    if (isset($element['#attributes']['rel']) && in_array($element['#attributes']['rel'], $removerel))
                unset($head_elements[$key]);
  }
}

Функция выпиливает из head'a тэги rel=caonical и rel="shortlink". Вставляется в файл template.php вашей темы.

Shortlink убираем, чтобы индексировались страницы с альясом, а не вида node/id.

После этих манипуляций возникает проблема с дублями страниц комментариев. Но это не такая уж и проблема: ставим модуль Global Redirect версии 7.x-1.x-dev (от 30 сентября 2013 года). В нем уже присутствует чекбокс - редирект страниц вида comment/id на страницу ноды с этим комментарием.

Ну и до кучи закрываем страницы с комментариями в robots.txt

P.S. Эффект от данных манипуляций пока неизвестен, но люди, знающие о SEO больше меня, считают, что описанные манипуляции исправят ситуацию :)

12
SEO

Comments

Сергей's picture
Сергей

А может легче было бы просто прописать правильный url в модуле metateg?

Мария Шерскова's picture
Мария Шерскова

Было бы проще, если бы для ноды нужен был canonical url. Нода (статья, новость, любой другой материал) - сама по себе целевая страница, ей не нужен canonical url в принципе.

Если в таком случае убирать токены для формирования этого тега в настройках модуля Metatag (предполагая, что тогда он не должен и выводиться) - canonical url все равно выводится, только это делает сам Друпал.

Впрочем, если у вас есть идея более простого и изящного решения этой проблемы - не молчите, уверена, многие скажут Вам за это спасибо, ибо проблема распространенная.

Сергей's picture
Сергей

Не соглашусь. Есть четкая ссылка на ноду вида /noda/1425 (предположим), а есть синоним ссылки на ноды, как у вашей - /drupal/drupal-7-problema-s-relcanonical-i-nelyubov-yandeksa Соответственно у ноды есть как минимум 2 адреса. Вот для этого и существует canonical, чтобы поисковику показать где настоящий. Я так думаю ...

Мария Шерскова's picture
Мария Шерскова

Да, у Яндекса теперь приоритет не каноникал, шорт линк. В индекс он берет ту ссылку, что короче :) Значит в индексе вместо альясов будут node/id светиться.

По крайней мере в моем случае было именно так. Когда у страницы был и канонический и короткий. Яша индексировал node/id. Ну а все остальное написано в посте :)

xandeadx's picture
xandeadx

> Нода (статья, новость, любой другой материал) - сама по себе целевая страница, ей не нужен canonical url в принципе.

не согласен. тот же твиттер может пихать в url какой-нибудь мусор вроде ?utm...

Мария Шерскова's picture
Мария Шерскова

Как тогда решать проблему со ссылкой страницы в canonical на саму себя? В моем случае из-за этого из поиска Яндекса исключены практически все страницы и Я.Вебмастер показывает из в исключенных как не-канонические. Это никуда не годится.

xandeadx's picture
xandeadx

плохо представляю что такое "ссылка на саму себя" :) я везде просто удаляю shortlink. canonical остаётся на месте - http://drupalcode.org/sandbox/xandeadx/1760436.git/blob/refs/heads/maste... проблем пока не замечал

Мария Шерскова's picture
Мария Шерскова

Если честно - мне бы и в голову не пришло, если бы не очевидный факт в панели Я.Вебмастер. Как иначе объяснить ссылки в виде альясов в разделе исключенных из выдачи по признаку - не каноническая. Я не представляю :)
Единственное, что могу предположить, что связано это все с обновлением блога. Урлы поменялись, я их фиксировала 301 редиректом. Но я не специалист по SEO, поэтому не претендую на истинность своих выводов :)

Андрей's picture
Андрей

У меня была такая же проблема когда обновились url-ы и появилось много редиректов в связи с добавлением второго языка. Canonical и shorlink присутствуют. Пришлось подождать около месяца и все прошло.. Сайт переиндексировался нормально. Так что причина не в этом!

Roman's picture
Roman

Canonical - сейчас необходимо оставлять. Этот тег будет крайне необходим при переезде сайтов на https, и при ведении рекламных компаний и т.д.
Поясню - сейчас все системы рекламы следят в адресах дополнительными параметрами, и чтобы не было в индексе дублей, этот тег очень желателен.
А вот shortlink при использовании алиасов адресов и целенаправленном (или естественном seo) нужно удалять.

Julia's picture
Julia

Ситуация такая. На главной странице выводятся анонсы статей используя views Как главная страница указана страница index.html, которая является путем у views главной страницы.

Мария Шерскова's picture
Мария Шерскова
Юля, а в чем вопрос? :)