SEO оптимизация Dle Datalife Engine

Раздел: DataLife Engine » Полезные статьи для DLE
SEO оптимизация Dle Datalife Engine

Привет всем, хочу познакомить всех с полезной публикацией по SEO оптимизация Dle автора АлаичЪ. Это часть цикла SEO оптимизация Datalife Engine решение дублирования контента по разным адресам.
Полезная статья убираем дублирования контента связанного с url или SEO оптимизация Dle Datalife Engine
Рассмотрим такие случаи, как дублирование главной страницы по адресам:

http://site.ру 
http://site.ру/index.php 
http://site.ру/page/1/


Так же дублирования этих же адресов, но с www.С этим мы тоже разберемся.

Важный момент – дублирование страниц не публикаций (то есть всех страниц сайта кроме новостей и статических страниц) по адресам со слешем и без слеша на конце, например:

http://site.ру/category  http://site.ру/category/


На момент написания поста последняя версия движка Datalife Engine 9.4. Почему это важно – потому что в версии 9.3-9.4 сделали очень большое seo-добро – избавились от возможного дублирования контента связанного с перестановками и невалидными названиями URL. Но об этом я писать не буду сегодня, это будет отдельный пост. Я настоятельно рекомендую обновиться до DLE 9.4 .

Все написанное ниже актуально для версий до Datalife Engine 9.2. С более поздними версиями возможны проблемы в части убирания конечного слеша, но все остальное так же актуально!.

Открываем .htaccess и находим там:
DirectoryIndex index.phpRewriteEngine On

Ниже вставляем:

### Определяем главное зеркало как site.ру (site.ру заменить на свой домен, например dle9.com)# RewriteCond %{HTTP_HOST} ^www.site.ру$ [NC]# RewriteRule ^(.*)$ http://site.ру/$1 [R=301,L]### Определяем главное зеркало как www.site.ру (site.ру заменить на свой домен, например dle9.com )# RewriteCond %{HTTP_HOST} ^site.ру$ [NC]# RewriteRule ^(.*)$ http://www.site.ру/$1 [R=301,L]###Определяем главное зеркалоRewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/RewriteRule ^index.html$ / [R=301,L]RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/RewriteRule ^index.php$ / [R=301,L]### Убираем слеш в концеRewriteRule ^(.+)/$ $1 [R=301,L]### Убираем слеш в конце ### Редирект с первой страницы на основнуюRewriteRule ^(.*)/page/1$ $1 [R=301,L]### Редирект с первой страницы на основную


Вот сразу все необходимые изменения в файле .htaccess которые необходимо внести. Давайте разберем по пунктам, что для чего нужно и почему:

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


Данными строками мы определяем главное зеркало сайта. Вы наверняка уже определились с основным зеркалом (с www или без). Если у вас основное зеркало без www – раскомментируем строки 2 и 3. Если главное зеркало с www – убираем в начале строки знак «#» для строк 5 и 6.

Итак дальше:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.html HTTP/RewriteRule ^index.html$ / [R=301,L]RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/RewriteRule ^index.php$ / [R=301,L]


Данные строки позволяют осуществлять 301-редирект с адресов site.ру/index.php и site.ру/index.html на основной домен site.ру. Для DLE стандартная ситуация когда site.ру/index.php и site.ру/ находятся одновременно в индексе. Вот сами прямо сейчас проверьте свои сайты ;)

Далее:
RewriteRule ^(.*)/page/1$ $1 [R=301,L]


Данная строчка определяет 301-редирект для страниц вида:

http://site.ру/page/1/, http://site.ру/category/page/1/ и тп.


на основные, вида:

http://site.ру/, http://site.ру/category/


Даже не смотря на то, что Datalife Engine начиная с последних версий перестал в постраничной навигации давать ссылку вида */page/1/, сами страницы-то из индекса не пропадут, если они там были. Так что данные телодвижения лишними не будут.

А теперь самый интересный и спорный пункт сегодняшнего руководства – разбираемся с дублями связанными с наличием/отсутствием «/» в конце адресов категорий и страниц пагинации.

За 301-редирект всех адресов на адреса без слеша «/» и отвечает последняя строка:

RewriteRule ^(.+)/$ $1 [R=301,L]


Данной строкой мы делаем всего лишь редирект, но в движке по умолчанию все адреса генерируются со слешем на конце, а следовательно без правки генерации адресов движка сам редирект бесполезен. Вот движком мы и займемся сейчас:

Убираем слеши из URL категорий генерируемые движком:

Открываем файл /engine/modules/functions.php и ищем Функцию

function get_categories ($id) 


Находим строку:

    if( $config['allow_alt_url'] == "yes" ) $list = "<a href="" . $config['http_home_url'] . get_url( $id ) . "/">{$cat_info[$id]['name']}</a>";


Заменяем на:
    if( $config['allow_alt_url'] == "yes" ) $list = "<a href="" . $config['http_home_url'] . get_url( $id ) . "">{$cat_info[$id]['name']}</a>";


Находим строку:

        if( $config['allow_alt_url'] == "yes" ) $list = "<a href="" . $config['http_home_url'] . get_url( $parent_id ) . "/">{$cat_info [$parent_id]['name']}</a>" . " &raquo; " . $list;


Заменяем на:

        if( $config['allow_alt_url'] == "yes" ) $list = "<a href="" . $config['http_home_url'] . get_url( $parent_id ) . "">{$cat_info [$parent_id]['name']}</a>" . " &raquo; " . $list;


Убираем слеши из навигации по страницам генерируемые движком:

Открываем файл: /engine/modules/show.short.php

Находим строку:

$prev_page = $url_page . "/";


Заменяем на:

$prev_page = $url_page . "";


Находим строку:

$prev_page = $url_page . "/page/" . $prev . "/";


Заменяем на:

$prev_page = $url_page . "/page/" . $prev . "";


Находим:

$pages .= "<a href="" . $url_page . "/">$j</a> ";


Заменяем:

$pages .= "<a href="" . $url_page . "">$j</a> ";


Находим:

$pages .= "<a href="" . $url_page . "/page/" . $j . "/"> $j</a> ";


Заменяем:

$pages .= "<a href="" . $url_page . "/page/" . $j . ""> $j</a> ";


Находим:

if( $config['allow_alt_url'] == "yes" ) $pages .= "<a href="" . $url_page . "/">1</a>  <span class="nav_ext">{$lang['nav_trennen']}</span> ";


Заменяем:

if( $config['allow_alt_url'] == "yes" ) $pages .= "<a href="" . $url_page . "">1</a>  <span class="nav_ext">{$lang['nav_trennen']}</span> ";


Находим:

$pages .= "<a href="" . $url_page . "/">$j</a> ";


Заменяем:

$pages .= "<a href="" . $url_page . "">$j</a> ";


Находим:
$pages .= "<a href="" . $url_page . "/page/" . $j . "/"> $j</a> ";


Заменяем:

$pages .= "<a href="" . $url_page . "/page/" . $j . ""> $j</a> ";


Находим:

    if( $config['allow_alt_url'] == "yes" ) $pages .= $nav_prefix . "<a href="" . $url_page .  "/page/{$enpages_count}/">{$enpages_count}</a>";


Заменяем:

if( $config['allow_alt_url'] == "yes" ) $pages .= $nav_prefix . "<a href="" . $url_page .  "/page/{$enpages_count}">{$enpages_count}</a>";


Находим:

$next = $url_page . '/page/' . $next_page . '/';

Заменяем:

$next = $url_page . '/page/' . $next_page . '';

Убираем слеши из тегов генерируемые движком:

Открываем файл: /engine/modules/show.short.php

Находим:
 if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode(  $value ) . "/">" . $value . "</a>";


Заменяем:

if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode(  $value ) . "">" . $value . "</a>";


Открываем файл: /engine/modules/tagscloud.php

Находим:

$tags[] = "<a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."/" class="{$value['size']}" title="".$lang ['tags_count']." ".$value['count']."">".$value['tag']."</a>";


Заменяем:

    $tags[] = "<a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."" class="{$value['size']}" title="".$lang ['tags_count']." ".$value['count']."">".$value['tag']."</a>";

Находим:

$tpl->result['tags_cloud'] .= "<br /><br /><a href="".$config['http_home_url']."tags/">".$lang['all_tags']."</a>";

Заменяем:

$tpl->result['tags_cloud'] .= "<br /><br /><a href="".$config['http_home_url']."tags">".$lang['all_tags']."</a>";


Находим:

$tags[] = "<a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."/" class="{$value['size']}" title="". $lang['tags_count']." ".$value['count']."">".$value['tag']."</a>";


Заменяем:

$tags[] = "<a href="".$config['http_home_url']."tags/".urlencode($value['tag'])."" class="{$value['size']}" title="". $lang['tags_count']." ".$value['count']."">".$value['tag']."</a>";


Открываем файл: /engine/modules/show.custom.php

Находим:

if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode( $value ) .  "/">" . $value . "</a>";

Заменяем:
 if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode( $value ) .  "">" . $value . "</a>";


Открываем файл: /engine/modules/show.full.php

Находим:
if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode(  $value ) . "/">" . $value . "</a>";


Заменяем:

if( $config['allow_alt_url'] == "yes" ) $tags[] = "<a href="" . $config['http_home_url'] . "tags/" . urlencode(  $value ) . "">" . $value . "</a>";

Открываем файл: /engine/engine.php

Находим:

if ($config['allow_alt_url'] == "yes") $s_navigation .= " &raquo; <a href="" . $config['http_home_url'] . "tags/">" . $lang ['tag_cloud'] . "</a> &raquo; " . $tag;


Заменяем:

if ($config['allow_alt_url'] == "yes") $s_navigation .= " &raquo;<a href="" . $config['http_home_url'] . "tags">" . $lang ['tag_cloud'] . "</a> &raquo; " . $tag;


В очередной раз открываем .htaccess

Находим:

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


Заменяем:

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


Ну вот и все! Большую работу мы с вами проделали, однако. Но оно того стоило.

Если вы хотите быть в курсе последних тенденций в области Сео оптимизация и разработки грамотных ресурсов для людей, то рекомендуем перейти по ссылке выше, чтобы ознакомиться с большим числом разнообразных статей не эту тему.

Я еще раз хочу обратить внимание на все изменения связанные с убиранием слеша на конце. Давайте по пунктам:
Если вы продаете ссылки с сайта, я не рекомендую производить изменения, так как все проданные ссылки со страниц категорий/тегов/пагинации отпадут. Так как все же страницы со слешем и без него – разные страницы.
Если вы однажды сделаете эти изменения, то в будущем вам придется их все время делать при обновлении движка. Так как в противном случае опять будут появляться страницы со слешем на конце.
На самом деле, как бы это все страшно не звучало и не выглядело – это полезно, я рекомендую.
Если вы не пользуетесь тегами, то вы можете избавить себя от большого объема работы, связанного с их переработкой. В таком случае, все что ниже заголовка «Убираем слеши из тегов генерируемые движком» можно игнорировать.
Вступление всех изменений в силу требует времени. Это связано с переиндексацией сайта поисковыми системами. Так что терпенье, друзья, только терпение. Для больших сайтов терпение измеряется 1-2 месяцами.

«Автор:»АлаичЪ (alaev info)

Рекомендуем на портале всё под dle скачать Полезная статья убираем дублирования контента связанного с url
  • 80
Рубрика: Все для DLE » Полезные статьи
Ранее » Sl-CMS Buld beta отличный визуальный редактор css-html« Далее Валидаторы - Проверка сайтов на ошибки
Добавление комментарияОставить комментарий
  • № :2
  • 13 ноября 2016 17:34
Цитата: websot
Для DLE 11.1 не работает удаление слешей в конце страниц категорий и пагинаций.

сравните версии файлов движка старой версии где работала и новой, поймете, что изменилось и как сделать удаление слешей в конце страниц категорий и пагинаций
  • № :1
  • 13 ноября 2016 15:25
Для DLE 11.1 не работает удаление слешей в конце страниц категорий и пагинаций.