Куда идем?

Да, знаю. Заголовок попахивает желтизной. Но я не шучу. Это абсолютная правда. В двух словах, проблема сводится к тому, что большинство страниц сайта, созданного на Joomla 3, никогда не будут проиндексированы поисковыми системами. Подробности далее.

Не стоит волноваться, если сайт уже сделан на Joomla 3. То, о чем пойдет речь ниже, просто гадкий баг, информация о котором добавлена в баг-трекер Joomla еще с первых версий Joomla 3. Устраняется он за пару минут. Но почему-то уже прошло большое обновление, а ошибка так и не исправлена. Но давайте по-порядку.

Существует такое понятие, как канонические URL. Вот как объясняет этот термин Google:

Что такое каноническая страница?

Каноническая страница – это рекомендуемый экземпляр из набора страниц с очень похожим содержанием.

Зачем нужно указывать каноническую страницу?

Часто сайты содержат несколько страниц, на которых перечислены одни и те же товары. Например, на одной странице продукты могут быть указаны в алфавитном порядке, а на других – упорядочены по цене или рейтингу. Примеры:

http://www.example.com/product.php?item=norvejskaya-ryba&trackingid=1234567&sort=alpha&sessionid=5678asfasdfasfd

http://www.example.com/product.php?item=norvejskaya-ryba&trackingid=1234567&sort=price&sessionid=5678asfasdfasfd

Если Google будет знать о том, что содержание этих страниц одинаково, то сможет добавить в результаты поиска только одну из них. Наши алгоритмы выбирают ту страницу, которая, по нашему мнению, лучше всего отвечает на запрос пользователя. Тем не менее, теперь пользователи могут указывать поисковым системам каноническую страницу, добавив элемент <link> с атрибутом rel="canonical" в раздел <head> неканонической версии страницы. Добавление этой ссылки и атрибута позволяет владельцам сайтов определять наборы идентичного содержания и сообщать Google: "Из всех страниц с идентичным содержанием эта является наиболее полезной. Установите для нее наивысший приоритет в результатах поиска".

Если объяснять простым языком, вы можете добавить странице A атрибут rel=canonical и ссылку на страницу Б. Тогда поисковые системы будут считать страницу А дублем страницы Б и никогда не добавят ее в индекс. Вы спросите: «Ну а при чем же тут Joomla 3?». Разработчики внедрили поддержку этого атрибута в SEF-плагин, но допустили ошибку, из-за которой все материалы категории автоматически становятся страницей А из нашего примера, а страницей B становится список материалов категории (или страница блога категории). Короче говоря, при включении SEF в Joomla 3,  всем статьям категории присваивается атрибут rel=canonical. Финиш.

Единственным исключением являются материалы, связанные напрямую с пунктом меню. Т.е. пункт меню типа «Материал».

Ошибка актуальна для последней на сегодняшний день версии Joomla 3 – Joomla 3.0.3. Что будет дальше – не знаю. Надеюсь, разработчики исправят эту глупость. Пока исправляем самостоятельно.

Находим файл: plugins/system/sef/sef.php и комментируем в нем 51 строчку:

$doc->addHeadLink($link, 'canonical');

Google довольно быстро реагирует на исправление бага. Уже через пару недель страницы будут добавлены в индекс. С Яндексом все печальнее. Практика показала, что требуется 1.5 – 3 месяца, либо писать в поддержку.

В Joomla 3.1 проблема решена для категорий, но все еще присутствует для компонентов, перенаправляя их не совсем корректно(пример: теги).

В Joomla 3.4.x ошибка решена полностью.

Об авторе
Wedal
(Виталий). Веб-разработчик полного цикла (Full Stack). Создатель и автор сайта Wedal.ru.
Основной профиль – создание сайтов и расширений на CMS Joomla.
Добавить комментарий

Комментарии  
3
wedal спасибо, оперативно. :-) А в joomla 2.5 такой ошибки часом нету?
0
slovoblud, в Joomla 2.5 такой ошибки нет.
0
я скачал последнюю версию и там строчка исправлена.думаю всё ок.
0
cerega_nm, вы про Joomla 2.5?
0
нет,я про 3.х.с неё начал.просто решил проверить ради интереса.2.5 не мог на денвер поставить долго..
0
cerega_nm, как вы проверяли? Сейчас скачал, посмотрел. Ничего не исправлено.
0
$doc->addHeadLink(htmlspecialchars($link), 'canonical');
вот так выглядит строка 53 Joomla 3.1.0 beta3
0
kkaazzoo, похоже, так и не исправили... Хотя нужно тестировать.
0
Вы лучший! :)
Ну до 3.5 ещё как до Китая раком, поэтому возьмём на заметку. :)
0
Судя по тому, что проблема не правиться, разработчики считают это не проблемой, а фичей. Типа весь вес страницы передается на ту, с которой идет анонс. И в принципе иногда это актуально. Единственно если по уму, то эта функция должны присутствовать по выбору, например, там, где в редактировании статьи в Joomla 2.5.. можно выбрать отображать вводный текст или нет (ну это так навскидку).
2
Андрей, не "фича", баг. CMS, запрещающая индексацию контента - это баг :-) .
0
А зачем индексировать страницу с анонсами материалов блога? Ведь при переходе на страницу откроется полный текст этой страницы и, она и будет основной. А поскольку в анонсах, как правило, повторение первого абзаца полной статьи, то получается частичный дубли страниц, а это "минус" для seo.
Не вижу ни чего страшного, напротив это плюс.
Да и на странице анонсов блога нет ни каким намеков на запрет индексирования...
0
fenixv, вы всё спутали. Проблема как раз в том, что наоборот. Не индексируются страницы материалов, а вместо них вес передается на страницу категории, в которой содержится данный материал.
0
дайте пример сайта, где это можно увидеть...
0
fenixv, у себя везде исправил.

Вот аналогичная тема на Joomlaforum:
http://joomlaforum.ru/index.php?topic=253973.0

На официальном форуме:
http://forum.joomla.org/viewtopic.php?f=712&t=758350

Ошибка в багтрекере:
http://joomlacode.org/gf/project/joomla/tracker/?action=TrackerItemEdit&tracker_item_id=29319
1
Сичтаю это существенным косяком. У меня очень много страниц выкинул яндекс именно по этой причине.
Спасибо за подсказку
0
Под яндекс давно уже не подстраиваюсь, иначе можно оказаться в далеком прошлом? Думаю, что яндекс уже смирился со своим угасанием. А насчет гугла, то после прочтения статьи проверил текст статей на своем сайте Joomla 3.0.3 (после ссылки подробнее), все хорошо показывается... Может что-то не так понимаю? :-)
0

Цитирую Guest:

Под яндекс давно уже не подстраиваюсь, иначе можно оказаться в далеком прошлом? Думаю, что яндекс уже смирился со своим угасанием. А насчет гугла, то после прочтения статьи проверил текст статей на своем сайте Joomla 3.0.3 (после ссылки подробнее), все хорошо показывается... Может что-то не так понимаю? :-)


Беру обратно свои слова, более старые страницы вообще не видны в поиске...
0
Проверить свой сайт легко. Перейдите в панель веб-мастеров Яндекс или Google и посмотрите раздел с ошибками индексирования.
1
Встречал похожую статью с описанием бага еще в феврале этого года
http://x-news.ru/hi-tech/8465-bag-v-sisteme-upravleniya-kontentom-joomla-3-0-3
0
Смотрю SEO профи собрались, в файле управлением сервера никому в голову не приходило ридерикт обозначить
0
Доброго времени суток!
Лучше сделать так: чтобы при очередном обновлении не исправлять глюк, нужно в шаблон index.php в самое начало вставить код:

И баг с canonical будет решен для Joomla 3
0
Не дают _

Код:

<?php
foreach ($this->_links as $key=>$item)
{
if ($item['relation'] == 'canonical')
{unset($this->_links[$key]);}
}
?>

0
Здравствуйте. Не сталкивались ли Вы с проблемой навигации по страницам в J3.3.4?
У меня после обновления она есть на главной (т.е. первая страница какой-л. категории), а если переходишь на другую (2,3, etc), то навигация пропадает.
0
Добрый день!
В 3.3.6 присутствует баг ? чего-то сам разобраться не могу....
0
Спасибо! Снял каноникал - и яндекс вебмастер разрешил поставить основное зеркало.
Во-де собака зарыта была :)
0
Здравствуйте, Виталий.
У меня такой случай.
Есть проиндексированная страница: https://site/old-page.html.
Была создана новая с идентичным содержанием: https://site/new-page.html и настроено перенаправление со старой old-page на новую new-page.
Нужно ли мне ставить rel="canonical" на новой странице или это лишнее, поскольку старая страница со временем из индекса все равно исчезнет?
0
Александр, тег canonical ставится на той странице, которую не нужно добавлять в индекс. В вашем случае это старая страница. Т.к. у вас настроен редирект, старую страницу поисковые системы никогда не загрузят, а значит не увидят на ней этот тег. Таким образом, ставить canonical в вашем случае не нужно.
0
с URL в джумке и дублями проблема была еще с joomla 1, для себя выбрал artio и все пляски закончились.