Оптимизируем сайт на DLE (lite версия статьи)

Популярность скрипта DataLife Engine не уменьшается среди веб-мастеров выбирающих CMS для создания своего проекта, но существует множество негативных высказываний в адрес seo-оптимизированности DLE.
Разработчик с выходом каждой новой версии постепенно устраняет seo-недоработки и замечания, но не всё же сразу...
В этой статье мы коснёмся вопроса, как оптимизировать скрипт уже сейчас и без особых проблем и знаний.
Это статья не полная инструкция по оптимизации сайта, небольшие рекомендации!
1. Начнём с всем известного файла - robots.txt
хочется заметить что это наша точка зрения по правильности создания robots.txt
User-agent: *
Disallow: /backup/
Disallow: /catalog/
Disallow: /engine/
Disallow: /favorites/
Disallow: /language/
Disallow: /lastnews/
Disallow: /newposts/
Disallow: /2011/$
Disallow: /tags/$
Disallow: /templates/
Disallow: /uploads/
Disallow: /user/
Disallow: /*print
Disallow: /*do=pm
Disallow: /*subaction=userinfo
Disallow: /*subaction=newposts
Disallow: /*do=addnews
Disallow: /*do=lastnews
Disallow: /*do=lastcomments
Disallow: /*do=lostpassword
Disallow: /*do=register
Disallow: /*do=search
Disallow: /addnews.html
Disallow: /statistics.html
Disallow: /search.html
Disallow: /rules.html
Host: example.com
Sitemap: http://example.com/sitemap.xml
Disallow: /backup/
Disallow: /catalog/
Disallow: /engine/
Disallow: /favorites/
Disallow: /language/
Disallow: /lastnews/
Disallow: /newposts/
Disallow: /2011/$
Disallow: /tags/$
Disallow: /templates/
Disallow: /uploads/
Disallow: /user/
Disallow: /*print
Disallow: /*do=pm
Disallow: /*subaction=userinfo
Disallow: /*subaction=newposts
Disallow: /*do=addnews
Disallow: /*do=lastnews
Disallow: /*do=lastcomments
Disallow: /*do=lostpassword
Disallow: /*do=register
Disallow: /*do=search
Disallow: /addnews.html
Disallow: /statistics.html
Disallow: /search.html
Disallow: /rules.html
Host: example.com
Sitemap: http://example.com/sitemap.xml
незабываем в двух местах заменить example.com на свой домен, а в Директиве Sitemap укажите главное зеркало сайта определившись каким оно будет: с www или нет, кстати данную директиву использует не только Яндекс, но Mail.ru.
Мы не приводим полную рекомендацию, потому что многие владельцы сайтов продают ссылки и кол-во страниц - это их заработок, а можно было бы полностью закрыть: 2011(год), tags и закрыть page.
Чтобы их закрыть меняем в приведённом выше коде примера:
Disallow: /2011/$
Disallow: /tags/$
Disallow: /tags/$
на (добавив кроме 2011 ещё и другие архивные года по аналогии с кодом примера ниже):
Disallow: /2011/
Disallow: /tags/
Disallow: /page/
Disallow: /*/page/
Disallow: /tags/
Disallow: /page/
Disallow: /*/page/
Но красивее закрыт индексацию архивов Метатегом robots, как это сделать читает в пункте 5 этой статьи.
А для ещё большего числа продажных страниц можно открыть print. Для тех кто работает с Google AdSense и Яндекс.Директ не мешает открыть показ рекламы на всех страницах сайта, даже тех которые мы закрыли от индексирования, для этого добавим в robots.txt:
User-agent: MediaPartners-Google
Allow: /
Allow: /
и соответственно:
User-agent: YandexDirect
Allow: /
Allow: /
Чтобы узнать больше о robots.txt рекомендуем прочитать:
robotstxt.org.ru
help.yandex.ru
google.com/support/webmasters
go.mail.ru
2. Убираем дубли главной страницы сайта, типа index.php, index.html
Редактируем файл .htaccess в корне сайта:
Открываем файл и заменяем(при наличии апачи и mod_rewrite):
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 поменяйте аналогичным способом адрес домена в коде.
3. Убираем дубли внутренних страниц сайта при выборе ЧПУ типа 1 и 2
(В версии DataLife Engine 9.3 и выше данная проблема с дублями и редиректе при смене ЧПУ решена.)
Находим (проверяем правильность чпу и alt_name в 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 ('HTTP/1.1 301 Moved Permanently');
header ('Location: ' . $full_link_);
die ();
}
if ($config['http_home_url'] . substr ($_SERVER['REQUEST_URI'], 1) != $full_link_) {
header ('HTTP/1.1 301 Moved Permanently');
header ('Location: ' . $full_link_);
die ();
}
Автор: Игорь Тимошенко (timoshenko.livejournal.com)
4. Приводим в порядок метатеги title
Тут парадокс с категориями в DLE 9.2, вроде бы заполнение мегатега title категорий должно пойти на пользу, но нет, тут бага..(Разработчик исправит в следующей версии скрипта этот баг)
И она проявляется, если у вас не закрыты от индексации страницы Пагинации (page) по категории и ! ЗАПОЛНЕН метатег title(только на 9.2).
Чтобы понять о чём речь смотрим скрины:
Ничего не делаем, да и не знаем что такое метатеги и зачем они )), вообщем незапоняем:
это хорошо и Google нам говорить тут у вас нет дублей Title.
А теперь мы хотели сделать как лучше, и решили заполнить метатег title категории, ожидая естественно лучший результат чем тот если оставить метатеги незаполнеными:
следующая страница категории и таже беда - дубль title, а ведь заполнив его мы хотели получить лучший результат
Не будем морочится с кодом файла engine.php для решения этой задачи и так как Имя категории, заполненое при её создании в Админ Панели, автоматом становится метатегом title этой категории, а меню и категории в нём в DLE выводятся добавлением ссылок в шаблон вручную, как и имя категории в шаблоне задаётся так же вручную, то ничего нам не мешает не заполнять метатег категории, а просто присвоим имя категории которое станет её метатегом title.
Написано выше много по метатегу title Категорий, подведём итоги (только на 9.2): метатег title Категории при её создании заполнять не нужно.
Далее метатеги Title новостей заполнять нужно вручную, стараясь избегать их дублей с похожими публикациями.
Тут каждый вполне может найти свою тактику написания Title, которую посчитает наиболее целесообразной.
А ключевое по Title и не только публикаций, а вообще выделим:
- не должно быть одинаковых Title на разных страницах сайта;
- Title должен отражать суть, тематику и содержание страницы;
- старайтесь делать длину Title не более 8 слов(отображается 70знаков) для продвижении в Google и 15слов(отображается 80знаков) для Яндекса(естественно лучше использовать 8);
- Title должен содержать в себе 1-2 ключевые слова, но не более иначе ПС посчитает это спамом;
- Title должен содержать название вашего проекта или ваш бренд
Попробуем это применить в 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'];
$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 их не забыв добавить Название вашего проекта(бренда).
Полезно почитать:
devaka.ru
5. Используем метатег robots с пользой...
Убираем из индексации удалённые страницы и страницы которых не было, те которые скрипт отдаёт с ошибкой 404
Установка:
a. Открыть файлы:
- /engine/modules/show.full.php
- /engine/modules/static.php
Найти:
@header( "HTTP/1.0 404 Not Found" );
Добавить ниже:
$robots_noindex = "<meta name=\"robots\" content=\"noindex\" />";
b. Открыть файл: /engine/modules/show.short.php
Найти: (2 раза)
msgbox( $lang['all_err_1'], $lang['news_err_27'] );
Добавить выше:
$robots_noindex = "<meta name=\"robots\" content=\"noindex\" />";
c. Открыть файл: /engine/engine.php
Найти:
$metatags = <<<HTML
Добавить ВЫШЕ:
if(!$robots_noindex) $robots_noindex = "<meta name=\"robots\" content=\"index,follow\" />";
Найти:
<meta name="robots" content="all" />
Заменить на:
{$robots_noindex}
Автор хака: MSW(0-web.ru), пока мы делали свою реализацию, он сделал это быстрее и проще, а дальше мы развили его применение(правда у нас он управляется из Панели управления, а тут предлагаем упрощённое использование):
Далее, используя этот же хак убираем ненужные для индексации страницы(выбор страниц мы только рекомендуем):
Открыть файлы:
- /engine/modules/addnews.php
- /engine/modules/feedback.php
- /engine/modules/fullsearch.php
- /engine/modules/lostpassword.php
- /engine/modules/register.php
- /engine/modules/search.php
- /engine/modules/stats.php
и например если у вас установлен Модуль Репутации:
- /engine/modules/repa.php
в них примерно после:
if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Hacking attempt!" );
}
die( "Hacking attempt!" );
}
добавить:
$robots_noindex = "<meta name=\"robots\" content=\"noindex\" />";
Далее если не закрыли индексацию архивов, а вы хотите убрать дубли:
Открыть файл: /engine/engine.php
Найти комментарий к коду и в блоке кода под ним строку:
// ################ Новости за год #################
......
$newsmodule = true;
......
$newsmodule = true;
Над строкой:
$newsmodule = true;
вставить:
$robots_noindex = "<meta name=\"robots\" content=\"noindex\" />";
или(неиндексируем, но следуем по ссылкам)
$robots_noindex = "<meta name=\"robots\" content=\"noindex,follow\" />";
это мы закрыли дубли в выводе архивов по годам, а теперь переходим к закрытию дублей по месяцам, ищем такую же строку и вставляем такой же код в блоке под комментарием к коду:
// ################ Новости за месяц #################
и в окончании закрываем тем же способом дубли по дням найдя блок под комментарием к коду:
// ################ Новости за день #################
Всё, смотрим исходный код страницы архива на сайте и видим:
Полезно почитать:
googlewebmastercentral.blogspot.com
help.yandex.ru/webmaster/
6. Закрываем от индексирования Инфо сообщения скрипта
Зачем, например, индексировать текст в полной новости с сообщением о том, что либо вам следует зарегистрироваться, либо вы не можете добавлять комментарии находясь в группе Гости и прочие сообщения.
Открыть /templates/Ваш шаблон/info.tpl
и всё его содержимое закрыть в теги noindex.
7. Другое, но не всё...
Очень важны и ключевые слова, но о них нужно писать отдельную статью как и составлении сематнического ядра и других тонкостях.
А на первое время выделить ключевые слова в своих публикациях веб-мастер сможет хотя бы близко к цели.
При написании статей, если берёте информацию с сторонних источников, используйте рерайт, не используйте одно и тоже описание у схожих публикаций, например новых версий программ. Используйте перелинковку.
И ещё, если между параметрами файла robots.txt и метатегами есть противоречия, то бот последует наиболее строгим из них.
Добавляйте страницы через Аддуриловки ведущих ПС Яндекс и Google и пользуйтесь их сервисами для веб-мастером для диагностики сайтов.
Удаляйте несуществующие страницы через Яндекс.Вебмастер
Грамотно используйте тег nоindех и атрибут nоfоllоw и ещё многое, многое и многое...
Статья написана применительно к актуальной на момент написания версии DLE 9.2, поэтому рекомендации в метатеге title на станицах пагинации работать не будут на более ранних версиях скрипта.
Полезно почитать:
forum.searchengines.ru
dlepro.com/sovet/
Эту и следующие части ответов по SEO от Seo2z
Новые статьи по оптимизации DLE:
Оптимизация DLE. Оптимизируем вывод контента на страницах DLE 9.3
Оптимизация DLE. Оптимизируем вывод Title DLE 9.3
Оптимизация DLE. Оптимизируем вывод контента на страницах DLE 9.3
Оптимизация DLE. Оптимизируем вывод Title DLE 9.3
Ключевые слова по теме Оптимизируем сайт на DLE (lite версия статьи): оптимизируем сайт, оптимизируем DLE, seo-оптимизация, метатеги
Публикации из категории Оптимизация DLE:
| « Оптимизация DLE. Оптимизируем вывод Title DLE 9.3 |
Новости на тему Оптимизируем сайт на DLE (lite версия статьи):
| [13-06-2011, 23:20] Оптимизация DLE. Оптимизируем вывод Title DLE 9.3 |
| [12-12-2010, 23:21] Хак 301-й редирект при изменении типа ЧПУ |
| [27-09-2011, 15:14] Яндекс: Новые правила обработки директивы Allow файла robots.txt |
| [18-06-2011, 18:27] Оптимизация DLE. Оптимизируем вывод контента на страницах DLE 9.3 |
| [20-10-2010, 18:46] Багфикс исправляющий баг отображения новости по любому URL |
| [6-10-2011, 17:50] Модуль MetaRobots v.1.0 |
| [11-04-2011, 14:46] Индексирование кириллических доменных имён и адресов страниц Яндексом |
| [7-10-2010, 18:19] Подключаем Биржу статей Articles.Sape к DataLife Engine |

Admin
12-03-2011, 17:45