Проблема сводится к тому, что большинство страниц сайта, созданного на Joomla 3, никогда не будут проиндексированы поисковыми системами.
Страшная SEO-ошибка в Joomla 3.

Да, знаю. Заголовок попахивает желтизной. Но я не шучу. Это абсолютная правда. В двух словах, проблема сводится к тому, что большинство страниц сайта, созданного на 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 # slovoblud 29.03.2013 09:39
wedal спасибо, оперативно. :-) А в joomla 2.5 такой ошибки часом нету?
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 30.03.2013 01:00
slovoblud, в Joomla 2.5 такой ошибки нет.
Ответить | Ответить с цитатой | Цитировать
0 # cerega_nm 01.04.2013 18:23
я скачал последнюю версию и там строчка исправлена.думаю всё ок.
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 02.04.2013 01:52
cerega_nm, вы про Joomla 2.5?
Ответить | Ответить с цитатой | Цитировать
0 # cerega_nm 02.04.2013 06:59
нет,я про 3.х.с неё начал.просто решил проверить ради интереса.2.5 не мог на денвер поставить долго..
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 03.04.2013 02:26
cerega_nm, как вы проверяли? Сейчас скачал, посмотрел. Ничего не исправлено.
Ответить | Ответить с цитатой | Цитировать
0 # kkaazzoo 04.04.2013 19:10
$doc->addHeadLink(htmlspecialchars($link), 'canonical');
вот так выглядит строка 53 Joomla 3.1.0 beta3
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 05.04.2013 01:32
kkaazzoo, похоже, так и не исправили... Хотя нужно тестировать.
Ответить | Ответить с цитатой | Цитировать
0 # mistershadow 29.03.2013 10:31
Вы лучший! :)
Ну до 3.5 ещё как до Китая раком, поэтому возьмём на заметку. :)
Ответить | Ответить с цитатой | Цитировать
0 # Андрей 29.03.2013 12:25
Судя по тому, что проблема не правиться, разработчики считают это не проблемой, а фичей. Типа весь вес страницы передается на ту, с которой идет анонс. И в принципе иногда это актуально. Единственно если по уму, то эта функция должны присутствовать по выбору, например, там, где в редактировании статьи в Joomla 2.5.. можно выбрать отображать вводный текст или нет (ну это так навскидку).
Ответить | Ответить с цитатой | Цитировать
+2 # Wedal 30.03.2013 00:59
Андрей, не "фича", баг. CMS, запрещающая индексацию контента - это баг :-) .
Ответить | Ответить с цитатой | Цитировать
0 # fenixv 29.03.2013 12:28
А зачем индексировать страницу с анонсами материалов блога? Ведь при переходе на страницу откроется полный текст этой страницы и, она и будет основной. А поскольку в анонсах, как правило, повторение первого абзаца полной статьи, то получается частичный дубли страниц, а это "минус" для seo.
Не вижу ни чего страшного, напротив это плюс.
Да и на странице анонсов блога нет ни каким намеков на запрет индексирования...
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 30.03.2013 00:58
fenixv, вы всё спутали. Проблема как раз в том, что наоборот. Не индексируются страницы материалов, а вместо них вес передается на страницу категории, в которой содержится данный материал.
Ответить | Ответить с цитатой | Цитировать
0 # fenixv 30.03.2013 03:38
дайте пример сайта, где это можно увидеть...
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 30.03.2013 07:20
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 # Dzhan 05.04.2013 12:20
Сичтаю это существенным косяком. У меня очень много страниц выкинул яндекс именно по этой причине.
Спасибо за подсказку
Ответить | Ответить с цитатой | Цитировать
0 # Guest 13.04.2013 06:24
Под яндекс давно уже не подстраиваюсь, иначе можно оказаться в далеком прошлом? Думаю, что яндекс уже смирился со своим угасанием. А насчет гугла, то после прочтения статьи проверил текст статей на своем сайте Joomla 3.0.3 (после ссылки подробнее), все хорошо показывается... Может что-то не так понимаю? :-)
Ответить | Ответить с цитатой | Цитировать
0 # Guest 13.04.2013 06:57
Цитирую Guest:
Под яндекс давно уже не подстраиваюсь, иначе можно оказаться в далеком прошлом? Думаю, что яндекс уже смирился со своим угасанием. А насчет гугла, то после прочтения статьи проверил текст статей на своем сайте Joomla 3.0.3 (после ссылки подробнее), все хорошо показывается... Может что-то не так понимаю? :-)

Беру обратно свои слова, более старые страницы вообще не видны в поиске...
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 15.04.2013 02:09
Проверить свой сайт легко. Перейдите в панель веб-мастеров Яндекс или Google и посмотрите раздел с ошибками индексирования.
Ответить | Ответить с цитатой | Цитировать
+1 # Дмитрий Новиков 18.04.2013 05:05
Встречал похожую статью с описанием бага еще в феврале этого года
http://x-news.ru/hi-tech/8465-bag-v-sisteme-upravleniya-kontentom-joomla-3-0-3
Ответить | Ответить с цитатой | Цитировать
0 # simod 25.09.2013 00:48
Смотрю SEO профи собрались, в файле управлением сервера никому в голову не приходило ридерикт обозначить
Ответить | Ответить с цитатой | Цитировать
0 # Андрей76 22.01.2014 15:07
Доброго времени суток!
Лучше сделать так: чтобы при очередном обновлении не исправлять глюк, нужно в шаблон index.php в самое начало вставить код:

И баг с canonical будет решен для Joomla 3
Ответить | Ответить с цитатой | Цитировать
0 # Андрей76 22.01.2014 15:12
Не дают _Код:<?php
foreach ($this->_links as $key=>$item)
{
if ($item['relation'] == 'canonical')
{unset($this->_links[$key]);}
}
?>
Ответить | Ответить с цитатой | Цитировать
0 # usemind 30.09.2014 08:02
Здравствуйте. Не сталкивались ли Вы с проблемой навигации по страницам в J3.3.4?
У меня после обновления она есть на главной (т.е. первая страница какой-л. категории), а если переходишь на другую (2,3, etc), то навигация пропадает.
Ответить | Ответить с цитатой | Цитировать
0 # Alexxander 06.02.2015 17:15
Добрый день!
В 3.3.6 присутствует баг ? чего-то сам разобраться не могу....
Ответить | Ответить с цитатой | Цитировать
0 # PaulBoyko 21.06.2015 14:12
Спасибо! Снял каноникал - и яндекс вебмастер разрешил поставить основное зеркало.
Во-де собака зарыта была :)
Ответить | Ответить с цитатой | Цитировать
0 # Александр 24.05.2018 06:42
Здравствуйте, Виталий.
У меня такой случай.
Есть проиндексированная страница: https://site/old-page.html.
Была создана новая с идентичным содержанием: https://site/new-page.html и настроено перенаправление со старой old-page на новую new-page.
Нужно ли мне ставить rel="canonical" на новой странице или это лишнее, поскольку старая страница со временем из индекса все равно исчезнет?
Ответить | Ответить с цитатой | Цитировать
0 # Wedal 26.05.2018 05:49
Александр, тег canonical ставится на той странице, которую не нужно добавлять в индекс. В вашем случае это старая страница. Т.к. у вас настроен редирект, старую страницу поисковые системы никогда не загрузят, а значит не увидят на ней этот тег. Таким образом, ставить canonical в вашем случае не нужно.
Ответить | Ответить с цитатой | Цитировать
0 # Guest 08.11.2019 10:00
с URL в джумке и дублями проблема была еще с joomla 1, для себя выбрал artio и все пляски закончились.
Ответить | Ответить с цитатой | Цитировать