Оптимизация сайта на DLE
Скачать бесплатно Оптимизация сайта на DLE.
Популярность скрипта 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
незабываем в двух местах заменить example.com на свой домен, а в Директиве Sitemap укажите главное зеркало сайта определившись каким оно будет: с www или нет, кстати данную директиву использует не только Яндекс, но Mail.ru.
Мы не приводим полную рекомендацию, потому что многие владельцы сайтов продают ссылки и кол-во страниц - это их заработок, а можно было бы полностью закрыть: 2011(год), tags и закрыть page.
Чтобы их закрыть меняем в приведённом выше коде примера:
Disallow: /2011/$
Disallow: /tags/$
на (добавив кроме 2011 ещё и другие архивные года по аналогии с кодом примера ниже):
Disallow: /2011/
Disallow: /tags/
Disallow: /page/
Disallow: /*/page/
Но красивее закрыт индексацию архивов Метатегом robots, как это сделать читает в пункте 5 этой статьи.
А для ещё большего числа продажных страниц можно открыть print. Для тех кто работает с Google AdSense и Яндекс.Директ не мешает открыть показ рекламы на всех страницах сайта, даже тех которые мы закрыли от индексирования, для этого добавим в robots.txt:
User-agent: MediaPartners-Google
Allow: /
и соответственно:
User-agent: YandexDirect
Allow: /
Чтобы узнать больше о robots.txt рекомендуем прочитать:
robotstxt.org.ru
google.com/support/webmasters
[b]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]
не забыв заменить 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 ();
}
Автор: Игорь Тимошенко (timoshenko.livejournal.com)
4. Приводим в порядок метатеги title
Тут парадокс с категориями в DLE 9.2, вроде бы заполнение мегатега title категорий должно пойти на пользу, но нет, тут бага..(Разработчик исправит в следующей версии скрипта этот баг)
И она проявляется, если у вас не закрыты от индексации страницы Пагинации (page) по категории и ! ЗАПОЛНЕН метатег title(только на 9.2).
Чтобы понять о чём речь смотрим скрины:
это хорошо и Google нам говорить тут у вас нет дублей 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'];
и меняем на:
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'];
Заполните метатеги статических страниц в title их не забыв добавить Название вашего проекта(бренда).
Полезно почитать:
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" />
Заменить на:
Автор хака: 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!" );
}
добавить:
$robots_noindex = "<meta name="robots" content="noindex" />";
Далее если не закрыли индексацию архивов, а вы хотите убрать дубли:
Открыть файл: /engine/engine.php
Найти комментарий к коду и в блоке кода под ним строку:
// ################ Новости за год #################
......
$newsmodule = true;
Над строкой:
$newsmodule = true;
вставить:
$robots_noindex = "<meta name="robots" content="noindex" />";
или(неиндексируем, но следуем по ссылкам)
$robots_noindex = "<meta name="robots" content="noindex,follow" />";
это мы закрыли дубли в выводе архивов по годам, а теперь переходим к закрытию дублей по месяцам, ищем такую же строку и вставляем такой же код в блоке под комментарием к коду:
// ################ Новости за месяц #################
и в окончании закрываем тем же способом дубли по дням найдя блок под комментарием к коду:
// ################ Новости за день #################
Всё, смотрим исходный код страницы архива на сайте и видим:
Полезно почитать:
googlewebmastercentral.blogspot.com
6. Закрываем от индексирования Инфо сообщения скрипта
Зачем, например, индексировать текст в полной новости с сообщением о том, что либо вам следует зарегистрироваться, либо вы не можете добавлять комментарии находясь в группе Гости и прочие сообщения.
Открыть /templates/Ваш шаблон/info.tpl
и всё его содержимое закрыть в теги noindex.
7. Другое, но не всё...
Очень важны и ключевые слова, но о них нужно писать отдельную статью как и составлении сематнического ядра и других тонкостях.
А на первое время выделить ключевые слова в своих публикациях веб-мастер сможет хотя бы близко к цели.
При написании статей, если берёте информацию с сторонних источников, используйте рерайт, не используйте одно и тоже описание у схожих публикаций, например новых версий программ. Используйте перелинковку.
И ещё, если между параметрами файла robots.txt и метатегами есть противоречия, то бот последует наиболее строгим из них.
Добавляйте страницы через Аддуриловки ведущих ПС Яндекс и Google и пользуйтесь их сервисами для веб-мастером для диагностики сайтов.
Удаляйте несуществующие страницы через Яндекс.Вебмастер
Грамотно используйте тег nоindех и атрибут nоfоllоw и ещё многое, многое и многое...
Статья написана применительно к актуальной на момент написания версии DLE 9.2, поэтому рекомендации в метатеге title на станицах пагинации работать не будут на более ранних версиях скрипта.
Полезно почитать:
Эту и следующие части ответов по SEO от Seo2z
Источник: dlepro.com
- Вебмастеру / Полезные статьи
- 17-11-2011, 19:47
- 6 317