Боремся с дублированием контента в 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-ом редиректе средствами 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 и выше
