Оптимизируем сайт на DLE
1. Убираем дубли главной страницы сайта, типа index.php, index.html
Редактируем файл .htaccess в корне сайта:
Открываем файл и заменяем:
RewriteEngine On
на:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule (.*) http://example.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/
RewriteRule ^index.html$ http://example.com/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
RewriteRule ^index.php$ http://example.com/ [R=301,L]
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.example.com$
RewriteRule (.*) http://example.com/$1 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/
RewriteRule ^index.html$ http://example.com/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
RewriteRule ^index.php$ http://example.com/ [R=301,L]
и снова не забываем заменять example.com на свой домен
Внимание! Данный вариант предусматривает главное зеркало домена без www, если вам нужен вариант с www поменяйте аналогичным способом адрес домена в коде.
2. Убираем дубли внутренних страниц сайта при выборе ЧПУ типа 1 и 2
Откройте файл engine/modules/show.full.php и найдите(делаем проверку правильности alt_name в url):
$news_found = TRUE;
if($config['allow_alt_url'] == \"yes\"){
preg_match( '/'.$row['id'].'-(.*?).html/is' , $_SERVER[\"REQUEST_URI\"] , $parse_alt_name );
if( $row['alt_name'] != trim( $parse_alt_name[1] ) ){
$true_url = str_replace( $parse_alt_name[1] , $row['alt_name'] , $_SERVER[\"REQUEST_URI\"] );
header('HTTP/1.1 301 Moved Permanently');
@header ( 'Location: ' . $true_url );
exit;
}}
if($config['allow_alt_url'] == \"yes\"){
preg_match( '/'.$row['id'].'-(.*?).html/is' , $_SERVER[\"REQUEST_URI\"] , $parse_alt_name );
if( $row['alt_name'] != trim( $parse_alt_name[1] ) ){
$true_url = str_replace( $parse_alt_name[1] , $row['alt_name'] , $_SERVER[\"REQUEST_URI\"] );
header('HTTP/1.1 301 Moved Permanently');
@header ( 'Location: ' . $true_url );
exit;
}}
Автор: RooTM
далее находим (проверяем правильность чпу в url, кстати это поможет вам если вы решили сменить один тип чпу на другой с правильным редиректом 301):
$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 ();
}
if ($config['http_home_url'] . substr ($_SERVER['REQUEST_URI'], 1) != $full_link_) {
header ($_SERVER['SERVER_PROTOCOL'] . '301 Moved Permanently');
header ('Location: ' . $full_link_);
die ();
}
Автор: Игорь Тимошенко
Этот пункт сегодня у себя на сайте разработчик скрипта поправил... значит в следующем релизе этого бага с дублями скорее всего не будет.
3. Приводим в порядок метатеги title
Тут парадокс с категориями в DLE, вроде бы заполнение мегатега title категорий должно пойти на пользу, но нет, тут бага..
И она проявляется, если у вас не закрыты от индексации страницы Пагинации (page) по категории и ! ЗАПОЛНЕН метатег title.
Чтобы понять о чём речь смотрим скрины:
Ничего не делаем, да и не знаем что такое метатеги и зачем они )), вообщем незапоняем:
незаполнены title категории
и вот результат - в title мы видим добавление - Страница 2
это хорошо и Google нам говорить тут у вас нет дублей Title.
А теперь мы хотели сделать как лучше, и решили заполнить метатег title категории, ожидая естественно лучший результат чем тот если оставить метатеги незаполнеными:
заполняем метатег title категории
и... в результате на второй странице категории дубль title первой страницы - Google ругается...
следующая страница категории и таже беда - дубль title, а ведь заполнив его мы хотели получить лучший результат
Не будем морочится с кодом файла engine.php для решения этой задачи и так как Имя категории, заполненое при её создании в Админ Панели, автоматом становится метатегом title этой категории, а меню и категории в нём в DLE выводятся добавлением ссылок в шаблон вручную, как и имя категории в шаблоне задаётся так же вручную, то ничего нам не мешает не заполнять метатег категории, а просто присвоим имя категории которое станет её метатегом title.
Написано выше много по метатегу title Категорий, подведём итоги: метатег title Категории при её создании заполнять не нужно.
Далее метатеги Title новостей заполнять нужно вручную, стараясь избегать их дублей с похожими публикациями.
Тут каждый вполне может найти свою тактику написания Title, которую посчитает наиболее целесообразной.
А ключевое по Title и не только публикаций, а вообще выделим:
- не должно быть одинаковых Title на разных страницах сайта;
- Title должен отражать суть, тематику и содержание страницы;
- старайтесь делать длину Title не более 8 слов(отображается 70знаков) для продвижении в Google и 15слов(отображается 80знаков) для Яндекса(естественно лучше использовать 8);
- Title должен содержать в себе 1-2 ключевые слова, но не более иначе ПС посчитает это спамом;
- Title должен содержать название вашего проекта или ваш бренд
Попробуем это применить в Title полной новости автоматически:
добавляем сам Title новости + категория + Название проекта(бренда) и разделяем их прямым слешем |:
Открыть engine.php:
ищем:
$metatags = <<<HTML
и внимание! ВЫШЕ добавляем:
if ($subaction == 'showfull' or $newsid ) $metatags['title'] = $metatags['title'] . ' | '. $cat_info[$category_id]['name'] . ' | ' . $config['home_title'];
и для красоты переводим на разделение метатегов прямыми слешами везде:
ищем(этот код несколько выше, над тем что меняли ранее):
if (intval($_GET['cstart']) > 1 ){
$page_extra = ' » '.$lang['news_site'].' '.intval($_GET['cstart']);
} else $page_extra = '';
if ($nam_e) {
$metatags['title'] = $nam_e . $page_extra . ' » ' . $metatags['title'];
$rss_title = $metatags['title'];
} elseif ($titl_e) {
$metatags['title'] = $titl_e . $page_extra . ' » ' . $config['home_title'];
и меняем на:
if (intval($_GET['cstart']) > 1 ){
$page_extra = ' | '.$lang['news_site'].' '.intval($_GET['cstart']);
} else $page_extra = '';
if ($nam_e) {
$metatags['title'] = $nam_e . $page_extra . ' | ' . $metatags['title'];
$rss_title = $metatags['title'];
} elseif ($titl_e) {
$metatags['title'] = $titl_e . $page_extra . ' | ' . $config['home_title'];
$page_extra = ' | '.$lang['news_site'].' '.intval($_GET['cstart']);
} else $page_extra = '';
if ($nam_e) {
$metatags['title'] = $nam_e . $page_extra . ' | ' . $metatags['title'];
$rss_title = $metatags['title'];
} elseif ($titl_e) {
$metatags['title'] = $titl_e . $page_extra . ' | ' . $config['home_title'];
Заполните метатеги статических страниц в title их не забыв добавить Название вашего проекта(бренда).