joomla дубли страниц в ПС

ggergerg5Сегодня я таки решился побороть главную проблему великой и могучей joomla — дубли страниц.

Заодно опишу что и как делать что бы вам не мучатся)

И так, есть 3 известных мне способа решения проблемы дублей в joomla.

  • Это закрытие нежелательных урлов в robots.txt
  • Содание редиректов через .htaccess
  • И подмена ссылок на уровне php.

Ну а теперь обо всем по порядку.

Обозначу сразу — все деяния производил на Joomla 1.5.25, k2 2.5.5 и joomgallery 1.7 версий.

До начала работ все файлы были стандартные и никаких модификаций не производилось.

Первый шаг — создадим правила в robots.txt

Для этого откроем роботс и пропишем следующие строки:

Disallow: /index.php?*
Disallow: /search/
Disallow: /*.pdf
Disallow: /*print=1
Disallow: /*type=atom
Disallow: /*type=rss
Disallow: /*task=rss
Disallow: /*?sl*
Disallow: *component/joomgallery/*

Последняя строка закрывает дубли созданные фотогалереей joomgallery.

Сохраняем изменения и закрываем файл. Часть дублей уже скрыты от поисковиков, но для юзеров имет место быть.

Теперь открываем файл .htaccess. Он лежит в корне сайта. Если вдруг у вас файл имеет имя htaccess.txt то смело переименовываем его в .htaccess (точка в начале обязательна).

Дубли страниц с www и без. страница с www и без является разной с точки зрения поисковиков. Поэтому нам необходимо убрать www из поиска. Сделать это можно с помощью 301 редиректа. Редирект — это перенаправление с одного адреса на другой. В нашем случае это перенаправление со страницы с www на эту же страницу без трех букв).

Что бы убрать www добавляем следующие строки в .htaccess :

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.site.ru
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

Далее нам необходимо убрать дубли главной страницы joomla:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://адресвашегосайта.ru/ [R=301,L]

Стоит отметить что после склейки www надо указать поисковикам нашу главную страницу.

Для google выбрать свой предпочтительный домен в аккаунте вебмастера, а для Яндекса прописать в файле robots.txt директиву:

Host: ваш сайт.ru

На этом универсальные решения закончились. Значительная часть возможных дублей уже склеена, но и остается немало. Что бы снизить количество дублей до минимума потребуется вносить изменения в файлы шаблонов компонентов.

Моё самое любимое расширение Joomla — K2. Им (K2) я заменяю и com_content и магазин и каталог и много чего еще. И сейчас будем убирать дубли именно в нём.

убираем дубли страниц в K2:

Открываем папку с шаблоном компонента. ( шаблон k2 изначально лежит в папке с компонентом components/com_k2/templates/default/)

Для странички материала item.php добавляем в начале файла:

<?php
if ($this->item->link!= JRequest::getURI()) JApplication::redirect($this->item->link,»,» ,true);
?>
Для странички категории category.php так же добавляем в начале файла:
php
<?php
$this->original_link = JRoute::_(K2HelperRoute::getCategoryRoute(JRequest::getVar('id'),
0));
if (JRequest::getInt('start') > 0) $this->original_link .= "?start=" . JRequest::getVar('start');
$this->real_link = JRequest::getURI();
if ($this->original_link != $this->real_link) JApplication::redirect($this->original_link,'','' ,true);
?>

Вышеописанные действия избавят нас от ~95% дублей страниц любимой joomla. На сим прощаюсь всем спасибо)