Удаляем дублированный конетнет в Joomla

Удаляем дублированный конетнет в Joomla

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

Многим веб-мастерам и создателям сайта, известно, что при использовании джумлы, возможно создать сайт любой сложности, но при продвижении таких сайтов возникают серьезные проблемы из-за того, что движок генерирует большое количество дублей, к примеру, страница:

mysite.com/index.php/category-1/post-1

может быть доступна, по большому количеству других адресов:

mysite.com/index.php/category-1/post-1/
mysite.com/index.php/category-1/post-1.html
mysite.com/category-1/post-1
mysite.com/index.php/category-1/pos

Поисковые системы расценивают подобные страницы, как накрутку страниц в индексе, и естественно накладывают различные фильтры, наиболее известный из них, отсеивающий подобные сайты – Panda. Для удаления подобных страниц есть несколько способов:

  1. Использовать собственный движок, который не генерирует дубли :)
  2. При создании сайтов на Joomla использовать сторонние расширения (sh404sef, artio);
  3. Делать 301-ый редирект через файл .htaccess на основной контент;
  4. Закрывать сторонние страницы в файле robots.txt;
  5. Исправить внутренний код джумлы для удаления дубликатов.

Вот на 5-ом пункте, остановимся более подробно, поскольку второй пункт действующий, но создает большие нагрузки на сервер. Третий, так же действующий, но при добавлении новой страницы, необходимо ее каждый раз прописывать в «.htaccess». Прописывая дубликаты в «robots.txt» следует учитывать, что данный файл для поисковых роботов, лишь подсказка, а не строгое указания.

Именно поэтому, наиболее действующим способом, будет перенаправления на основную страницу, при помощи 301-го редиректа, как посетителей, так и роботов. Данный редирект будет работать, автоматически, для этого следует подправить несколько строк кода внутри движка.

Исправляя код в самой jooml’е при следующем обновлении движка, все изменения исчезнут.

Изменяем внутренний код CMS

1. Переходим в корневой каталог сайта, и идем: /components/com_content/views/frontpage/tmpl/, где открываем на редактирование файл: «default.php», в котором в самом верху, перед строкой: «<?php // no direct access» добавляем код:

<?php defined('_JEXEC') or die('Restricted access'); 
$this->original_link = "/";
if (JRequest::getInt('start') > 0) $this->original_link .= "index.php?start=" . JRequest::getVar('start');
$this->real_link = JRequest::getURI();
if ($this->original_link != $this->real_link) JApplication::redirect($this->original_link);
?>

Пример добавления кода в файл default.php

2. Далее, переходим в каталог: /components/com_content/views/article/tmpl/, так же открываем «default.php», и вверху прописываем:

<?php defined('_JEXEC') or die('Restricted access'); 
if ($this->article->readmore_link != JRequest::getURI()) JApplication::redirect($this->article->readmore_link);
?>

3. Вновь переходим: /components/com_content/views/category/tmpl/, на этот раз открываем на редактирование:  «blog.php», и так же вверху дописываем следующие строки:

<?php defined('_JEXEC') or die('Restricted access'); 
$this->original_link = JRoute::_(ContentHelperRoute::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);
?>

4. Последним шагом, будет, переход в каталог: /components/com_content/views/section/tmpl/, в котором открываем: «blog.php» и, так же, как и в трех предыдущих, добавляем код:

<?php defined('_JEXEC') or die('Restricted access'); 
$this->original_link = JRoute::_(ContentHelperRoute::getSectionRoute(JRequest::getVar('id')));
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);
?>

Но для нормальной работы, необходимо учесть, что в jooml’e должно быть включено формирование ЧПУ, а так, же активирована функция mod_rewrite, и переименованный файл htaccess.txt в .htaccess, после этого нужно проверить сайт на работоспособность, все операции следует проводить на локальном хостинге.

Включение ЧПУ  и mod_rewrite в Joomla

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

Как известно, поисковые роботы лояльно относятся, только к одному типу перенаправленный (редирект), а точнее к 301-му. Если проверить код ответа перенаправления с дублированной страницы, тогда увидим, что происходит 303 редирект. Для решения данной проблемы, нужно открыть файл «application.php», который расположен: libraries/joomla/application/, найти строку:

header($moved ? 'HTTP/1.1 301 Moved Permanently' : 'HTTP/1.1 303 See other');

и заменить на:

header($moved ='HTTP/1.1 301 Moved Permanently');

Если, что, то осталось неясным, смотрите видео инструкцию по применения данного метода:

Так же, возможно скачать видео в хорошем качестве, по этой ссылке.


Комментарии   

 
0 #9 Человек 17.01.2014 05:53
Данные настройки подходят для К2?
Цитировать
 
 
+1 #8 Андрей 17.11.2013 19:14
Нет файла в первом шаге /frontpage/ :sad:
Цитировать
 
 
0 #7 Админ 29.10.2013 09:45
Видимо вы что-то не правильно сделали. Я к примеру такие вещи делал сразу на хостинге, чего и вам рекомендую. С денвером бывают возникают не понятные проблемы, поэтому рекомендовать что-то сделать довольно сложно...Либо попробуйте по пунктам сделать ещё разок, либо попробуйте сделать всё тоже самое на хостинге.
Цитировать
 
 
0 #6 Евгений 29.10.2013 09:13
Попробовал сделать то, что на видео, на joomla 1.5.25
После проделанного, при переходе на главную сайта, перенаправляет на http://localhost/denwer/
А вот дубли, так и не убирает. Либо ошибки в коде, который опубликован на вашем сайте, либо Вы чего то не договариваете.
Цитировать
 
 
+1 #5 Зима 11.03.2013 14:56
это для 1.7 или 2.5 ? или для всех версий подходит?
Цитировать
 
 
+1 #4 zura 22.11.2012 14:58
pajalusta sdelai video dla joomla 2.5 ;-)
Цитировать
 
 
+1 #3 артур 12.11.2012 18:23
не получилось, наверное сайт на фреймворке что делать? как сделать? есть статья или видео?
Цитировать
 
 
+1 #2 артур 12.11.2012 18:19
у меня не получается! может у меня фреймворке ?? как его редактировать?? помогите есть видео или такая же статья?
Цитировать
 
 
-2 #1 Дарья 23.09.2012 10:55
Отлично!!! То что нужно!
Цитировать
 

Добавить комментарий


Защитный код
Обновить

CMS: WordPress

Легкость в использовании и установке, огромное количество плагинов и тем для оформления.

Последняя версия на сегодняшний день - Wordpress 3.9.1

CMS: Joomla

Многофункциональность в применении, наличие разнообразных шаблонов и расширений.

Стабильная и последняя версия Joomla 2.5.1

Лого CMS: Drupal

Устойчивость к высоким нагрузкам и постройка категорий любой вложенности.

Актуальная версия на данный момент Drupal 7.10