SEO оптимизация DataLife Engine Часть 1 » Techno-сo — Портал для вебмастера

Статья которая позволит Вам SEO оптимизировать движок DataLife Engine. Помимо этого вы найдете подробное описание об удалении ненужного функционала с движка. Статья была сложена с нескольких частей в одну и распространяется бесплатно. Мануал понятен даже новичкамХочу сказать сразу, что оптимизация делается в самом начале создания сайта, для того что бы избежать переиндексации поисковиками сайта. Ведь у вас же поменяются тайтлы, изменится доступ к некоторым страницам, одни отпадут от индекса, другие добавятся.Если же вы так и делаете, то вам придется подождать некоторое время от недели до месяца а то и больше что бы ваш сайт полностью стал соответствовать правкам да и в плане SEO тоже. Или же написать редиректы на нужные страницы.Автор статей : Gameer, так же материал был взят с alaev.info

I. Удаление ненужных частей движка.

Для начала будем удалять Календарь и Архивы. Зачем они нам, если на 99% сайтов DLE их никто не использует.

Удаление Календаря и Архива новостей

1) Открываем /index.php, находим код и удаляем :

$tpl->set ( '{calendar}', $tpl->result['calendar'] );
$tpl->set ( '{archives}', $tpl->result['archive'] );

2) Открываем файл /engine/init.php находим код и удаляем его :

require_once ENGINE_DIR . '/modules/calendar.php';

3) Заходим в /engine/modules и удаляем файл calendar.php. Ну вот и все, мы удалили календарь и архивы.Далее будем удалять вывод новостей «за весь год», «за весь месяц», «за день». Вот кто ими пользуется мне не понятно, да и суть не в том, хоть и это дубли которые можно просто скрыть от индекса, я считаю что лучше их просто удалить.

Удаление вывода новостей за год,месяц,день

1) Открываем файл /engine/engine.php, находим код и удаляем :

// ################ Новости за год #################
                        if ($year != '' and $month == '' and $day == '') {
                                if ($cstart) {
                                        
                                        $cstart = $cstart - 1;
                                        $cstart = $cstart * $config['news_number'];
                                }

                                $newsmodule = true;
                                
                                $url_page = $config['http_home_url'] . $year;
                                $user_query = "year=" . $year;
                                
                                if (isset ( $_SESSION['dle_sort_date'] )) $news_sort_by = $_SESSION['dle_sort_date'];
                                if (isset ( $_SESSION['dle_direction_date'] )) $news_direction_by = $_SESSION['dle_direction_date'];
                                
                                $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}date >= '{$year}-01-01'AND date < '{$year}-01-01' + INTERVAL 1 YEAR AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                                $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where {$stop_list}date >= '{$year}-01-01'AND date < '{$year}-01-01' + INTERVAL 1 YEAR AND approve=1" . $where_date;
                        }
                        
                        // ################ Новости за месяц #################
                        if ($year != '' and $month != '' and $day == '') {
                                if ($cstart) {
                                        $cstart = $cstart - 1;
                                        $cstart = $cstart * $config['news_number'];
                                }

                                if (intval($month) < 1 OR intval($month) > 12) {
                                        header("HTTP/1.0 301 Moved Permanently");
                                        header("Location: ".str_replace("index.php","",$_SERVER['PHP_SELF'])."{$year}/01/");
                                        die("Redirect");
                                }

                                $newsmodule = true;
                                $url_page = $config['http_home_url'] . $year . "/" . $month;
                                $user_query = "year=" . $year . "&month=" . $month;
                                
                                if (isset ( $_SESSION['dle_sort_date'] )) $news_sort_by = $_SESSION['dle_sort_date'];
                                if (isset ( $_SESSION['dle_direction_date'] )) $news_direction_by = $_SESSION['dle_direction_date'];
                                
                                $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}date >= '{$year}-{$month}-01'AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                                $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post where {$stop_list}date >= '{$year}-{$month}-01'AND date < '{$year}-{$month}-01' + INTERVAL 1 MONTH AND approve=1" . $where_date;
                        }
                
                        // ################ Новости за день #################

                        if ($year != '' and $month != '' and $day != '' and $subaction == '') {
                                if ($cstart) {
                                        $cstart = $cstart - 1;
                                        $cstart = $cstart * $config['news_number'];
                                }

                                if (intval($month) < 1 OR intval($month) > 12) {
                                        header("HTTP/1.0 301 Moved Permanently");
                                        header("Location: ".str_replace("index.php","",$_SERVER['PHP_SELF'])."{$year}/01/");
                                        die("Redirect");
                                }

                                if (intval($day) < 1 OR intval($day) > 31) {
                                        header("HTTP/1.0 301 Moved Permanently");
                                        header("Location: ".str_replace("index.php","",$_SERVER['PHP_SELF'])."{$year}/{$month}/01/");
                                        die("Redirect");
                                }

                                $newsmodule = true;                             
                                $url_page = $config['http_home_url'] . $year . "/" . $month . "/" . $day;
                                $user_query = "year=" . $year . "&month=" . $month . "&day=" . $day;
                                
                                if (isset ( $_SESSION['dle_sort_date'] )) $news_sort_by = $_SESSION['dle_sort_date'];
                                if (isset ( $_SESSION['dle_direction_date'] )) $news_direction_by = $_SESSION['dle_direction_date'];
                                
                                $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                                $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}date >= '{$year}-{$month}-{$day}' AND date < '{$year}-{$month}-{$day}' + INTERVAL 24 HOUR AND approve=1" . $where_date;
                
                        }

Далее в том же файле ищем код и удаляем его :

             if ($month) $cache_prefix .= "month_" . $month;
                                if ($year) $cache_prefix .= "year_" . $year;
                                if ($day) $cache_prefix .= "day_" . $day;

Далее ищем код и тоже его удаляем:

if ($year != '' and $month == '' and $day == '') $nam_e = $lang['title_date'] . ' ' . $year . ' ' . $lang['title_year'];
if ($year != '' and $month != '' and $day == '') $nam_e = $lang['title_date'] . ' ' . $r[$month - 1] . ' ' . $year . ' ' . $lang['title_year1'];
if ($year != '' and $month != '' and $day != '' and $subaction == '') $nam_e = $lang['title_date'] . ' ' . $day . '.' . $month . '.' . $year;

2) Открываем файл /engine/init.php находим код и удаляем его:

if (isset ( $_GET['year'] )) $year = intval ( $_GET['year'] ); else $year = '';
if (isset ( $_GET['month'] )) $month = @$db->safesql ( sprintf("%02d", intval ( $_GET['month'] ) ) ); else $month = '';
if (isset ( $_GET['day'] )) $day = @$db->safesql ( sprintf("%02d", intval ( $_GET['day'] ) ) ); else $day = '';

Далее ищем код :

if (!$newsid) $sql_skin = $db->super_query ( "SELECT category FROM " . PREFIX . "_post where month(date) = '$month' AND year(date) = '$year' AND dayofmonth(date) = '$day' AND alt_name ='$news_name'" );
else $sql_skin = $db->super_query ( "SELECT category FROM " . PREFIX . "_post where  id = '$newsid' AND approve" );

И заменяем на:

if ($newsid) $sql_skin = $db->super_query ( "SELECT category FROM " . PREFIX . "_post where  id = '$newsid' AND approve" );

3) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :

# За день
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2&day=$3 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&day=$3&cstart=$4 [L]
# За весь месяц
RewriteRule ^([0-9]{4})/([0-9]{2})(/?)+$ index.php?year=$1&month=$2 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/page/([0-9]+)(/?)+$ index.php?year=$1&month=$2&cstart=$3 [L]
# Вывод за весь год
RewriteRule ^([0-9]{4})(/?)+$ index.php?year=$1 [L]
RewriteRule ^([0-9]{4})/page/([0-9]+)(/?)+$ index.php?year=$1&cstart=$2 [L]

Все теперь мы без этой не нужной функции.Так же будем удалять В«Вывод всех последних новостей». Для меня это тоже лишняя функция, которая не столь важна для движка.

Удаление всех последних новостей

Открываем файл /engine/engine.php, находим код и удаляем его :

elseif ($do == 'lastnews') {
                        // ################ Вывод всех последних новостей #################                 
                        if ($cstart) {
                                $cstart = $cstart - 1;
                                $cstart = $cstart * $config['news_number'];
                        }

                        $newsmodule = true;
                        
                        $url_page = $config['http_home_url'] . "lastnews";
                        $user_query = "do=lastnews";
                        
                        if (isset ( $_SESSION['dle_sort_lastnews'] )) $news_sort_by = $_SESSION['dle_sort_lastnews'];
                        else $news_sort_by = "date";
                        if (isset ( $_SESSION['dle_direction_lastnews'] )) $news_direction_by = $_SESSION['dle_direction_lastnews'];
                        else $news_direction_by = "DESC";
                        
                        $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                        $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve=1" . $where_date;
                
                }

Далее в этом же файле ищем код и удаляем его:

elseif ($do == "lastnews") {
$cache_prefix = "_lastnews";
}

Ищем код и удаляем его :

elseif ($do == 'lastnews') $nam_e = $lang['last_news'];

2) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :

# вывод всех последних новостей
RewriteRule ^lastnews(/?)+$ index.php?do=lastnews [L]
RewriteRule ^lastnews/page/([0-9]+)(/?)+$ index.php?do=lastnews&cstart=$1 [L]

Удаляем так же В«Вывод всех новостей пользователя», ну что я могу еще добавить ? Не нужная функция, вот и все.

Удаление всех новостей пользователя

1) Открываем файл /engine/engine.php, находим код и удаляем его :

elseif ($subaction == 'allnews') {
                        // ################ Вывод всех новостей пользователя #################
                        if ($cstart) {
                                
                                $cstart = $cstart - 1;
                                $cstart = $cstart * $config['news_number'];
                        
                        }

                        $newsmodule = true;
                        
                        $url_page = $config['http_home_url'] . "user/" . urlencode ( $user ) . "/news";
                        $user_query = "subaction=allnews&user=" . urlencode ( $user );
                        
                        if (isset ( $view_template ) and $view_template == "rss") {
                                
                                $sql_select = "SELECT id, autor, date, short_story, full_story, xfields, title, category, alt_name FROM " . PREFIX . "_post where {$stop_list}autor = '$user' AND approve=1" . $where_date . " ORDER BY date DESC LIMIT 0," . $config['rss_number'];
                        
                        } else {
                                
                                if (isset ( $_SESSION['dle_sort_allnews'] )) $news_sort_by = $_SESSION['dle_sort_allnews'];
                                if (isset ( $_SESSION['dle_direction_allnews'] )) $news_direction_by = $_SESSION['dle_direction_allnews'];
                                
                                $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                                $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}autor = '$user' AND approve=1" . $where_date;
                        }
                        
                        $allow_active_news = true;
                
                }

Далее находим код и удаляем его :

elseif ($subaction == 'allnews') {
$cache_prefix = "_allnews_". $user;
}

Далее ищем код и удаляем его :

elseif ($subaction == 'allnews') {
        $nam_e = $lang['show_user_news'] . ' ' . $user;
        
        if ($config['allow_alt_url'] == "yes") {
                $rss_url = $config['http_home_url'] . "user/" . urlencode ( $user ) . "/" . "rss.xml";
        } else {
                $rss_url = $config['http_home_url'] . "engine/rss.php?subaction=allnews&user=" . urlencode ( $user );
        }

}

2) Открываем файл /engine/modules/profile.php, находим код и удаляем его :

$tpl->set( '[rss]', "" );
$tpl->set( '[/rss]', "" );

Далее ищем снизу же код и удаляем его :

$tpl->set( '[rss]', "" );
$tpl->set( '[/rss]', "" );

Далее ищем и удаляем :

$tpl->set_block( "'[rss](.*?)[/rss]'si", "" );

3) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :

RewriteRule ^user/([^/]*)/news(/?)+$ index.php?subaction=allnews&user=$1 [L]
RewriteRule ^user/([^/]*)/news/page/([0-9]+)(/?)+$ index.php?subaction=allnews&user=$1&cstart=$2 [L]
RewriteRule ^user/([^/]*)/news/rss.xml(/?)+$ engine/rss.php?subaction=allnews&user=$1 [L]

Вот и все, еще минус одна не нужная функция.Удаление В«Вывод непрочитанных новостей». Совсем не нужная штука, которая не правильно работает.

Удаление непрочитанных новостей

1) Открываем файл /engine/engine.php, находим код и удаляем его :

elseif ($subaction == 'newposts') {
                        // ################ Вывод непрочитанных новостей #################
                        if ($cstart) {
                                $cstart = $cstart - 1;
                                $cstart = $cstart * $config['news_number'];
                        }

                        $newsmodule = true;
                        
                        $url_page = $config['http_home_url'] . "newposts";
                        $user_query = "subaction=newposts";
                        
                        $thistime = date ( "Y-m-d H:i:s", $_TIME );
                        
                        if (isset ( $_SESSION['member_lasttime'] )) {
                                $lasttime = date ( "Y-m-d H:i:s", $_SESSION['member_lasttime'] );
                        } else {
                                $lasttime = date ( "Y-m-d H:i:s", (time () + ($config['date_adjust'] * 60) - (3600 * 4)) );
                        }
                        
                        if (isset ( $_SESSION['dle_sort_newposts'] )) $news_sort_by = $_SESSION['dle_sort_newposts'];
                        if (isset ( $_SESSION['dle_direction_newposts'] )) $news_direction_by = $_SESSION['dle_direction_newposts'];
                        
                        $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}approve=1 AND date between '$lasttime' and '$thistime' order by " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                        $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}approve=1 AND date between '$lasttime' and '$thistime'";
                        
                        $config['allow_cache'] = false;
                }

Далее находим код и удаляем тоже :

elseif ($subaction == 'newposts') $nam_e = $lang['title_new'];

2) Открываем /engine/init.php находим код и удаляем :

$tpl->set( '{newposts-link}', $config['http_home_url'] . "newposts/" );

и так же

$tpl->set( '{newposts-link}', $PHP_SELF . "?subaction=newposts" );

3) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :

# вывод непрочитанных статей
RewriteRule ^newposts(/?)+$ index.php?subaction=newposts [L]
RewriteRule ^newposts/page/([0-9]+)(/?)+$ index.php?subaction=newposts&cstart=$1 [L]

Если ваш сайт не использует теги, то давайте и их удалим :

Удаление тегов

1) Открываем файлы /engine/modules/show.short.php & show.full.php & show.costum.php находим код и удаляем :

if( $config['allow_tags'] and $row['tags'] ) {      
                $tpl->set( '[tags]', "" );
                $tpl->set( '[/tags]', "" );      
                $tags = array ();
                $row['tags'] = explode( ",", $row['tags'] );
                foreach ( $row['tags'] as $value ) {  
                        $value = trim( $value );
        if( $config['allow_alt_url'] ) $tags[] = "" . $value . "";
        else $tags[] = "" . $value . "";
        }
        $tpl->set( '{tags}', implode( ", ", $tags ) );
        } else {
        $tpl->set_block( "'[tags](.*?)[/tags]'si", "" );
        $tpl->set( '{tags}', "" );
        }

2) Открываем /engine/engine.php, находим код и удаляем :

elseif ($do == 'tags') {
                        // ################ Поиск новостей по тегу #################                  
                        if ($cstart) {
                                $cstart = $cstart - 1;
                                $cstart = $cstart * $config['news_number'];
                        }

                        $tag = urldecode ( $_GET['tag'] );

                        if ( $config['charset'] == "windows-1251" AND $config['charset'] != detect_encoding($tag) ) {
                                $tag = iconv( "UTF-8", "windows-1251//IGNORE", $tag );
                        }

                        $tag = htmlspecialchars ( strip_tags ( stripslashes ( trim ( $tag ) ) ), ENT_COMPAT, $config['charset'] );

                        define( 'CLOUDSTAG', $tag );

                        $tag = @$db->safesql ( $tag );

                        $url_page = $config['http_home_url'] . "tags/" . urlencode ( $tag );
                        $user_query = "do=tags&tag=" . urlencode ( $tag );
                
                        if (isset ( $_SESSION['dle_sort_tags'] )) $news_sort_by = $_SESSION['dle_sort_tags'];
                        if (isset ( $_SESSION['dle_direction_tags'] )) $news_direction_by = $_SESSION['dle_direction_tags'];
                        
                        $db->query ( "SELECT news_id FROM " . PREFIX . "_tags WHERE tag='{$tag}'" );
                        
                        $tag_array = array ();
                        
                        while ( $row = $db->get_row () ) {
                                
                                $tag_array[] = $row['news_id'];
                        
                        }
                        
                        if (count ( $tag_array )) {
                                
                                $tag_array = "(" . implode ( ",", $tag_array ) . ")";
                        
                        } else {
                                
                                $tag_array = "('undefined')";
                        
                        }
                        
                        $db->free ();
                        
                        $sql_select = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason FROM " . PREFIX . "_post p LEFT JOIN " . PREFIX . "_post_extras e ON (p.id=e.news_id) WHERE {$stop_list}p.id IN {$tag_array} AND p.approve=1" . $where_date . " ORDER BY " . $news_sort_by . " " . $news_direction_by . " LIMIT " . $cstart . "," . $config['news_number'];
                        $sql_count = "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE {$stop_list}id IN {$tag_array} AND approve=1" . $where_date;
                        $allow_active_news = true;
                        
                        $tag_array = array ();
                        unset ( $tag_array );

                }

Потом в этом же файле находим (13 раз) и удаляем :

p.tags,

Далее ищем код и удаляем :

elseif ($do == 'tags') {
$cache_prefix = "_tagscl_". $tag;
}

Далее ищем и удаляем следующий код :

elseif ($do == 'alltags') $nam_e = $lang['tag_cloud'];
elseif ($do == 'tags') $nam_e = stripslashes($tag);

3) Открываем файл /engine/init.php, находим код и удаляем :

if( $do == "tags" AND !$_GET['tag'] ) $do = "alltags";

4) Открываем файл /index.php, находим код и удаляем :

$tpl->set ( '{tags}', $tpl->result['tags_cloud'] );

5) Открываем файл .htaccess что в главной директории (там где index.php), находим код и удаляем :

# вывод отдельному тегу
RewriteRule ^tags/([^/]*)(/?)+$ index.php?do=tags&tag=$1 [L]
RewriteRule ^tags/([^/]*)/page/([0-9]+)(/?)+$ index.php?do=tags&tag=$1&cstart=$2 [L]

И тут оканчивается наше удаления частей с движка и начинается его оптимизация. Материал берется как с Alaev.info так и написан самостоятельно. И так приступим!

II. SEO Оптимизация

1) Уникализация метаописания description для страниц пагинации сайта

Уникализация метаописания

Открываем /engine/engine.php, находим код :

if ( ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) OR (isset($_GET['news_page']) AND intval($_GET['news_page']) > 1) ){

        if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) $page_extra = ' » '.$lang['news_site'].' '.intval($_GET['cstart']);
        else $page_extra = ' » '.$lang['news_site'].' '.intval($_GET['news_page']);

} else $page_extra = '';

Меняем на :

if ( ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) OR (isset($_GET['news_page']) AND intval($_GET['news_page']) > 1) ){

        if ( isset($_GET['cstart']) AND intval($_GET['cstart']) > 1 ) { $page_extra = ' » '.$lang['news_site'].' '.intval($_GET['cstart']); $meta_ext_page = ' стр. ' .intval($_GET['cstart']);}
        else $page_extra = ' » '.$lang['news_site'].' '.intval($_GET['news_page']);

} else { $page_extra = ''; $meta_ext_page = ''; }

Далее находим : Меняем на: 2) Улучшение SEO характеристик заголовков title

Улучшение title

Открываем /engine/engine.php, находим код :

$metatags['title'] = $nam_e . $page_extra . ' » ' . $metatags['title'];

Меняем на:

$metatags['title'] = $nam_e . $page_extra;

Далее ищем :

$metatags['title'] = $titl_e . $page_extra . ' » ' . $config['home_title'];

Меняем на :

$metatags['title'] = $titl_e . $page_extra;

Далее ищем код :

if ( $metatags['header_title'] ) $metatags['title'] = stripslashes($metatags['header_title'].$page_extra);

Меняем на:

//разные title для страниц пагинации, для первой полный title, для пагинации короткий
if ($do == "cat" and $category != '' and $subaction == '') { //если категория
        if ( $metatags['header_title'] and ! $page_extra ) $metatags['title'] = stripslashes($metatags['header_title']);
        else $metatags['title'] = stripslashes($cat_info[$category_id]['name']) . $page_extra;
} elseif ($dle_module == "main") { //если главная страница
        if ( ! $page_extra ) $metatags['title'] = stripslashes($config['home_title']);
        else $metatags['title'] = stripslashes($config['short_title']) . $page_extra;
} elseif ($metatags['header_title']) $metatags['title'] = stripslashes($metatags['header_title']);
//разные title для страниц пагинации, для первой полный title, для пагинации короткий

3) Склейка зеркал. Главное зеркало www.site.ru или site.ru

Склейка зеркал

Открываем файл .htaccess что в главной директории (там где index.php), находим код и ниже него вставляем

RewriteEngine On

А далее вставляем на выбор!1) Сайт будет открываться только по site.ru

# Определяем главное зеркало как site.ru (site.ru заменить на свой домен)
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]

2) Сайт будет открываться только по www.site.ru

#Определяем главное зеркало как www.site.ru (www.site.ru заменить на свой домен)
RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

4) Убираем index.php и index.html из адреса главной страницы

Убираем index.php

Открываем файл .htaccess что в главной директории (там где index.php), и в самом низу вставляем :

# Редиректы с index.php или index.html на сайт
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.(php|html) HTTP/
RewriteRule .* / [R=301,L]

5) Склеиваем адреса страниц /page/1/ с основными адресами для главной страницы и категорий

Склеиваем адреса страниц page

Открываем файл .htaccess что в главной директории (там где index.php), находим код :

# Редиректы
RewriteRule ^page/([0-9]+)(/?)$ index.php?cstart=$1 [L]

И выше вставляем :

# Редирект с первой страницы на основную
RewriteBase /
RewriteRule ^(.*)page/1(/|)$ $1 [R=301,L]

6) Устраняем проблему с дублированием полной новости по разным адресам

Устраняем проблему с дублированием полной новости

Открываем файл .htaccess что в главной директории (там где index.php), находим код :

# Сам пост
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6&seourl=$6 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).html$ engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5&seourl=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).html$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4&seourl=$4 [L]

RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$4&news_page=$2&cstart=$3&seourl=$5&seocat=$1 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$2&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*).html$ engine/print.php?news_page=$2&newsid=$3&seourl=$4&seocat=$1 [L]
RewriteRule ^([^.]+)/([0-9]+)-(.*).html$ index.php?newsid=$2&seourl=$3&seocat=$1 [L]

RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$3&news_page=$1&cstart=$2&seourl=$4 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.*).html$ index.php?newsid=$2&news_page=$1&seourl=$3 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*).html$ engine/print.php?news_page=$1&newsid=$2&seourl=$3 [L]
RewriteRule ^([0-9]+)-(.*).html$ index.php?newsid=$1&seourl=$2 [L]

И заменяем на:

# Сам пост
RewriteBase /
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),([0-9]+),(.*).(.*)$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&cstart=$5&news_name=$6 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/page,([0-9]+),(.*).(.*)$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 [L]
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/print:page,([0-9]+),(.*).(.*)$ engine/print.php?subaction=showfull&year=$1&month=$2&day=$3&news_page=$4&news_name=$5 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9]{4})/([0-9]{2})/([0-9]{2})/(.*).(.*)$ index.php?subaction=showfull&year=$1&month=$2&day=$3&news_name=$4 [L]
 
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$4&news_page=$2&cstart=$3 [L]
RewriteRule ^([^.]+)/page,([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$3&news_page=$2 [L]
RewriteRule ^([^.]+)/print:page,([0-9]+),([0-9]+)-(.*)$ engine/print.php?news_page=$2&newsid=$3 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^.]+)/([0-9]+)-(.*)$ index.php?newsid=$2 [L]
 
RewriteRule ^page,([0-9]+),([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$3&news_page=$1&cstart=$2 [L]
RewriteRule ^page,([0-9]+),([0-9]+)-(.*)$ index.php?newsid=$2&news_page=$1 [L]
RewriteRule ^print:page,([0-9]+),([0-9]+)-(.*)$ engine/print.php?news_page=$1&newsid=$2 [L]
RewriteRule ^([0-9]+)-(.*)$ index.php?newsid=$1 [L]

Далее открываем файл /engine/modules/show.full.php, находим код :

if ($config['seo_control'] AND ( isset($_GET['seourl']) OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false ) ) {
 
                                                if ($_GET['seourl'] != $row['alt_name'] OR $_GET['seocat'] != $c_url OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false) {
 
                                                        if ($view_template == "print") {
 
                                                                $re_url = explode ( "engine/print.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                                                $re_url = reset ( $re_url );
 
                                                        } else {
 
                                                                $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                                                $re_url = reset ( $re_url );
 
                                                        }
 
                                                        header("HTTP/1.0 301 Moved Permanently");
                                                        header("Location: {$re_url}{$c_url}/{$row['id']}-{$row['alt_name']}.html");
                                                        die("Redirect");
 
                                                }
 
                                        }

И удаляем!Далее ищем код и тоже удаляем его :

if ($config['seo_control'] AND ( isset($_GET['seourl']) OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false ) ) {
 
                                                if ($_GET['seourl'] != $row['alt_name'] OR $_GET['seocat'] OR $_GET['news_name'] OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false ) {
 
                                                        if ($view_template == "print") {
 
                                                                $re_url = explode ( "engine/print.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                                                $re_url = reset ( $re_url );
 
                                                        } else {
 
                                                                $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                                                $re_url = reset ( $re_url );
 
                                                        }
 
                                                        header("HTTP/1.0 301 Moved Permanently");
                                                        header("Location: {$re_url}{$row['id']}-{$row['alt_name']}.html");
                                                        die("Redirect");
 
                                                }
 
                                        }

Далее ищем код и удаляем :

if ( $config['seo_control'] ) {
 
                                        if ($_GET['newsid'] OR strpos ( $_SERVER['REQUEST_URI'], "?" ) !== false) {
 
                                                if ($view_template == "print") {
 
                                                        $re_url = explode ( "engine/print.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                                        $re_url = reset ( $re_url );
 
                                                } else {
 
                                                        $re_url = explode ( "index.php", strtolower ( $_SERVER['PHP_SELF'] ) );
                                                        $re_url = reset ( $re_url );
 
                                                }
 
                                                header("HTTP/1.0 301 Moved Permanently");
                                                header("Location: {$re_url}".date( 'Y/m/d/', $row['date'] ).$row['alt_name'].".html");
                                                die("Redirect");
 
                                        }
 
                                }

Далее находим код :

} else {
 
                        $full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id'];
                        $print_link = $config['http_home_url'] . "engine/print.php?newsid=" . $row['id'];
                        $short_link = "";
                        $link_page = "";
                        $news_name = "";

И выше вставляем :

//Правка неверных url
                        $true_link = $config['http_home_url'] . substr ($_SERVER['REQUEST_URI'], 1);
 
                        if (intval($_REQUEST['cstart']) >= 2) $full_link = $link_page . intval($_REQUEST['cstart']) . "," . $news_name . ".html";
                        elseif ($news_page >= 2) $full_link = $link_page . $news_name . ".html";
 
                        if ($true_link != $full_link) {
                                header('HTTP/1.1 301 Moved Permanently');
                                header ('Location: ' . $full_link);
                                die();
                        }
                        //Правка неверных url

Автор: Gameer (http://igameer.ru/data_engine/18-seo_dle_1.html)шаблоны для dle 11.2