в конец файла main_classes.php добавляете такой код:
function getCanonicalUrl($site_id = CURRENT_SITE)
{
$site_id = to_int($site_id);
$canonical_url = '';
$uri = to_str($_SERVER['REQUEST_URI']);
$query = to_str($_SERVER['QUERY_STRING']);
$link = str_replace('?' . $query, '', $uri);
$site = &singleton('site');
$alias = $site->GetCurrentAlias($site_id);
$alias_row = $site->GetAlias($alias);
if ($alias_row) {
$current_alias = $site->GetCurrentAlias($alias_row['site_id']);
$canonical_url = 'http://' . $current_alias . $link;
}
return $canonical_url;
}
а потом в макетах пишете
<link rel="canonical" href="<?=getCanonicalUrl() ?>" />
Способ гарантированно работает, независимо от настроек сервера
Суть работы в общем такова, что большинство страничек, дублирующих контент, создаются за счет get-параметров в url страницы.
Данная функция просто обрезает все get-параметры и указывает в качестве "канонической" страницу без параметров.