Home > DLE > Боремся с дублированием контента в DLE

Боремся с дублированием контента в DLE

Как известно, в DataLife Engine, с версии 6.5 стало доступно использование ЧПУ с возможностью выбора из трех предложенных видов отображения.
Например:
http://site.ru/22-primer.html
http://site.ru/category/subcategory/22-primer.html
http://site.ru/2008/04/02/primer

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

301-redirect

Откуда поисковики могут получить информацию о альтернативных адресах одной и той же страницы? Ну во первых это возможно если установлен какой-либо сторонний модуль, которые выдает подобное, возможно это следствие того что вы изменили тип ЧПУ после того как сайт уже был проиндексирован и поисковики видят одни и те же новости по двум и более адресам, что весьма нежелательно.
Есть еще третий вариант – конкуренты могли закупить некое количество ссылок с “некорректными” адресами, чтобы в глазах поисковика появились дубли страниц, что в свою очередь может привести к смене релевантной страницы, со всеми вытекающими последствиями.

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

от автора доработки:

Это небольшой хак, установка которого займет у Вас считанные минуты. Как он работает? Хак проверяет переменную $full_link (уникальный адрес полной новости), которую генерирует движок и если адрес запрошенной новости отличается от значения в переменной $full_link, то выполняется 301 редирект на адрес полной новости, который хранится в переменной $full_link.

Сама установка занимает буквально пару минут вашего времени:

в файле /engine/modules/show.full.php

найти строку

$tpl->set( '{full-link}', $full_link );

ниже добавить

$full_link_ = !isset ($_GET['cstart']) ? $full_link : $link_page . intval ($_GET['cstart']) . ',' . $news_name . '.html';
if ($config['http_home_url'] . substr ($_SERVER['REQUEST_URI'], 1) != $full_link_) {
    header ($_SERVER['SERVER_PROTOCOL'] . '301 Moved Permanently');
    header ('Location: ' . $full_link_);
    die ();
}

Сохраняем изменения, готово!

Подходит для версий 6.5 и выше

источник: http://timoshenko.livejournal.com/3155.html

Categories: DLE Tags:
  1. No comments yet.
  1. No trackbacks yet.