Вторая часть SEO оптимизации DataLife Engine, в статье описывается полное убирание слеша на конце в ссылках, разные редиректы которые убирают дубли и не существующие страницы сайта. Так же о XML и HTML карте и кроме этого работа с модулем DonBot который убирает с индекса не нужные дубли.7) Убираем слешы на конце урла «/»
Убираем слешы
1) Открываем файл /engine/engine.php и находим (самое первое вхождение кода):
if ($do == "cat" and $category != '' and $subaction == '') {
И ниже вставляем :
//решение проблемы с категориями, редирект на верный урл, удаление слеша в конец
if( $config['allow_alt_url'] == "yes" AND $category_id AND $view_template != "rss") {
$re_cat = get_url( $category_id );
if ($re_cat != $_GET['category'] OR substr ( $_SERVER['REQUEST_URI'], - 1, 1 ) == '/' ) {
$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}{$re_cat}");
die("Redirect");
}
}
//решение проблемы с категориями, редирект на верный урл, удаление слеша в конец
2) Открываем файл .htaccess что в главной директории (там где index.php), находим код :
# Редиректы
RewriteRule ^page/([0-9]+)(/?)$ index.php?cstart=$1 [L]
И выше вставляем :
# Убираем слеш в конце
RewriteRule ^(.+)/$ $1 [R=301,L]
3) Открываем файл /engine/modules/functions.php и находим код :
if( $config['allow_alt_url'] ) $list = "{$cat_info[$id]['name']}";
Меняем на:
if( $config['allow_alt_url'] ) $list = "{$cat_info[$id]['name']}";
Далее ищем код :
if( $config['allow_alt_url'] ) $list = "{$cat_info[$parent_id]['name']}" . "{$separator} " . $list;
И меняем на :
if( $config['allow_alt_url'] ) $list = "{$cat_info[$parent_id]['name']}" . "{$separator} " . $list;
Далее ищем код:
if( $config['allow_alt_url'] ) $list = "{$cat_info[$id]['name']}";
И меняем на:
if( $config['allow_alt_url'] ) $list = "{$cat_info[$id]['name']}";
Далее ищем код:
if( $config['allow_alt_url'] ) $list = "{$cat_info[$parent_id]['name']}" . " {$separator} " . $list;
И меняем на:
if( $config['allow_alt_url'] ) $list = "{$cat_info[$parent_id]['name']}" . " {$separator} " . $list;
4) Открываем файл /engine/modules/show.full.php находим код (2 раза):
if( $config['allow_alt_url'] ) $my_cat_link[] = "{$cat_info[$element]['name']}";
И меняем на:
if( $config['allow_alt_url'] ) $my_cat_link[] = "{$cat_info[$element]['name']}";
Далее, если вы не удаляли теги с сайта то делаем этот пункт, если же удалили пропускаем!Ищем код:
if( $config['allow_alt_url'] ) $tags[] = "" . $value . "";
И меняем на:
if( $config['allow_alt_url'] ) $tags[] = "" . $value . "";
Все с тегами покончили.
Далее ищем код (2 раза):
if( $config['allow_alt_url'] ) $value3[] = "" . $value2 . "";
Меняем на:
if( $config['allow_alt_url'] ) $value3[] = "" . $value2 . "";
Далее ищем код :
$short_link = $config['http_home_url'] . $c_url . "/";
Меняем на:
$short_link = $config['http_home_url'] . $c_url;
Далее ищем код:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $category_id ) . "/" );
Меняем на:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $category_id ) );
Далее ищем код :
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] ) . "/";
Меняем на:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] );
5) Открываем файл /engine/modules/show.short.php находим код :
if( $config['allow_alt_url'] ) $my_cat_link[] = "{$cat_info[$element]['name']}";
Меняем на:
if( $config['allow_alt_url'] ) $my_cat_link[] = "{$cat_info[$element]['name']}";
Далее, если вы не удаляли теги с сайта то делаем этот пункт, если же удалили пропускаем!Ищем код:
if( $config['allow_alt_url'] ) $tags[] = "" . $value . "";
И меняем на:
if( $config['allow_alt_url'] ) $tags[] = "" . $value . "";
Все с тегами покончили.Далее ищем код :
if( $config['allow_alt_url'] ) $value3[] = "" . $value2 . "";
Меняем на:
if( $config['allow_alt_url'] ) $value3[] = "" . $value2 . "";
Далее ищем (2 раза):
pages .= "$j ";
Меняем на:
pages .= "$j ";
Далее ищем код (2 раза):
$pages .= "$j ";
Меняем на:
$pages .= "$j ";
Далее ищем код:
if( $config['allow_alt_url'] ) $pages .= "1 {$lang['nav_trennen']} ";
Меняем на:
if( $config['allow_alt_url'] ) $pages .= "1 {$lang['nav_trennen']} ";
Далее ищем код:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $row['category'] ) . "/" );
Меняем на:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $row['category'] ) );
Далее ищем код:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] ) . "/";
Меняем на:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] );
Далее ищем код:
$prev_page = $url_page . "/";
Меняем на:
$prev_page = $url_page;
Далее ищем код:
$prev_page = $url_page . "/page/" . $prev . "/";
Меняем на :
$prev_page = $url_page . "/page/" . $prev;
Далее ищем код:
$next = $url_page . '/page/' . $next_page . '/';
Меняем на:
$next = $url_page . '/page/' . $next_page;
6) Открываем файл /engine/modules/show.costum.php находим код :
$next = $url_page . '/page/' . $next_page . '/';
Меняем на:
$next = $url_page . '/page/' . $next_page;
Далее ищем код:
if( $config['allow_alt_url']) $my_cat_link[] = "{$cat_info[$element]['name']}";
Меняем на:
if( $config['allow_alt_url']) $my_cat_link[] = "{$cat_info[$element]['name']}";
Далее, если вы не удаляли теги с сайта то делаем этот пункт, если же удалили пропускаем!Ищем код:
if( $config['allow_alt_url'] ) $tags[] = "" . $value . "";
И меняем на:
if( $config['allow_alt_url'] ) $tags[] = "" . $value . "";
Все с тегами покончили.Далее ищем код:
if( $config['allow_alt_url'] ) $value3[] = "" . $value2 . "";
Меняем на:
if( $config['allow_alt_url'] ) $value3[] = "" . $value2 . "";
Далее ищем (
2 раза
):
pages .= "$j ";
Меняем на:
pages .= "$j ";
Далее ищем код (2 раза):
$pages .= "$j ";
Меняем на:
$pages .= "$j ";
Далее ищем код :
if( $config['allow_alt_url'] ) $pages .= "1 {$lang['nav_trennen']} ";
Меняем на:
if( $config['allow_alt_url'] ) $pages .= "1 {$lang['nav_trennen']} ";
Далее ищем :
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $row['category'] ) . "/" );
Меняем на:
$tpl->set( '{category-url}', $config['http_home_url'] . get_url( $row['category'] ) );
Далее ищем:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] ) . "/";
Меняем на:
$go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] );
Далее ищем код:
$prev_page = $url_page . "/";
Меняем на:
$prev_page = $url_page;
Далее ищем:
$prev_page = $url_page . "/page/" . $prev . "/";
Меняем на:
$prev_page = $url_page . "/page/" . $prev;
7) Открываем файл /engine/init.php, находим код:
$tpl->set( '{profile-link}', $config['http_home_url'] . "user/" . urlencode ( $member_id['name'] ) . "/" );
Меняем на:
$tpl->set( '{profile-link}', $config['http_home_url'] . "user/" . urlencode ( $member_id['name'] ) );
8) Если вы не удаляли тегов, то делаем этот пункт!
Открываем файл /engine/modules/tagscloud.php, находи код (2 раза):
$tags[] = "".$value['tag']."";
И меняем на:
$tags[] = "".$value['tag']."";
Далее ищем код:
$tpl->result['tags_cloud'] .= "
".$lang['all_tags']."";
Меняем на:
$tpl->result['tags_cloud'] .= "
".$lang['all_tags']."";
Далее открываем файл /engine/engine.php, находим код (это продолжение того же 8 пункта):
if ($config['allow_alt_url']) $s_navigation .= " {$config['speedbar_separator']} " . $lang['tag_cloud'] . " {$config['speedbar_separator']} " . $tag;
Меняем на:
if ($config['allow_alt_url']) $s_navigation .= " {$config['speedbar_separator']} " . $lang['tag_cloud'] . " {$config['speedbar_separator']} " . $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]
9) Открываем файл /engine/modules/profile.php, находим код:
if( $config['allow_alt_url'] ) $link_profile = $config['http_home_url'] . "user/" . urlencode( $row['name'] ) . "/";
Меняем на:
if( $config['allow_alt_url'] ) $link_profile = $config['http_home_url'] . "user/" . urlencode( $row['name'] );[/spoiler]
8) Редирект с несуществующих страниц пагинации на правильные и существующие
Редирект с несуществующих страниц
Открываем файл /engine/modules/show.short.php и в самом низу находим:
}
?>
Выше вставляем:
//редирект на последнюю страницу, если в url указана страница больше чем максимально существующая
$all_pages_count = @ceil( $count_all / $config['news_number'] );
if ($cstart > $all_pages_count) {
if ($all_pages_count > 1) {
header('HTTP/1.1 301 Moved Permanently');
header ('Location: ' . $url_page . '/page/' . $all_pages_count . '/');
die();
} else {
header('HTTP/1.1 301 Moved Permanently');
header ('Location: ' . $url_page . '/');
die();
}
}
//редирект на последнюю страницу, если в url указана страница больше чем максимально существующая
9) Редирект с несуществующих страниц пагинации комментариев на правильные
Редирект с несуществующих страниц пагинации комментариев
Открываем файл /engine/classes/comments.class.php и в самом низу находим:
}
}
?>
Выше вставляем:
//редирект на последнюю страницу комментариев, если в url указана страница больше чем максимально существующая
if ( $this->cstart > $enpages_count ) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: ' . $url);
die();
}
//редирект на последнюю страницу комментариев, если в url указана страница больше чем максимально существующая
10) Редирект со ссылок с лишними символами или неправильным окончанием на верные адреса
Редирект со ссылок с лишними символами
Открываем файл .htaccess что в главной директории (там где index.php), находим код :
# Редиректы
RewriteRule ^page/([0-9]+)(/?)$ index.php?cstart=$1 [L]
Выше вставляем:
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.*).html(.+) [OR]
RewriteCond %{REQUEST_URI} ^(.*).htm$ [OR]
RewriteCond %{REQUEST_URI} ^(.*).ht$ [OR]
RewriteCond %{REQUEST_URI} ^(.*).h$ [OR]
RewriteCond %{REQUEST_URI} ^(.*).$
RewriteRule ^(.*).(.*) $1.html [R=301,L]
11) Редирект с разделов или категорий, которых больше не существует, на главную страницу
Редирект с разделов или категорий которых больше не существует
Открываем файл /engine/engine.php и находим:
if (!$category_id) $category_id = 'not detected';
Меняем на:
//решение проблемы с категориями, которых не существует
if (!$category_id AND $view_template != "rss") {
header("HTTP/1.0 301 Moved Permanently");
header("Location: {$config['http_home_url']}");
die("Redirect");
}
//решение проблемы с категориями, которых не существует
12) Редирект для публикаций, у которых отсутствует ID, на главную страницу
Редирект для публикаций у которых отсутствует ID
Открываем файл /engine/modules/static.php и находим в самом конце:
@header( "HTTP/1.0 404 Not Found" );
$lang['static_page_err'] = str_replace ("{page}", $name.".html", $lang['static_page_err']);
msgbox( $lang['all_err_1'], $lang['static_page_err'] );
Меняем на:
// 301 редирект на главную с адресов страниц новостей, где пропал id, а так же несуществующих статических страниц
header("HTTP/1.0 301 Moved Permanently");
header("Location: {$config['http_home_url']}");
die("Redirect");
// 301 редирект на главную с адресов страниц новостей, где пропал id, а так же несуществующих статических страниц
13) Редирект для удаленных или несуществующих новостей на главную
Редирект для удаленных или несуществующих новостей на главную
Открываем файл /engine/modules/show.full.php и находим:
elseif( !$news_found ) {
@header( "HTTP/1.0 404 Not Found" );
msgbox( $lang['all_err_1'], $lang['news_err_12'] );
}
Меняем на:
// 301 редирект на главную, если новость не найдена/не существует
elseif( ! $news_found ) {
header("HTTP/1.0 301 Moved Permanently");
header("Location: {$config['http_home_url']}");
die("Redirect");
}
// 301 редирект на главную, если новость не найдена/не существует
14) Добавляем тег rel=”canonical” для страниц просмотра полной новости
Добавляем тег canonical
Открываем файл /engine/modules/show.full.php и находим:
} 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 = "";
}
Ниже вставляем:
$full_canonical = $full_link;
Далее открываем файл /engine/engine.php и находим:
if ($config['allow_rss']) $metatags .=